问题描述
我有两个不同的网络接口,连接到2个网络。一个是eth0,另一个是wlan0。如何告诉软件仅使用特定接口?
基本上我希望Firefox使用eth0,因为它是大学局域网,我必须去内联网站点,另一个是打开互联网的wifi网络,我想将它绑定到Chrome。
我正在工作,我需要使用内联网。所以eth0是我的选择,但eth0是一个没有互联网接入的内部网(显然)。由于我想要上网,我已经连接到wlan0(大学wifi为学生)。
问题是如果我有两个连接有时浏览器使用eth0查找www.stackoverflow.com。所以我想指定一个浏览器只使用特定的界面。
最佳解决方法
您无法将客户端软件绑定到特定的网络接口,但您可以告诉内核您只想为一些IP地址使用一个网络接口而另一个用于其他所有IP地址。这称为”routing”,可以使用命令/sbin/route
和/sbin/ip
进行配置。
如果我正确阅读了您的问题,您希望使用接口eth0
连接到Intranet IP地址,并使用接口wlan0
连接到Internet。
如果运行命令ip route list
,您应该看到如下输出(数字将不同,并且您还可以包含更多行):
$ ip route list
10.60.44.0/25 dev eth0 proto kernel scope link src 10.60.44.39 metric 1
192.168.80.0/21 dev wlan0 proto kernel scope link src 192.168.84.122 metric 2
[...]
default via 10.60.44.1 dev eth0 proto static
前两行告诉您连接到接口eth0
和wlan0
的网络:指向这些网络上的计算机的网络流量将通过相应的接口直接发送给它们。
最后一行告诉您”default route”是什么:如果您的计算机想要与未连接的网络上的计算机(例如,stackoverflow.com服务器)通信,它将通过eth0
路由流量,通过主机10.60.44.1
进行重新分析(称为”default gateway”)。
因此,要通过wlan0
路由Internet流量,您应该确保ip route list
输出中的最后一行读取如下内容:
default via A.B.C.D dev wlan0 proto static
其中A.B.C.D
是无线LAN上网关的IP地址。如果输出不包含“dev wlan0”,则可以使用以下命令更改它:
sudo ip route change to default dev wlan0 via A.B.C.D
您可以通过两种方式找到适用于wlan0
的正确A.B.C.D
:
-
查看目录
/var/lib/dhcp3/
:您应该找到一些dhclient-...-wlan0.lease
文件。打开最近的一行并搜索其中包含字符串option router
的行:该行的其余部分将告诉您IP地址A.B.C.D
。 -
咨询您当地的网络管理员。 (无论如何,这可能是最好的事情。)
使用此配置,您应该能够:
-
通过
wlan0
浏览Internet -
通过
eth0
浏览您的Intranet,前提是它位于单个网络上。
如果您的Intranet跨越多个网络,那么您将需要为它们添加路由 – 这绝对需要您与本地网络管理员进行交互。 🙂