我有两个接口:eth0 和 eth1。它们都有静态地址。它们连接到不同的路由器,并且两个路由器都可以访问互联网。我使用本教程来配置链接:https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System。
问题是我可以访问两个子网,但我只通过 eth0 连接到互联网。当我尝试使用 eht1 链路(例如)进行 ping 时,我得到了Destination Host Unreachable
我应该如何配置这些链接才能通过它们两个访问互联网。
路线-n:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
当我设置10.10.0.1
为默认网关时,我仅通过 eth1 连接到互联网。
在 /etc/网络/接口:
auto eth0
iface eth0 inet static
address 192.168.1.202
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 10.10.0.10
netmask 255.255.255.0
post-up ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table rt2
post-up ip route add default via 10.10.0.1 dev eth1 table rt2
post-up ip rule add from 10.10.0.10/32 table rt2
post-up ip rule add to 10.10.0.10/32 table rt2
答案1
目前系统只能有一个网关。你唯一能做的就是强制某些流量(例如 ssh、ftp 等)或特定网络通过不同的接口进行传输
通过特定接口将流量路由到特定端口
例子:
这里我们将其port 4444
作为路由服务。使用mangle
iptables表来修改4444
数据包。
sudo iptables -t mangle -A OUTPUT -p tcp –dport 4444 -j MARK –set-mark 0×1
我们将所有目的地的数据包标记port 4444
为“0×1”。
要从中删除该条目,iptables
我们可以使用-D
而不是-A
。
/etc/iproute2/rt_table
接下来,只需输入一个条目即可创建一个新的 IP 路由表
100 4444table
为数据包编写规则4444
。
ip rule add fwmark 0×1 lookup 4444table
在新表中添加路由4444table
。这里我们将使用“192.168.1.1”作为网关4444
。
我们从主表复制除默认网关条目之外的所有条目。
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 4444table $ROUTE; done
将数据包的默认网关条目添加4444
到表中4444table
sudo ip route add default via 192.168.1.1 table 4444table
使用ip route show table 4444table
显示 所有路线4444table
。
或者按目的地路由
目标 IP132.45.65.60
再次使用 mangle 表iptables
修改数据包132.45.65.60
sudo iptables -t mangle -A OUTPUT -d 132.45.65.60 -j MARK -set-mark 0×1
我们将所有到 IP 的路由器数据包标记132.45.65.60
为“0×1”。
现在保存并重新启动iptables
。
service iptables save
service iptables restart
/etc/iproute2/rt_tables
接下来,只需输入一个条目即可创建一个新的 IP 路由表
100 132table
为发往目标 IP 的数据包编写规则132.45.65.60
ip rule add fwmark 0×1 lookup 132table
在新表中添加路由132table
。这里我们将使用192.168.1.1
。所有其他流量将通过默认网关。
从主表复制除默认网关条目之外的所有条目。
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 132table $ROUTE; done
将 132.45.65.60 数据包的默认网关条目添加到表 132table
sudo ip route add default via 192.168.1.1 table 132table
编辑1
如果你必须设置没有度量的接口,metric
则 akametric
具有“优先级”
auto eth0
iface eth0 inet static
address 192.168.1.202
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 10.10.0.10
netmask 255.255.255.0
gateway 10.10.0.1
metric 800
使用此设置(如果可用),默认网关将是192.168.1.1
,流量将通过eth0
。当您执行ifdown eth0
或断开电缆时eth0
,次优选择将是网关10.10.0.1
,metric 800
流量将通过eth1
。当您连接电缆或ifup eth0
默认网关时,将再次出现192.168.1.1
。
就像我说的。
系统不能同时有两个默认网关。如果有网络则无法工作。