LINUX.ORG.RU
решено ФорумAdmin

проблемы с arp кэшем

 


1

1

Привет, привет! Помогите победить.

Есть два сети 192.168.0.0/24 и 192.168.10.0/24. Роутер в первой сети 192.168.0.100, во второй 192.168.10.1. Роутеры объединены посредством ipsec. Компы из первой сети отлично пингуют компы из второй, и на оборот. Проблема в единственном серваке на Gentoo.

Сервер Gentoo (192.168.0.94) из первой сети (192.168.0.0/24) не доступен из второй сети 192.168.10.0/24. Причем странность в том, что если сервер перезагрузить доступ к нему временно появляется. Но после нескольких минут снова доступ пропадает.

После долгих поисков выяснил что проблема как то связанна с arp, привожу кусок arp кэша с сервера Gentoo

192.168.0.21             ether   6c:f0:49:55:de:ea   C                     eth0
192.168.0.18             ether   6c:f0:49:56:4e:8a   C                     eth0
srv-dc-02.domain.com  ether   00:0c:29:d0:b5:65   C                     eth0
lt-009.domain.com    ether   00:1e:68:08:4f:87   C                     eth0
ul-000082.domain.com  ether   00:1e:8c:9d:2c:75   C                     eth0
srv-dc-04.domain.com          (incomplete)                              eth0

для примера: srv-dc-04 пк находящийся в сети два (192.168.10.0/24), который пытается пинговать этот самый gentoo.

Записи вида incomplete заполняют кэш, и сами не очищаются. После перезагрузки кэш снова чистый и пинги ходят нормально, несколько минут.

Для примера есть второй сервер на centos в сети один, там записи incomplete так же есть но они самоочищаются через несколько секунд, и пинг до этого сервера из сети два не пропадает.

показал бы лучше «arp -an», а то по именам фиг поймешь в какой сети хост.

С этой генту нужно посмотреть «ip ro». IMHO на ней беда с маршрутами.

vel ★★★★★ ()
Ответ на: комментарий от vel
web ~ # arp -an

? (192.168.0.116) at 6c:f0:49:e6:63:75 [ether] on eth0
? (192.168.0.29) at 6c:f0:49:56:68:f3 [ether] on eth0
? (192.168.10.85) at <incomplete> on eth0
? (192.168.0.137) at 6c:f0:49:56:ef:ba [ether] on eth0
? (192.168.10.240) at <incomplete> on eth0
web ~ # ip ro
default via 192.168.0.100 dev eth0  metric 2
127.0.0.0/8 via 127.0.0.1 dev lo
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.94
fordiego ()
Ответ на: комментарий от fordiego

Пытаться выполнить arp для машин чужой сети - это не нормально.

гм. а что говорит «ip ro get 192.168.10.85» и «ip ru» ?

vel ★★★★★ ()
Ответ на: комментарий от vel

хыммм а как тогда сделать чтоб не выполнял arp? или это надо на роутерах настройку выполнять?

web ~ # arp -an | grep 192.168.10.85
? (192.168.10.85) at <incomplete> on eth0
web ~ # ip ro get 192.168.10.85
192.168.10.85 dev eth0  src 192.168.0.94
    cache  ipid 0xcbee
web ~ # ip ru
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default
fordiego ()

такое ощущение что сервер gentoo банит ip адреса если в кэше arp нет их маков.

centos вот не банит...

где и как можно это проверить?

fordiego ()
Ответ на: комментарий от fordiego

Проблема в данной машине. Проблема в машрутизации. Машина почему-то считает, что 192.168.10.0/24 подключена к eth0

192.168.10.85 dev eth0 src 192.168.0.94 cache ipid 0xcbee

И при этом таблица машрутизации

default via 192.168.0.100 dev eth0  metric 2
127.0.0.0/8 via 127.0.0.1 dev lo
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.94
Не верю!

Сравни «ip -4 ro ls table all» сразу после старта систем и после того как перестанет работать пинг до 192.168.10.85.

PS Теоретически такой эффект может давать icmp-redirect, но обычно его все отключают. «tcpdump -ni eth0 icmp» должен показывать его.

vel ★★★★★ ()
Ответ на: комментарий от vel

Сравнил ip -4 ro ls table all одинаковые. теперь по счет icmp-redirect

Сразу после перезагрузки пингую с хоста 192.168.10.240:

