操作系统: Debian
目前我只有 1 个网络连接设置 (br0)。
我想将第二个网络连接 (eth3) 连接到单独的网络/网关。
一切都应该继续通过 eth0 发送,除非我专门选择通过 eth1 发送请求(例如指定 eth1 的 CURL 请求)
请注意,eth2 用作许多 KVM 虚拟机的 br0 网桥。
更新:我向接口文件添加了一些路由和更新:这是我当前的接口文件。
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.1.121
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth2
bridge_stp on
bridge_fd 0
bridge_maxwait 0
post-up ip route add 192.168.1.0/24 dev br0 metric 1
post-up route add default gw 192.168.1.1 metric 1
pre-down route del default gw 192.168.1.1
auto eth3
iface eth3 inet static
address 192.168.0.121
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 191.168.0.1
post-up ip route add 192.168.0.0/24 dev eth3 metric 2
post-up route add default gw 192.168.0.1 metric 2
pre-down route del default gw 192.168.0.1
但是,当我尝试重新启动网络服务时,会出现此错误(在尝试使用时也会出现此错误)ifup eth3
RTNETLINK 回答: 文件存在
无法启动 eth3
答案1
如果您知道将通过哪些 IP 地址连接,eth1
那么您应该设置路由。
您的默认网关将保留,eth0
因此默认情况下所有流量都会流向那里,但是,发送到特定网络或 IP 地址的任何流量都将通过eth1
。
使用该包检查当前的路由表iproute2
:
$ ip route list
default via gateway 192.168.1.1 dev eth0
gateway 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.121
使用网关 from 设置静态路由eth1
到达 to unix.stackexchange.com
:
ip 路由通过 (remote_connecting_gatway) dev (local_outgoing_interface) 添加 (remote_network)
$ ip route add 198.252.206.16/32 via 192.168.0.1 dev eth1
查看新的路由表:
$ ip route list
default via gateway 192.168.1.1 dev eth0
gateway 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.121
198.252.206.16 via 192.168.0.1 dev eth1
测试新路线:
$ ip route get 198.252.206.16
198.252.206.16 via 192.168.0.1 dev eth1 src 192.168.0.121
cache
删除路线:
$ ip route del 198.252.206.16/32 via 192.168.0.1 dev eth1
通过重新启动使此静态路由保持不变:
将以下条目添加到/etc/network/interfaces
文件中:
auto eth1
iface eth1 inet static
address 192.168.0.121
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
post-up ip route add 198.252.206.16/32 via 192.168.0.1 dev eth1
pre-down ip route del 198.252.206.16/32 via 192.168.0.1 dev eth1
注意post-up
和pre-down entries
。
重新启动网络:
$ /etc/init.d/networking restart
笔记:
如果你这样做不是知道您将前往的 IP 地址,那么您需要添加一个额外的路由表来包含第二个默认路由。
这在以下内容中有详细介绍一个系统上有两个默认网关。
参考
答案2
当您有两个默认网关时,您可以在 eth1 上添加更高的度量值,以避免该接口上指定流量以外的流量。我想这篇文章已经给你答案了。 在 Debian 接口文件中添加两个默认网关