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