Grey666 Posted February 15, 2012 Posted February 15, 2012 Имеется машина с Centos 6.2: # uname -a Linux 2.6.32-220.4.2.el6.x86_64 #1 SMP Tue Feb 14 04:00:16 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux Четыре сетевые карты, две из которых работают: # ifconfig eth2 Link encap:Ethernet HWaddr F4:6D:04:50:CE:E8 inet addr:xxx.xxx.xxx.180 Bcast:xxx.xxx.xxx.191 Mask:255.255.255.192 inet6 addr: fe80::f66d:4ff:fe50:cee8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:283464 errors:0 dropped:0 overruns:0 frame:0 TX packets:228244 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:89754341 (85.5 MiB) TX bytes:131920052 (125.8 MiB) Interrupt:16 Memory:fbde0000-fbe00000 eth3 Link encap:Ethernet HWaddr F4:6D:04:50:CE:5E inet addr:xxx.xxx.xxx.226 Bcast:xxx.xxx.xxx.227 Mask:255.255.255.252 inet6 addr: fe80::f66d:4ff:fe50:ce5e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3275 errors:0 dropped:0 overruns:0 frame:0 TX packets:3321 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:387624 (378.5 KiB) TX bytes:388690 (379.5 KiB) Interrupt:17 Memory:fa5e0000-fa600000 Маршрут по умолчанию прописан через eth2. eth3 существует для опроса устройств пингом. На центосе 5.5 все работало, перетащил софт на эту машину и начались чудеса: Пингуем точку-точку через этот интерфейс: # ping xxx.xxx.xxx.225 -I eth3 PING xxx.xxx.xxx.225 (xxx.xxx.xxx.225) from xxx.xxx.xxx.226 eth3: 56(84) bytes of data. 64 bytes from xxx.xxx.xxx.225: icmp_seq=1 ttl=255 time=2.78 ms 64 bytes from xxx.xxx.xxx.225: icmp_seq=2 ttl=255 time=0.761 ms ^C --- xxx.xxx.xxx.225 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1441ms Пробуем пропинговать еще что-нибудь: # ping ya.ru -I eth3 PING ya.ru (93.158.134.3) from xxx.xxx.xxx.226 eth3: 56(84) bytes of data. ^C --- ya.ru ping statistics --- 15 packets transmitted, 0 received, 100% packet loss, time 14267ms При этом TCPdump эти ответы видит: # tcpdump -i eth3 13:29:19.875166 IP xxx.xxx.xxx.226 > www.yandex.ru: ICMP echo request, id 45605, seq 10, length 64 13:29:19.877589 IP www.yandex.ru > xxx.xxx.xxx.226: ICMP echo reply, id 45605, seq 10, length 64 13:29:20.875157 IP xxx.xxx.xxx.226 > www.yandex.ru: ICMP echo request, id 45605, seq 11, length 64 13:29:20.877618 IP www.yandex.ru > xxx.xxx.xxx.226: ICMP echo reply, id 45605, seq 11, length 64 13:29:21.875173 IP xxx.xxx.xxx.226 > www.yandex.ru: ICMP echo request, id 45605, seq 12, length 64 13:29:21.877344 IP www.yandex.ru > xxx.xxx.xxx.226: ICMP echo reply, id 45605, seq 12, length 64 13:29:22.875183 IP xxx.xxx.xxx.226 > www.yandex.ru: ICMP echo request, id 45605, seq 13, length 64 13:29:22.877359 IP www.yandex.ru > xxx.xxx.xxx.226: ICMP echo reply, id 45605, seq 13, length 64 С eth2 все хорошо: # ping ya.ru -I eth2 PING ya.ru (213.180.204.3) from xxx.xxx.xxx.180 eth2: 56(84) bytes of data. 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=59 time=3.76 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=2 ttl=59 time=4.53 ms ^C --- ya.ru ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1880ms Куда копать? Вставить ник Quote
nuclearcat Posted February 15, 2012 Posted February 15, 2012 Попробуйте sysctl -w net.ipv4.conf.all.rp_filter=0 sysctl -w net.ipv4.conf.default.rp_filter=0 sysctl -w net.ipv4.conf.eth0.rp_filter=0 sysctl -w net.ipv4.conf.eth1.rp_filter=0 sysctl -w net.ipv4.conf.eth2.rp_filter=0 sysctl -w net.ipv4.conf.eth3.rp_filter=0 Вставить ник Quote
Grey666 Posted February 15, 2012 Author Posted February 15, 2012 Как раз нашел это решение :) Действительно, в ядрах 2.6.30+ изменилась логика проверки Source IP. Старая логика теперь работает со значением 2. Отключение решило проблему. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.