我有 2 个接口。直接以太网连接为 eth0,4g 加密狗为 eth1。
# IP 地址显示
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether e4:5f:01:ad:57:03 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.11/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::8cce:6651:6412:c9e4/64 scope link
valid_lft forever preferred_lft forever
14: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 0c:5b:8f:27:9a:64 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic noprefixroute eth1
valid_lft 86387sec preferred_lft 75587sec
inet6 fe80::e34a:4c22:2dbc:6444/64 scope link
valid_lft forever preferred_lft forever
# IP 路由显示
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.11 metric 202
default via 192.168.1.211 dev eth1 proto dhcp src 192.168.1.100 metric 214
192.168.0.0/24 dev eth0 proto dhcp scope link src 192.168.0.11 metric 202
192.168.1.0/24 dev eth1 proto dhcp scope link src 192.168.1.100 metric 214
我的目标是使用 3proxy 将加密狗用作代理服务器,但问题是它不起作用。我使用 curl 测试了加密狗,结果如下。
什么在起作用?
curl ifconfig.me --interface eth0
curl ifconfig.me --interface eth1
curl ifconfig.me --interface 192.168.0.11
什么不起作用?(我希望使用此界面的方式)
curl ifconfig.me --interface 192.168.1.100
如何使我的 eth1 接口使用其本地 IP 地址工作?
答案1
问题在于您同时拥有两个默认网关。请查看您的ip route
命令响应。除非需要定义特殊条件时使用特殊的 iproute2 设置和每个接口的单独路由表,否则此设置永远无法正常工作。
删除第一个接口的默认网关,然后很可能就会eth1
开始工作。反之亦然。
您可以同时使用两个接口,但系统中只能有一个默认网关,并且必须有一个路由表,其中必须准确描述哪些远程网络应通过该eth0
接口路由,哪些远程网络应通过eth1
。即便如此,在某些情况下,也存在所谓的非对称路由的风险。
编辑
这是对阿维纳什·萨我的回答之后的评论。
您没有详细说明要通过哪个接口访问哪些网络,因此我的设置示例不够具体。
示例 1
删除接口的默认网关的命令eth0
:
sudo ip route del default via 192.168.0.1 dev eth0
示例 2
删除接口的默认网关的命令eth1
(只能删除一条默认路由,不能同时删除两条):
sudo ip route del default via 192.168.1.211 dev eth1
示例 3
10.5.1.0/24
使用eth1
接口和路由器地址192.168.1.211
(即下一跳地址)为网络添加新路由的命令:
sudo ip route add 10.5.1.0/24 via 192.168.1.211 dev eth1
重要信息
使用该命令进行的所有路由更改都ip
仅在 RAM 中进行,并且仅在系统重新启动、接口重新启动或接口断开连接并重新连接之前才适用。这也解释了为什么通过断开并重新连接 4G 加密狗 ( ) 可以恢复问题eth1
。
永久解决方案(仅使用一个)
- 使用 GUI 取消设置使用 DHCP 自动添加的默认网关。转到设置 --> 网络 --> 使用 eth0 连接 --> IPv4 设置。然后关闭自动路由。最后添加新路由(填写表中的行)。
- 创建包含所需命令的小脚本
ip ...
并将其设置为启动后执行。
笔记 使用 iproute2 创建具有条件路由规则的附加路由表也是可能的,但这超出了本答案的范围。