web ~ # tcpdump -ni eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:19:30.802676 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 1, seq 65403, length 40
13:19:30.802723 IP 192.168.0.94 > 192.168.10.240: ICMP echo reply, id 1, seq 65403, length 40
13:19:30.803023 IP 192.168.0.100 > 192.168.0.94: ICMP redirect 192.168.10.240 to host 192.168.10.240, length 36
13:19:31.818650 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 1, seq 65404, length 40
13:19:31.818676 IP 192.168.0.94 > 192.168.10.240: ICMP echo reply, id 1, seq 65404, length 40
13:19:31.818820 IP 192.168.0.100 > 192.168.0.94: ICMP redirect 192.168.10.240 to host 192.168.10.240, length 36
13:19:32.832601 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 1, seq 65407, length 40
13:19:32.832628 IP 192.168.0.94 > 192.168.10.240: ICMP echo reply, id 1, seq 65407, length 40
после того как пинг отвалился
web ~ # tcpdump -ni eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:32:50.375664 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 27, length 40
13:32:55.368108 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 28, length 40
13:33:00.375182 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 29, length 40
13:33:05.367851 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 30, length 40

не нужнен чтоли этот ICMP redirect как его отключать? в sysctl.conf ?

fordiego ()

ах, да забыл дописать пинг время от времени появляется, что вообще меня просто вымораживает...

fordiego ()
Ответ на: комментарий от fordiego

можно было бы сетовать на кабель или сетевуху, но gentoo это виртуальная машина на сервере ESXi, на котором еще несколько виртуалок отлично работающих и пингующихся со всех сетей, в том числе centos с которой я веду сравнение.

fordiego ()
Ответ на: комментарий от fordiego
13:19:30.803023 IP 192.168.0.100 > 192.168.0.94: ICMP redirect 192.168.10.240 to host 192.168.10.240, length 36

вот зло!

убедись что net.ipv4.conf.default.accept_redirects=0 или net.ipv4.conf.eth0.accept_redirects=0

А что за роутер 192.168.0.100 ? imho на нем что-то криво настроено. Такую фигню он не должен слать!

vel ★★★★★ ()
Ответ на: комментарий от vel

изменил перезагрузил, наблюдаю

web ~ # cat /etc/sysctl.conf | grep net.ipv4.conf.all.accept_redirects
net.ipv4.conf.all.accept_redirects = 0
web ~ # cat /etc/sysctl.conf | grep net.ipv4.conf.default.accept_redirects
net.ipv4.conf.default.accept_redirects = 0



роутеры на обоих концах pfseens
fordiego ()
Ответ на: комментарий от vel

после перезагрузки

web ~ # tcpdump -ni eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:19:44.693871 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 1460, length 40
14:19:44.693900 IP 192.168.0.94 > 192.168.10.240: ICMP echo reply, id 2, seq 1460, length 40
14:19:44.694105 IP 192.168.0.100 > 192.168.0.94: ICMP redirect 192.168.10.240 to host 192.168.10.240, length 36
14:19:45.708983 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 1461, length 40
14:19:45.709012 IP 192.168.0.94 > 192.168.10.240: ICMP echo reply, id 2, seq 1461, length 40
14:19:45.709145 IP 192.168.0.100 > 192.168.0.94: ICMP redirect 192.168.10.240 to host 192.168.10.240, length 36
14:19:46.721785 IP 192.168.10.240 > 192.168.0.94: ICMP echo request, id 2, seq 1462, length 40
14:19:46.721816 IP 192.168.0.94 > 192.168.10.240: ICMP echo reply, id 2, seq 1462, length 40
14:19:46.722040 IP 192.168.0.100 > 192.168.0.94: ICMP redirect 192.168.10.240 to host 192.168.10.240, length 36
не че не изменилось

fordiego ()
Ответ на: комментарий от fordiego

и их тоже лучше отключить.

Ручками выполни

sysctl -w net.ipv4.conf.eth0.accept_redirects=0
sysctl -w net.ipv4.conf.eth0.secure_redirects=0

и посмотри, что изменится. Если не поможет, то фильтруй icmp-redirect в iptables

vel ★★★★★ ()
Ответ на: комментарий от fordiego

боюсь сглазить но вроде полет нормальный. tcpdump -ni eth0 icmp все равно показывает ICMP redirect, но теперь в кэше arp не появляется записей с других сетей. и gentoo отличненько отовсюду виден. Буду наблюдать в течении седня-завтра.

vel огромнейшее спасибо! Очень выручил!

fordiego ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.