Ubuntu Linux - два интерфейса, одна подсеть, разные vlan - проблемы с MAC/ARP

Я пытаюсь настроить сервер, который должен иметь интерфейсы в той же IP-подсети, но в разных VLAN:

eth1.102  Link encap:Ethernet  HWaddr 00:50:56:b1:00:0f  
          inet addr:10.1.1.6   Bcast:10.1.1.255  Mask:255.255.255.0

eth1.103  Link encap:Ethernet  HWaddr 00:50:56:b1:00:0f  
          inet addr:10.1.1.12  Bcast:10.1.1.255  Mask:255.255.255.0

Проблема, которую я вижу, заключается в том, что когда ARP-запрос поступает с устройства в одной из подсетей, сервер отвечает на ARP только на одном интерфейсе и, по-видимому, игнорирует ARP на другом интерфейсе:

1-й интерфейс:

# ping -I eth1.102 10.1.1.1
PING 10.1.1.1 (10.1.1.1) from 10.1.1.6 eth1.102: 56(84) bytes of data.
^C
--- 10.1.1.1 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7008ms

2-й интерфейс:

# ping -I eth1.103 10.1.1.1
PING 10.1.1.1 (10.1.1.1) from 10.1.1.12 eth1.103: 56(84) bytes of data.
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.400 ms
64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.332 ms
^C

(для записи, 10.1.1.1 существует в обеих подсетях в обеих VLAN)

# arp -an
? (10.1.1.1) at 02:00:1a:f2:00:02 [ether] on eth1.103
? (10.1.1.1) at 02:00:72:a3:00:08 [ether] on eth1.102

Даже если я отправляю ping с клиентского устройства на определенный IP-адрес интерфейса сервера, он все равно игнорируется на одном и отвечает на другом.

Ubuntu по умолчанию имеет несколько фильтров arp / spoofing, поэтому я отключил то, что могу найти, т.е.

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

Я видел довольно много вопросов со схожими проблемами, но обычно это происходит с потоком ARP, потому что это тот же сегмент (не разделенный VLAN), и на запрос ARP отвечают оба, что здесь не так. Если я tcpdump на обоих интерфейсах, ARP, который не получает ответа, нигде не виден ни на одном другом интерфейсе (думая в том же духе, что он отвечает на другом интерфейсе) - он просто игнорирует запрос.

Кто-нибудь сталкивался с этим раньше?

РЕДАКТИРОВАТЬ:

Хорошо, чувствую себя немного идиотом, но может помочь другим...

Я был в правильном месте, отключив rp_filter, но, вероятно, потому что он включен по умолчанию с Ubuntu, он применил его ко всем интерфейсам, поэтому, хотя я установил rp_filter=0 для двух перечисленных выше записей, настройки для интерфейса были еще 1, таким образом..

# sysctl -w net.ipv4.conf.eth1/102.rp_filter=0
# sysctl -w net.ipv4.conf.eth1/103.rp_filter=0

... сделал свое дело.

1 ответ

Вам необходимо отключить фильтр обратного пути (rp_filter) для каждого отдельного интерфейса

# sysctl -w net.ipv4.conf.eth1/102.rp_filter=0
# sysctl -w net.ipv4.conf.eth1/103.rp_filter=0
Другие вопросы по тегам