我有一台带有两个 NIC 的 Linux 服务器。我怎么也想不出如何设置默认路由,以便互联网流量从一个 NIC 退出,而不尝试使用另一个 NIC。以下是我认为相关的配置项。
cat /etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
Gateway=172.31.16.129
Address=172.31.16.149/27
DHCP=no
[DHCP]
UseDNS=false
cat /etc/systemd/network/10-eth1.network
[Match]
Name=eth1
[Network]
Gateway=192.168.100.1
Address=192.168.100.2/24
DHCP=no
[DHCP]
UseDNS=false
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.1 0.0.0.0 UG 0 0 0 eth1
0.0.0.0 172.31.16.129 0.0.0.0 UG 0 0 0 eth0
172.31.16.128 0.0.0.0 255.255.255.224 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
我尝试创建一条到 172.xx 网络的特定持久路由并删除 quad 0 路由……但没用。我知道这是一件基本的事情,但我似乎无法弄清楚。
最终,我希望能够使用 172.xxx 通过 SSH 进入盒子,但盒子应该使用 192.168.xxx 才能访问其他所有内容,例如互联网。抱歉,我猜网络方面不太擅长。
提前致谢
答案1
- NIC 的默认网关为该 IP 添加 0.0.0.0/0 路由,又称默认路由。
- 路由器引擎通常(但并非总是)路由到它们能找到的最具体的路由,任何路由都比 0.0.0.0/0 更具体
- 因此,在特定系统上只能有一个 0.0.0.0/0 路由。所有其他路由都必须更加具体,对于您的情况,您可以在要用于除管理之外的所有用途的 NIC 上有一个 0.0.0.0/0 路由,然后为您的其他 NIC 设置一个到例如 172.16.0.0/12 的路由(但前提是您的网络设置如此,并且 172.16.0.0/12 中的所有内容确实位于该 NIC 后面)