如何在 Linux 中设置首选网络接口

如何在 Linux 中设置首选网络接口

我的网络设置如下:

现有网络架构

简单来说:我有一台机器(Calcium,运行 Arch Linux),它有两个网络接口。接口 eth0 连接到路由器,是千兆的。接口 eth1 通过 10 兆直接连接到大学网络。路由器的上行链路也连接到大学网络,也是 10 兆的。

目前(我相信)Calcium 上的所有流量都通过 eth0,通过路由器,无论是内部还是外部。(我如何确认这一点?)

理想情况下,发往内部网络 (192.168.10.0/24) 的流量将通过 eth0 传输到路由器,然后前往任何地方。所有其他流量都应通过 eth1。

答案1

您的网络路由表将决定数据包的路由方式。您可以添加其他路由或更改默认网关来影响路由。

如果您需要更多帮助,请提供您的路由表。

显示路由表:

/sbin/route -n

删除默认 gw:

/sbin/route del default gw $IP

要添加默认 gw:

/sbin/route add default gw $IP

有关更多详细信息,请查看手册页。还有其他方法可以操作和显示路由表。

netstat -r进行显示和ip进一步操作。

答案2

以下是完整的答案,希望它能帮助到其他人:

要使目的地为 192.168.10.* 的数据包使用 eth0,并且所有其他数据包使用 eth1:

1)查看当前路由表

ip route list

一个条目将类似于“默认通过 192.168.1.1”,其中 192.168.1.1 是您的路由器(又称网关)IP 地址。记住 eth0 和 eth1 的网关,因为我们稍后会需要它们。

2)删除默认路由。(警告:这将导致您离线。)

ip route del default

3) 添加新的默认路由(这将使您重新上线)。将下面的 192.168.1.1 替换为上面的网关 IP 地址。

ip route add default via 192.168.1.1 dev eth1

4) 添加将由 eth0 提供服务的特定路由。更具体的路由将自动优先于不太具体的路由。

ip route add 192.168.10.0/24 via 192.168.1.1 dev eth0

最后,你可以询问 Linux 将使用哪个接口将数据包发送到特定的 IP 地址:

ip route get 8.8.8.8

如果配置成功,发往 8.8.8.8(Google 服务器)的数据包将使用 eth1。发往您本地网络上任何 IP 的数据包:

ip route get 192.168.10.7

将使用 eth0。

相关内容