Краткое изложение проблемы: а ping
из client
не идет в rpi1
, на его вызов ARP не отвечает на srv
.
host0
и tap0
соединены br0
. vpnin
и lan0
это два независимых интерфейса. srv
(Переадресация IP включена, и у меня есть успешный трафик между rpi1
и другие интерфейсы, которые здесь не видны, в том числе один, который является шлюзом в Интернет)подробности: client
успешно пингует себя (10.20.1.2
), 10.20.1.1
, 10.20.1.254
и 10.10.10.254
. При попытке пинговать 10.10.10.11
:
root@client:~# ping 10.10.10.11
PING 10.10.10.11 (10.10.10.11) 56(84) bytes of data.
From 10.20.1.1: icmp_seq=2 Redirect Host(New nexthop: 10.10.10.11)
From 10.20.1.1 icmp_seq=1 Destination Host Unreachable
From 10.20.1.2 icmp_seq=3 Destination Host Unreachable
From 10.20.1.2 icmp_seq=4 Destination Host Unreachable
From 10.20.1.2 icmp_seq=5 Destination Host Unreachable
Обратите внимание на откидную крышку в From
, между 10.20.1.1
и 10.20.1.2
.
При запуске tcpdump
на srv
(где потеряна возможность проверки связи) Я вижу запросы ARP, но нет ответов:
root@srv ~# tcpdump -i vpnin -nn
17:10:54.463072 ARP, Request who-has 10.10.10.11 tell 10.20.1.1, length 28
17:10:55.459489 ARP, Request who-has 10.10.10.11 tell 10.20.1.1, length 28
17:10:56.459459 ARP, Request who-has 10.10.10.11 tell 10.20.1.1, length 28
17:10:56.473683 ARP, Request who-has 10.10.10.11 tell 10.20.1.2, length 28
17:10:57.469788 ARP, Request who-has 10.10.10.11 tell 10.20.1.2, length 28
17:10:58.469608 ARP, Request who-has 10.10.10.11 tell 10.20.1.2, length 28
Опять же, оба 10.20.1.1
и 10.20.1.2
запросить ответ.
Таблица ARP на srv
есть ответ
root@srv ~# arp -a
(...)
rpi1.10.in-addr.arpa (10.10.10.11) at f4:f2:6d:09:35:1b [ether] on lan0
В чем может быть причина
10.20.1.1
и 10.20.1.2
?ARP работает только в той же локальной сети (домен широковещательной передачи уровня 2), поскольку запрос ARP является широковещательным. Трансляции не пересекают границу уровня 3. MAC-адреса - это адреса уровня 2, и они имеют значение или даже видны только в том же широковещательном домене уровня 2.
Хост, желающий отправить трафик в другую сеть уровня 3, будет отправлять трафик на адрес уровня 2 своего настроенного шлюза, используя ARP для поиска адреса уровня 2 своего настроенного шлюза, если это необходимо. Затем настроенный шлюз отвечает за доставку трафика к следующему переходу на пути к месту назначения.
Если предполагается, что трафик должен быть направлен в другую сеть, вам необходимо настроить шлюз на хостах, чтобы они были адресами в сетях уровня 3, где эти хосты существуют, в точке, где сети встречаются (srv
). Настроенный шлюз для client
должно быть 10.20.1.254
, и настроенный шлюз для rp1
должно быть 10.10.10.254
.