我有两个不同的网络接口,连接到 2 个网络。一个是eth0,另一个是wlan0。我如何告诉软件只使用特定的界面?
基本上我希望 Firefox 使用 eth0,因为它是大学局域网,我必须去 Intranet 站点,另一个是对互联网开放的 wifi 网络,我想将它绑定到 Chrome。
我正在工作,我需要使用 Intranet。所以 eth0 是我的选择,但 eth0 是一个无法访问 Internet 的 Intranet(显然)。因为我想上网,所以我连接到 wlan0(学生的大学 wifi)。
问题是如果我都连接了,有时浏览器会使用 eth0 查找 www.stackoverflow.com。所以我想指定一个浏览器只使用一个特定的界面。
您不能将客户端软件绑定到特定的网络接口,但您可以告诉内核您只想将一个网络接口用于某些 IP 地址,而将另一个网络接口用于其他所有地址。这称为“路由”,可以使用命令
/sbin/route
和/sbin/ip
.如果我正确阅读了您的问题,您希望使用 interface 连接到 Intranet IP 地址
eth0
,并使用 interface 连接到 Internetwlan0
。如果您运行命令
ip route list
,您应该会看到如下输出(数字会有所不同,并且您可以在其中包含更多行):前两行告诉您连接到接口的网络,
eth0
并且wlan0
:定向到这些网络上的计算机的网络流量将通过相应的接口直接发送给它们。最后一行告诉您“默认路由”是什么:如果您的计算机想要与未连接到网络(例如 stackoverflow.com 服务器)上的计算机通信,它将通过 路由流量
eth0
,实现通过主机10.60.44.1
(称为“默认网关”)。因此,要通过路由 Internet 流量,
wlan0
您应该确保ip route list
输出中的最后一行内容如下:哪里
A.B.C.D
是无线 LAN 上网关的 IP 地址。如果输出不包含“dev wlan0”,您可以使用以下命令进行更改:您可以通过两种方式找出正确
A.B.C.D
的:wlan0
查看目录
/var/lib/dhcp3/
:您应该找到一些dhclient-...-wlan0.lease
文件。打开最近的一个并搜索其中包含字符串的行option router
:该行的其余部分告诉您 IP 地址A.B.C.D
。询问您的本地网络管理员。(无论如何,这可能是最好的事情。)
使用此配置,您应该能够:
wlan0
eth0
,前提是它位于单个网络上。如果您的 Intranet 跨越多个网络,那么您将需要为它们添加路由 - 这绝对需要您与本地网络管理员进行交互。:-)
“ip netns”创建网络命名空间。然后,您可以创建虚拟接口(ip link add...veth)并将它们与命名空间相关联。
例如,可以将命名空间配置为使用不同的路由(因此使用不同的接口)
然后您可以在该命名空间中运行命令,这将使用创建的命名空间..“ip netns exec NAME cmd...”
来源: http: //manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html