前排提醒
这个机器的情况是一个国内 BGP 网卡,一个香港网卡,一个 IX 网卡。这里只讨论了处理国内 BGP <-> 香港的情况。
前置操作
首先多网卡修复需要有这个。
<网关地址> dev <接口名字> proto kernel metric 256 pref medium
<id>: from <接口地址> lookup <table id>
ip route add default via <网关地址> dev <接口名字> table <路由表 id>
ip rule add from <接口地址> table <路由表 id>
修复方法
如果你是用的 realm 转发,你有几种选择:
-
直接在 realm 监听你的网卡入口 IP。
-
realm 监听 [::] 这个时候 realm 会用香港网卡上的 IP 从香港网卡上发数据包,数据包能到你的宽带上,但是软件测试是不通的,因为去程数据包的目标IP和回程数据包的源 IP 不一样。
ip -6 route add 2408:8000::/20 via 入口网卡的网关 dev 入口网卡名字 src 入口网卡的IP
ip -6 route add 2409:8000::/20 via 入口网卡的网关 dev 入口网卡名字 src 入口网卡的IP
ip -6 route add 240e::/18 via 入口网卡的网关 dev 入口网卡名字 src 入口网卡的IP
在路由表里加上这三条之后,realm 就可以知道用哪个指定的网卡出去了。
- 修改
nftables
#!/usr/sbin/nft -f
table inet allow-udp
delete table inet allow-udp
table inet allow-udp {
chain out {
type route hook output priority 0; policy accept;
ip6 daddr {2408:8000::/20,2409:8000::/20,240e::/18} udp sport <realm 的监听端口> ip6 saddr set <接口地址>;
}
}
这会把源 IP 给改成入口网卡的 IP,然后会重新查路由表,路由表里有一个 from <入口 IP> 就会从入口网卡上发出去了。
话题
评论
评论加载中…