Краткое описание проблемы : пинг
от клиента
не переходит на rpi1
, его вызов ARP не отвечает at SRV
.
host0
и tap0
соединены мостом br0
. vpnin
и lan0
- два независимых интерфейса. srv
(IP-переадресация включена, и у меня есть успешный трафик между rpi1
и другими интерфейсами, которые здесь не видны, в том числе одним, который является шлюзом в Интернет) Реквизиты : клиент
успешно отправляет эхо-запрос ( 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 работает только в одной локальной сети (широковещательный домен второго уровня), поскольку ARP запрос является широковещательным. Вещательные запросы не пересекают границу третьего уровня. MAC адреса - это адреса второго уровня, и они значимы или даже видны только в том же широковещательном домене второго уровня.
Узел, желающий отправить трафик в другую сеть третьего уровня, будет посылать трафик на адрес второго уровня своего настроенного шлюза, используя ARP для поиска адреса второго уровня своего настроенного шлюза, если это необходимо. Затем, в обязанности настроенного шлюза входит передача трафика на следующий прыжок по пути к месту назначения.
Если трафик должен быть направлен в другую сеть, вам нужно настроить шлюз на узлах, чтобы они были адресами в сетях третьего уровня, где узлы существуют, в точке, где сети пересекаются (srv
). Настроенный шлюз для клиента
должен быть 10.20.1.254
, а настроенный шлюз для rp1
должен быть 10.10.254
.