无法绑定到Linux上的特定网络接口

时间:2018-04-02 06:52:56

标签: linux curl networking

===背景资料===
我的Debian 9服务器上有两个有线以太网接口,它们都可以通过不同的ISP访问互联网。
enp11s0 192.168.0.9
eth0 192.168.2.2
iptables -Liptables -L -t nat为空,接受所有传入和传出。这是我的route
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 enp11s0 116.xxx.xxx.0 192.168.2.1 255.255.255.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp11s0 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 ===背景结束===


我想让大多数流量通过enp11s0,因为eth0是计量的,但很少有连接通过eth0(例如116.xxx.xxx.xxx)。这有效,但是当我尝试让程序绑定到特定的界面时,它变得很奇怪
curl icanhazip.com --interface enp11s0提供了我期望的IP地址,但是curl icanhazip.com --interface eth0不起作用。这里带-v标志的是输出:
* Rebuilt URL to: icanhazip.com/ * Trying 144.202.71.30... * TCP_NODELAY set * Local Interface eth0 is ip 192.168.2.2 using address family 2 * Local port: 0 * Trying 2001:19f0:6401:18fc:2709:e14e:21cd:4e41... * TCP_NODELAY set * Trying 2001:19f0:5c01:1aed:dcdf:7e47:e74b:1197... * TCP_NODELAY set 它只是永远重复。我添加了-4标记并且Trying 2001:19f0:6401:18fc:2709:e14e:21cd:4e41消失了,但它仍然不起作用。 如何修复eth0?提前致谢!

1 个答案:

答案 0 :(得分:0)

请参阅此问题并回答here,以获得有关如何使用curl尝试的内容不是很好的解释。

您正在通过链接eth0上的服务器默认网关从enp11s0卷曲外部地址。检查服务器上是否启用了转发。

您需要设置基于策略的路由。根据您要发送的流量eth0,请查看iproute2ip rule

/etc/iproute2/rt_tables