FreeBSD 的主副路由表(FIB, 多路由表)值得好好利用,指定应用走特定虚拟网卡十分方便 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnbatch
V2EX    宽带症候群

FreeBSD 的主副路由表(FIB, 多路由表)值得好好利用,指定应用走特定虚拟网卡十分方便

  •  
  •   cnbatch 2024-07-07 21:41:42 +08:00 2151 次点击
    这是一个创建于 529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简单来说,就是选定的应用走特定的路由表,达到指定出口的效果,连防火墙规则都不用配置。简单到只需要几个字符的简短命令即可做到。

    比如,我可以在一台 FreeBSD 机器连接上 Cloudflare Warp ,连接时“改道”至副路由表(假设1 号表)。连接完成后,WireGuard 会在副路由表中把默认路由指向 Cloudflare Warp 的 IP 。这样一来,其它程序都会不会受到影响,继续按照主路由表(即 0 号表)的规则通讯。

    如何使指定程序走 Cloudflare Warp 通道呢?我要 ping 命令走该通道,只需前面加一条 setfib 命令即可:

    setfib 1 ping -c 10 8.8.8.8 

    就这么简单。现在 ping 程序就从 Cloudflare Warp 通道出去了。各种联网程序都可以这样做。

    对于开机自启的服务程序,也可以使它们走副路由表。只需要编辑 rc.conf ,给对应程序添加_fib=1后缀即可。就像这样:

    somesocks_enable="YES" somesocks_fib=1 

    WireGuard 除外,需要编辑 wg*.conf 加一行 Table = 1 才可以。


    注意:需要先启用 FIB 。

    默认情况下,FreeBSD 只会提供单个路由表,想要启用副路由表就必须自行启用。步骤很简单:

    打开 /boot/loader.conf ,加入一行:

    net.fibs=2 

    重启系统。

    现在,0 号表就是默认路由表,我称之为主路由表。其它编号的就是副路由表。

    想要多少个路由表,数值就写多少。只要有需要,net.fibs=100都可以。


    我利用这个特点在 VPS 上连接了 Cloudflare Warp ,将*ray/ss 的流量改成走 Cloudflare Warp 通道,而自己的中转程序继续走默认路由表,达到入口 IP 和出口 IP 都不同的效果:
    利用 FreeBSD 主副路由表(FIB)在服务器使用 Cloudflare Warp

    在这个基础上可以延伸出更灵活的做法,比如同时连上多个 wireguard 隧道,多个 ss 分别走对应的通道,每个 ss 监听不同的端口,中转程序连接不同的端口即可实现动态切换出口位置。比起单路由表+策略路由,这样做的灵活度高了很多。

    PS: 中转程序不一定必须是我链接里的那个,也可以是其它转发程序

    5 条回复    2024-07-11 20:32:44 +08:00
    cyaki
        1
    cyaki  
       2024-07-07 21:47:01 +08:00 via Android
    感谢分享
    YGBlvcAK
        2
    YGBlvcAK  
       2024-07-08 09:07:37 +08:00
    作为网关时间,如果指定微信走特定出口呢?
    cnbatch
        3
    cnbatch  
    OP
       2024-07-08 12:51:34 +08:00
    @YGBlvcAK 这种情况只能继续使用专门路由条目或者防火墙规则。setfib 只对 FreeBSD 机器里面运行的程序有效。
    cest
        4
    cest  
       2024-07-08 23:16:20 +08:00
    用 linux 微信也许可以用 cgroup
    win32 就非得用第三方了,然后可能被微信 ban
    infinet
        5
    infinet  
       2024-07-11 20:32:44 +08:00   1
    dnsmasq 的--ipset 选项在 Linux 下把某个域名解析的 IP 加到 ipset ,它的官方文档没提到的是这个功能在 freebsd 下也能用,不过是加到 pf table ,和 setfib 合用实现按域名分流。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5218 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 06:43 PVG 14:43 LAX 22:43 JFK 01:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86