У меня есть сервер с двумя сетевыми картами, имеющими IP-адрес в одной подсети, вот так выглядит мой / etc / network / interfaces:
auto eth0
iface eth0 inet static
address 192.168.2.155
gateway 192.168.2.51
netmask 255.255.255.0
dns-nameservers 192.168.2.180
dns-domain exaple.com
auto eth1
iface eth1 inet static
address 192.168.2.156
netmask 255.255.255.0
Итак, идея в том, что eth0 с ip 192.168 .2.155 - это интерфейс управления с возможностью подключения к Интернету. Сетевой адаптер eth1 с IP 192.168.2.156 будет использоваться для связи с внутренними устройствами.
Теперь, когда я настраиваю это с системой по умолчанию и пытаюсь пропинговать eth1 на 192.168.2.156 с другими устройствами в локальной сети, эти пакеты не принимаются eth1, как можно было ожидать, но с помощью eth0 я проверил это с помощью работает tcpdump -i eth1 icmp
и не видит входящих пакетов. Клиент, выполняющий эхо-запрос, получает ответ, но с неправильного адреса NIC / MAC.
Теперь я обнаружил, что это явление называется «поток ARP», и даже хорошие статьи, описывающие, как его решить, проблема в том, что ни одно из этих решений, похоже, не работает для меня. Эта статья , кажется, дает лучшее объяснение и исправляет, выполняя следующие команды:
sudo sysctl -w net.ipv4.conf.all.arp_announce=1
sudo sysctl -w net.ipv4.conf.all.arp_ignore=2
sudo sysctl -w net.ipv4.conf.all.rp_filter=0
Это, кажется, что-то делает, в том, что я начинаю получать пакеты на eth1, но это полностью отключает любую связь по eth0 и IP-адресу 192.168.2.155.
Какие-нибудь другие идеи относительно того, что я мог бы попробовать?
На основе это Изменение статьи в:
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_filter=1
На основе это сообщение и это сообщение Вы пробовали?:
net.ipv4.conf.default.rp_filter = 2
Вы фиксировали его?
РЕДАКТИРОВАНИЕ: Я имею в виду... все:
sudo sysctl -w net.ipv4.conf.all.arp_announce=1
sudo sysctl -w net.ipv4.conf.all.arp_ignore=2
sudo sysctl -w net.ipv4.conf.all.rp_filter=2