linux 网络端口有几个,Linux中同一子网上有两个网络接口和两个IP地址

我最近遇到了一种情况,我需要在分配给一个

Linux主机的同一子网上使用两个IP地址,以便我们可以运行两个SSL / TLS站点.我的第一种方法是使用IP别名,例如使用eth0:0,eth0:1等,但是我们的网络管理员有一些相当严格的设置,以确保安全性压扁了这个想法:

>他们使用DHCP侦听,通常不允许静态IP地址.静态寻址是通过使用静态DHCP条目完成的,因此相同的MAC地址始终获得相同的IP分配.如果你问这个功能并且你有理由可以禁用每个switchport这个功能(谢天谢地,我和网络人员有很好的关系,这并不难).

>在交换机端口上禁用DHCP侦听时,他们必须在交换机上放置一条规则,即允许MAC地址X具有IP地址Y.不幸的是,这也有说明MAC地址X只允许使用的副作用IP地址为Y. IP别名要求为MAC地址X分配两个IP地址,因此这不起作用.

在交换机配置上可能存在解决这些问题的方法,但是为了保持与网络管理员的良好关系,我试图找到另一种方式.拥有两个网络接口似乎是下一个合乎逻辑的步骤.值得庆幸的是,这个Linux系统是一个虚拟机,所以我能够轻松添加第二个网络接口(无需重启,我可能会添加 – 非常酷).稍后几次击键我有两个网络接口启动并运行,并从DHCP中提取IP地址.

但问题出现了:网络管理员可以看到(在交换机上)两个接口的ARP条目,但只有我提出的第一个网络接口会响应ping或任何类型的TCP或UDP流量.

经过大量的挖掘和挖掘,这就是我想到的.它看起来很有效,但似乎它似乎也很简单.还有其他想法吗?

步骤1:在所有接口上启用ARP过滤:

# sysctl -w net.ipv4.conf.all.arp_filter=1

# echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/sysctl.conf

从Linux内核文档中的文件networking / ip-sysctl.txt:

arp_filter - BOOLEAN

1 - Allows you to have multiple network interfaces on the same

subnet,and have the ARPs for each interface be answered

based on whether or not the kernel would route a packet from

the ARP'd IP out that interface (therefore you must use source

based routing for this to work). In other words it allows control

of which cards (usually 1) will respond to an arp request.

0 - (default) The kernel can respond to arp requests with addresses

from other interfaces. This may seem wrong but it usually makes

sense,because it increases the chance of successful communication.

IP addresses are owned by the complete host on Linux,not by

particular interfaces. Only for more complex setups like load-

balancing,does this behavIoUr cause problems.

arp_filter for the interface will be enabled if at least one of

conf/{all,interface}/arp_filter is set to TRUE,it will be disabled otherwise

第2步:实现基于源的路由

假设子网为10.0.0.0/24,网关为10.0.0.1,eth0的IP地址为10.0.0.100,eth1的IP地址为10.0.0.101.

在/ etc / iproute2 / rt_tables中定义两个名为eth0和eth1的新路由表:

... top of file omitted ...

1 eth0

2 eth1

定义这两个表的路由:

# ip route add default via 10.0.0.1 table eth0

# ip route add default via 10.0.0.1 table eth1

# ip route add 10.0.0.0/24 dev eth0 src 10.0.0.100 table eth0

# ip route add 10.0.0.0/24 dev eth1 src 10.0.0.101 table eth1

定义何时使用新路由表的规则:

# ip rule add from 10.0.0.100 table eth0

# ip rule add from 10.0.0.101 table eth1

主路由表已经由DHCP处理了(在这种情况下它甚至不清楚它是非常必要的),但它基本上等同于:

# ip route add default via 10.0.0.1 dev eth0

# ip route add 130.127.48.0/23 dev eth0 src 10.0.0.100

# ip route add 130.127.48.0/23 dev eth1 src 10.0.0.101

瞧!一切似乎都很好.将ping发送到两个IP地址都可以正常工作.将ping从此系统发送到其他系统并强制ping使用特定接口工作正常(ping -I eth0 10.0.0.1,ping -I eth1 10.0.0.1).最重要的是,进出IP地址的所有TCP和UDP流量都按预期工作.

所以,我的问题是:有更好的方法吗?对于一个看似简单的问题,这看起来似乎很多.

更新:上述解决方案最终不完整.如果流量停留在同一子网上,事情就可以正常工作,但使用第二个接口与其他子网的通信将无法正常工作.我没有挖掘更大的漏洞,而是最终与网络管理员交谈并让他们为一个接口允许多个IP地址并使用IP别名(例如eth0和eth0:0).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值