与多个Nic联网


16

我有一个带有4个网络适配器的Ubuntu 12.04服务器。我需要将每个NIC用于单独的功能。这是我的设置的描述:

etho = 10.234.0.2 netmask = 255.255.255.252 gw = 10.234.0.1 This is on vlan 234
eth1 = 10.235.0.2 netmask = 255.255.255.252 gw = 10.235.0.1 This is on vlan 235
eth2 = 10.236.0.2 netmask = 255.255.255.252 gw = 10.236.0.1 This is on vlan 236
eth3 = 10.237.0.2 netmask = 255.255.255.252 gw = 10.237.0.1 This is on vlan 237

我需要能够将流量定向到各个Web服务的各个IP地址或从各个IP地址引导。即10.235.0.2是一个网站,10.236.0.2是一个不同的站点,而10.237.0.2是另一个站点。第一个IP用于管理服务器。

我认为这是一个路由问题,但是对于Linux来说我还是很陌生,因此我对路由功能的来龙去脉没有一个全面的了解。

这是我/etc/network/interfaces文件中的内容:

auto lo
iface lo inet loopback

# WWW Management
auto eth0
iface eth0 inet static
address 10.234.0.2
netmask 255.255.255.252
gateway 10.234.0.1
nameseervers 10.230.1.103, 10.230.70.70

# WWW
auto eth1
iface eth1 inet static
address 10.235.0.2
netmask 255.255.255.252
gateway 10.235.0.1

# WTB
#auto eth2
#iface eth2 inet static
#address 10.236.0.2
#netmask 255.255.255.252
#gateway 10.236.0.1

# Moodle
#auto eth3
#iface eth3 inet static
#address 10.237.0.2
#netmask 255.255.255.252
#gateway 10.237.0.1

我已禁用最后两个网络只是为了减轻混乱。

在此先感谢您提供的所有帮助以及评论和建议。

Answers:


15

完成仅eth0的常规配置后,我回来了,并为eth1添加了config。仅需eth0,路由表为:

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

但是一旦启动了eth1,默认路由语句的顺序就确定了始终使用哪个接口。如下所示,碰巧选择了到192.168.1.65网关的eth1路由。

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.1.65 dev eth1 metric 100
default via 192.168.0.97 dev eth0 metric 100

只有一个网关声明

第一个问题可能是额外的“通过192.168.1.65”默认路由。如果/ etc / network / interfaces中的eth1定义具有“ gateway 192.168.1.65”语句,则会出现在此处。因此,删除所有多余的网关语句,并弹跳接口:

# ifdown eth1
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

设置新的路由表

创建一个新的单独的路由表,其中包含适合于所有从eth1流出的流量的默认路由。这里的表号并不重要;101根本不是主路由表。使用/ etc / network / interfaces中eth1配置上的“ post-up”命令来执行此操作。在eth1上仅添加一个帖子;不要将其添加到任何eth1:子接口中。

post-up ip route add default via 192.168.1.65 dev eth1 table 101

反弹eth1。主路由表未更改,如果eth1启用,表101将包含via 192.168.1.65默认路由。

# ifdown eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101   (ie, table is empty, no output)
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101
default via 192.168.1.65 dev eth1

新的路由规则

添加路由规则以使用表101为应从eth1发出的数据包选择默认路由。

# ip rule add from 192.168.1.64/27 lookup 101
# ip rule show
0:     from all lookup local
32765: from 192.168.1.64/27 lookup 101
32766: from all lookup main
32767: from all lookup default

将规则也添加到/etc/network/interfaces文件中:

post-up ip rule add from 192.168.1.64/27 lookup 101

现在,请确保添加清除以在接口出现故障时删除路由和规则:

post-down ip rule del from 192.168.1.64/27
post-down ip route del default via 192.168.1.65 table 101

[编辑为Ubuntu 16.04+]象表明这里和测试,我已经从这个帮助制作,IP路径2已经改变了他的命令的结构。为了使工作,你将不得不适应只是有点如何的顺序做man ip

up ip route add default table 101 dev eth1 via 192.168.1.65
up ip rule add from 192.168.1.64/27 lookup 101
down ip rule del from 192.168.1.64/27
down ip route del default table 101 via 192.168.1.65

否则,您将在ifdown之后执行– ifup命令,并显示一条错误消息@ifdown命令(表示外围设备配置不正确的标准消息),以及@ifup表101中没有路由。


很好,但是我不喜欢使用rc.local ..寻找更优雅的最后一步..
drAlberT

我认为它是经过编辑的:) ..
drAlberT 2014年

实际上有一个/ etc / interfaces文件,还是错字?
user100464 2014年

@ user100464/etc/network/interfaces
Zenexer 2014年

答案中有对前者的引用。我无法编辑。
user100464
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.