将软件绑定到不同的网络接口


37

我有两个不同的网络接口,分别连接到2个网络。一个是eth0,另一个是wlan0。如何告诉软件仅使用特定接口?

基本上,我希望Firefox使用eth0,因为它是大学的lan网络,我必须访问Intranet网站,另一个是向Internet开放的wifi网络,我想将其绑定到Chrome。

我正在工作,需要使用Intranet。所以eth0是我的选择,但eth0是没有互联网访问权限的Intranet(很明显)。因为我要上网,所以我连接到wlan0(学生使用的wifi)。

问题是如果我俩都连接了,有时浏览器会使用eth0查找www.stackoverflow.com。因此,我想分配一个浏览器以仅使用特定的界面。


是不是为您的问题提供了更好的解决方案?我的意思是,与ubuntu.stackexchange.com的连接应使用任何程序中的相同接口。
哈维尔·里维拉,2010年

Answers:


23

您不能将客户端软件绑定到特定的网络接口,但是可以告诉内核,您只想将一个网络接口用于某些IP地址,将另一个网络接口用于其他所有地址。这称为“路由”,可以使用命令/sbin/route和进行配置 /sbin/ip

如果我正确阅读了您的问题,则希望使用interface连接到Intranet IP地址,并使用interface连接到eth0Internet wlan0

如果运行命令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 

前两行告诉你连接到接口的网络eth0wlan0:直接在计算机上这些网络将通过相应的接口直接发送到他们的网络流量。

最后一行告诉您“默认路由”是什么:如果您的计算机想与未连接到网络上的计算机通信(例如stackoverflow.com服务器),它将通过路由eth0,通过主机10.60.44.1(称为“默认网关”)。

因此,要通过路由路由互联网流量,wlan0您应确保ip route list输出的最后一行显示如下内容:

default via A.B.C.D dev wlan0 proto static

A.B.C.D无线局域网上网关的IP地址在哪里。如果输出不包含“ dev wlan0”,则可以使用以下命令进行更改:

sudo ip route change to default dev wlan0 via A.B.C.D

您可以通过两种方法找出正确A.B.C.Dwlan0方法:

  1. 查看目录/var/lib/dhcp3/:您应该找到一些 dhclient-...-wlan0.lease文件。打开最近的一个并搜索其中包含字符串的行option router:其余的行将告诉您IP地址A.B.C.D

  2. 询问您的本地网络管理员。(也许这是最好的选择。)

使用此配置,您应该能够:

  • 通过浏览互联网 wlan0
  • 如果您的Intranet 在单个网络中eth0通过它进行浏览。

如果您的Intranet跨越多个网络,那么您将需要为其添加路由-这绝对是需要您与本地网络管理员进行交互的内容。:-)


出于好奇:如果我想绑定dns(包括子域)而不是IP地址怎么办?
dierre 2010年

1
@dierre简而言之:不能,路由基于IP地址。漫长的故事始于说路由是网络第3层,所以它甚至不知道DNS名称,其名称在网络协议栈中更进一步发生……
Riccardo Murri 2010年

是的,我不是说路由。我是说一般。能做到吗 将DNS绑定到网络接口?
dierre's

@dierre您到底想做什么?使DNS服务器仅在特定的网络接口上答复?还是让DNS客户端(即DNS解析)仅使用选定的接口?
Riccardo Murri 2010年


2

“ ip netns”创建网络名称空间。然后,您可以创建虚拟接口(ip链接添加... veth)并将它们与名称空间关联。

可以将名称空间配置为使用例如不同的路由(因此使用不同的接口)

然后,您可以在该名称空间中运行命令,该命令将使用创建的名称空间。“ ip netns exec NAME cmd ...”

资料来源:http : //manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.