解决这个问题的最佳技术方案是什么?
我在一台 Linux 服务器(我们称之为srv
)中有一个带有两个 NIC 的 /24 段,该服务器在此段中有两个 IP 地址。
- NIC1/eth0//
10.10.1.101
MAC1 - NIC2/eth1//
10.10.1.102
MAC2
该段10.10.1.0 /24
通过一个交换机连接起来,该交换机允许基于 MAC/IP 组合通过它进行访问,IP 由该交换机通过 DHCP 设置(基于单独的 MAC)。
到目前为止,似乎上班 -不知何故。我知道,这种设置从技术上来说不好观察一下每 500 毫秒/var/log/messages
预计发生的碰撞(火星源包)eth1
:
... srv 内核:[1217.220559] martian 源 10.10.1.254 来自 10.10.1.112,位于 dev eth1 上 srv 内核:[1217.220563] ll 标头:ff:ff:ff:ff:ff:ff:00:1e:68:9d:54:05:08:06 srv 内核:[1218.313186] martian 源 10.10.1.255 来自 10.10.1.59,位于 dev eth1 上 srv 内核:[1218.313190] ll 标头:ff:ff:ff:ff:ff:ff:00:13:d4:b7:6f:e9:08:00 ...
每个 NIC 都有其特定的职责(连接到由基于 ip 的 vhosts 设置中的一个 apache2 服务器提供服务的不同网站)。
如何解决这个问题?我知道(而且我确实知道),可以通过通常的调用关闭“火星数据包日志记录” sysctrl -p
:
net.ipv4.conf.all.log_martians = 0 net.ipv4.conf.eth0.log_martians = 0 net.ipv4.conf.eth1.log_martians = 0 net.ipv4.conf.lo.log_martians = 0
但问题应该可以以一种干净的方式解决?还是不能?
问候与感谢
離子
答案1
你真的需要 2 个网卡吗?
解决此问题的一种方法是向其中一个接口添加别名以分配额外的 IP 地址:
sudo /sbin/ifconfig eth0:1 10.10.1.102/24 启动