Общая ситуация такова: есть локальная сеть с приватными адресами, есть роутер под linux 2.4.25, и есть два провайдера интернет (Ситек и Бестком), один из которых (Ситек) в настоящий момент лежит. Эта часть работает на ура.
В добавок к этому есть компьютер, который условно назовем CVS, и который имеет две карточки с реальными адресами на каждой (по одной на каждого провайдера).
Изначально на CVS все было настроено исключительно на Ситек. Однако когда он упал - понадобилось заставить его работать и через Бестком тоже. И вот тут начались проблемы.Бьюсь уже неделю, man ping, man traceroute, man route, man iptables, man ip и man tcpdump прочитаны до дыр.
Для простоты понимания предлагаю посмотреть на схему (картинка) подключения всего этого безобразия на http://bestcom.alterplast.ru/NetworkSheme2.jpg
Симптомы проблемы следующие.
Идем на CVS. Говорим
route del default
route add default gw 213.167.38.10
ping 192.168.0.1
Пинг проходит.Говорим там же
route del default
route add default gw 217.72.147.97
ping 192.168.0.1
Пинг не проходит.Включаем на роутере и на CVS журналирование всех icmp пакетов.
Говорим с CVS
ping 192.168.0.1
На CVS исходящий пинг видим, на роутере - нет.
tcpdump на роутере видит приходящий на eth3 пакет, а больше ничего нету.Говорим со стороннего хоста (из интернета)
ping 217.72.147.98
на роутере видим IN=eth1, OUT=eth3 пакет и больше ничего.
на CVS видим как сам запрос (IN=eth1, OUT= ) так и ответ на него (IN= , OUT=eth1).
tcpdump на роутере видит приходящий пакет запроса на eth1, исходящий пакет запроса с eth3, приходящий пакет ответа на eth3. На этом все останавливается.Понятно, что проблема в настройках файрволла на роутере, но вот где именно - понять не могу.
Может быть кто-нибудь сможет подсказать - куда именно детально посмотреть?
Заранее спасибо.P.S. В качестве дополнительной информации привожу некоторые настройки на роутере.
[root@ns rc.d]# ip rule show
0: from all lookup local
32765: from 213.167.38.10 lookup mtu
32766: from all lookup main
32767: from all lookup default[root@ns rc.d]# ip route show table local
broadcast 217.72.145.192 dev eth1 proto kernel scope link src 217.72.145.201
broadcast 217.72.145.192 dev ipsec0 proto kernel scope link src 217.72.145.201
broadcast 192.168.0.255 dev eth0 proto kernel scope link src 192.168.0.109
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 217.72.147.103 dev eth3 proto kernel scope link src 217.72.147.97
local 217.72.147.97 dev eth3 proto kernel scope host src 217.72.147.97
broadcast 217.72.147.96 dev eth3 proto kernel scope link src 217.72.147.97
local 192.168.0.109 dev eth0 proto kernel scope host src 192.168.0.109
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.0.109
local 217.72.145.201 dev eth1 proto kernel scope host src 217.72.145.201
local 217.72.145.201 dev ipsec0 proto kernel scope host src 217.72.145.201
broadcast 213.167.38.15 dev eth2 proto kernel scope link src 213.167.38.10
broadcast 213.167.38.8 dev eth2 proto kernel scope link src 213.167.38.10
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 213.167.38.10 dev eth2 proto kernel scope host src 213.167.38.10
broadcast 217.72.145.255 dev eth1 proto kernel scope link src 217.72.145.201
broadcast 217.72.145.255 dev ipsec0 proto kernel scope link src 217.72.145.201
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1[root@ns rc.d]# ip route show table mtu
213.167.38.8/29 dev eth2 scope link
192.168.0.0/24 dev eth0 scope link
default via 213.167.38.9 dev eth2[root@ns rc.d]# ip route show table main
213.167.38.8/29 dev eth2 proto kernel scope link src 213.167.38.10
217.72.147.96/29 dev eth3 proto kernel scope link src 217.72.147.97
217.72.145.192/26 dev eth1 proto kernel scope link src 217.72.145.201
217.72.145.192/26 dev ipsec0 proto kernel scope link src 217.72.145.201
192.168.2.0/24 via 217.72.145.193 dev ipsec0
192.168.1.0/24 via 192.168.0.1 dev eth0
192.168.0.0/24 dev eth0 scope link
127.0.0.0/8 dev lo scope link
default via 217.72.145.193 dev eth1[root@ns rc.d]# ip route show table default
[root@ns rc.d]#
[root@ns root]# iptables -L -n -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
241 26182 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 DROP tcp -- eth2 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
0 0 REJECT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 reject-with icmp-port-unreachable
5 240 REJECT tcp -- eth2 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 reject-with icmp-port-unreachable
0 0 REJECT all -- eth2 * 0.0.0.0/0 62.118.26.168 reject-with icmp-port-unreachable
0 0 REJECT all -- eth2 * 0.0.0.0/0 62.118.26.171 reject-with icmp-port-unreachable
60 6901 REJECT all -- eth1 * 0.0.0.0/0 217.72.145.255 reject-with icmp-port-unreachable
0 0 REJECT all -- eth0 * 192.168.1.1 255.255.255.255 reject-with icmp-port-unreachable
0 0 REJECT all -- eth1 * 0.0.0.0/0 255.255.255.255 reject-with icmp-port-unreachable
5636 791K ACCEPT all -- eth0 * 192.168.0.0/24 0.0.0.0/0
0 0 ACCEPT all -- eth3 * 217.72.147.96/29 0.0.0.0/0
492 45852 ACCEPT all -- eth1 * 0.0.0.0/0 217.72.147.96/29
0 0 drop-and-log-it all -- eth2 * 192.168.0.0/24 0.0.0.0/0
0 0 drop-and-log-it all -- eth1 * 192.168.0.0/24 0.0.0.0/0
41 2913 ACCEPT all -- eth2 * 0.0.0.0/0 213.167.38.10
6645 5724K ACCEPT all -- eth1 * 0.0.0.0/0 217.72.145.201
0 0 ACCEPT all -- eth2 * 0.0.0.0/0 217.72.145.201
0 0 ACCEPT all -- eth1 * 0.0.0.0/0 213.167.38.10
0 0 drop-and-log-it all -- * * 0.0.0.0/0 0.0.0.0/0Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- eth0 ipsec0 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
1084 180K ACCEPT tcp -- eth0 * 192.168.0.16 0.0.0.0/0 tcp dpt:80
147 35249 ACCEPT tcp -- eth0 * 192.168.0.28 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
6 288 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
211 113K ACCEPT all -- eth2 eth0 0.0.0.0/0 0.0.0.0/0
4047 2530K ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth3 eth0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ipsec0 eth0 0.0.0.0/0 0.0.0.0/0
99 20084 ACCEPT all -- eth0 eth0 0.0.0.0/0 0.0.0.0/0
140 36128 ACCEPT all -- eth0 eth2 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth1 eth2 0.0.0.0/0 0.0.0.0/0
2358 202K ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth2 eth1 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth3 eth1 0.0.0.0/0 0.0.0.0/0
2267 189K ACCEPT all -- eth1 eth3 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 eth3 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 ipsec0 0.0.0.0/0 0.0.0.0/0
0 0 drop-and-log-it all -- * * 0.0.0.0/0 0.0.0.0/0Chain OUTPUT (policy DROP 4 packets, 752 bytes)
pkts bytes target prot opt in out source destination
241 26182 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
17 1407 ACCEPT all -- * eth0 213.167.38.10 192.168.0.0/24
0 0 ACCEPT all -- * eth0 217.72.145.201 192.168.0.0/24
0 0 ACCEPT all -- * eth0 217.72.147.97 192.168.0.0/24
7350 6103K ACCEPT all -- * eth0 192.168.0.109 192.168.0.0/24
484 75418 ACCEPT all -- * eth1 217.72.147.96/29 0.0.0.0/0
0 0 ACCEPT all -- * eth3 0.0.0.0/0 217.72.147.96/29
0 0 drop-and-log-it all -- * eth2 0.0.0.0/0 192.168.0.0/24
0 0 drop-and-log-it all -- * eth1 0.0.0.0/0 192.168.0.0/24
46 7924 ACCEPT all -- * eth2 213.167.38.10 0.0.0.0/0
7273 926K ACCEPT all -- * eth1 217.72.145.201 0.0.0.0/0
0 0 ACCEPT all -- * eth2 217.72.145.201 0.0.0.0/0
0 0 ACCEPT all -- * eth1 213.167.38.10 0.0.0.0/0
0 0 drop-and-log-it all -- * * 0.0.0.0/0 0.0.0.0/0Chain drop-and-log-it (7 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
[root@ns root]#[root@ns root]# iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 245K packets, 25M bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 213.167.38.10 tcp dpt:6899 to:192.168.0.16:4899
0 0 DNAT tcp -- * * 0.0.0.0/0 213.167.38.10 tcp dpt:6898 to:192.168.0.28:4899
0 0 DNAT tcp -- * * 0.0.0.0/0 213.167.38.10 tcp dpt:6897 to:192.168.0.19:4899
0 0 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:6899 to:192.168.0.16:4899
0 0 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:6898 to:192.168.0.28:4899
0 0 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:6897 to:192.168.0.19:4899
9 424 DNAT tcp -- * * 0.0.0.0/0 213.167.38.10 tcp dpt:25 to:192.168.0.1:25
26 1476 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:25 to:192.168.0.1:25
1 48 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:80 to:213.167.38.11:80
0 0 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:222 to:213.167.38.11:22
0 0 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:20 to:213.167.38.11:20
0 0 DNAT tcp -- * * 0.0.0.0/0 217.72.145.201 tcp dpt:21 to:213.167.38.11:21Chain POSTROUTING (policy ACCEPT 42717 packets, 7479K bytes)
pkts bytes target prot opt in out source destination
888 53061 LOG all -- * eth1 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
2 96 SNAT all -- * eth2 0.0.0.0/0 0.0.0.0/0 to:213.167.38.10
888 53061 SNAT all -- * eth1 0.0.0.0/0 0.0.0.0/0 to:217.72.145.201Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
>Говорим там же
>route del default
>route add default gw 217.72.147.97
>ping 192.168.0.1
>Пинг не проходит.
ip route flush cache? Какой src ip ставит CVS в этом случае? Попробуйте тоже самое, но с отключенными eth0 на CVS и eth2 на роутере.>Понятно, что проблема в настройках файрволла на роутере, но вот где именно
>- понять не могу.
Не уверен. В правилах явно указано разрешить все пакеты с eth3 на eth0 и наоборот:0 0 ACCEPT all -- eth3 eth0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 eth3 0.0.0.0/0 0.0.0.0/0но счетчики пакетов нулевые.
>>Говорим там же
>>route del default
>>route add default gw 217.72.147.97
>>ping 192.168.0.1
>>Пинг не проходит.
>ip route flush cache?
На роутере? Попробовал - не помогает.>Какой src ip ставит CVS в этом случае?
Jun 9 11:36:49 cvs kernel: IN= OUT=eth1 SRC=217.72.147.98 DST=192.168.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=60931 SEQ=1624>Попробуйте тоже самое, но с отключенными eth0 на CVS и eth2
>на роутере.
Попробую, но это займет некоторое время. Ибо я сейчас рулю cvs через эти интерфейсы, и чтобы их уронить надо будет к cvs локальную консоль приделывать.
>>Попробуйте тоже самое, но с отключенными eth0 на CVS и eth2
>>на роутере.
>Попробую, но это займет некоторое время. Ибо я сейчас рулю cvs через
>эти интерфейсы, и чтобы их уронить надо будет к cvs локальную
>консоль приделывать.Какая-то полная ерунда. Попробовал с роутера приломиться по ssh на eth1 cvs (чтобы локальную консоль не прикручивать). Обломался. на eth0 пускает, на eth1 - нет.
Попробовал сделать то же самое, но уже по http (на cvs поднят апач, который слушает все интерфейсы). на eth0 пускает, на eth1 - нет.Сделал на cvs
iptables -A INPUT -i eth1 -j LOG
iptables -A OUTPUT -o eth1 -j LOG
приломился по http, получил в логе на cvs
Jun 9 12:40:14 cvs kernel: IN=eth1 OUT= MAC=00:0c:6e:f6:3b:ba:01:23:45:67:89:ab:08:00 SRC=217.72.147.97 DST=217.72.147.98 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=19521 DF PROTO=TCP SPT=33804 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Jun 9 12:40:14 cvs kernel: IN= OUT=eth1 SRC=217.72.147.98 DST=217.72.147.97 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=80 DPT=33804 WINDOW=5792 RES=0x00 ACK SYN URGP=0То есть cvs честно отвечает на попытку установить соединение.
Перед соединением сделал на роутере iptables -Z, после неудавшегося соединения сделал
[root@ns eth1]# iptables -L INPUT -v -n | grep eth3
12 720 ACCEPT all -- eth3 * 217.72.147.96/29 0.0.0.0/0
и
[root@ns eth1]# iptables -L OUTPUT -v -n | grep eth3
6 360 ACCEPT all -- * eth3 0.0.0.0/0 217.72.147.96/29Типа пакеты уходят и приходят. tcpdump на роутере тоже все эти пакеты видит. Но соединения не получается. Я в трансе.
А на какой MAC-адрес посылает CVS ответы для роутера? Совпадает с MAC-адресом eth3 роутера? Попробуйте на обеих машинах включить arp_filter:echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_filter
...
Попробуйте на CVS:
arping -I eth1 -c 3 217.72.147.97
arp -na
>Попробуйте на CVS:
>arping -I eth1 -c 3 217.72.147.97
>arp -na[root@cvs all]# arping -I eth1 -c 3 217.72.147.97
ARPING 217.72.147.97 from 217.72.147.98 eth1
Unicast reply from 217.72.147.97 [01:23:45:67:89:AB] 0.625ms
Unicast reply from 217.72.147.97 [01:23:45:67:89:AB] 0.597ms
Unicast reply from 217.72.147.97 [01:23:45:67:89:AB] 0.584ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)
[root@cvs all]# arp -na
? (217.72.147.97) at 01:23:45:67:89:AB [ether] on eth1
? (213.167.38.10) at 00:20:E0:60:31:63 [ether] on eth0
Отключал eth0 на cvs и eth2 на роутере - не помогло. Картина не изменилась.>А на какой MAC-адрес посылает CVS ответы для роутера?
А как бы это понять? tcpdump даже с -vvv не пишет MAC-адреса пакетов, а iptables пишет МАКи только для входящих пакетов, и только другой стороны.
Эти МАК-адреса - все правильные.>Совпадает с MAC-адресом eth3 роутера?
Кстати вот обратил внимание: eth3 роутера имеет МАК 01:23:45:67:89:ab
Какой-то он неправильный :) Сетевуха nvidia наплатная с материнки ASUS A7-N8X-VM. Драйвера брал с http://www.nvidia.com/content/drivers/drivers.asp
eth1 на cvs - это точно такая же карточка, так там МАК более живой - 00:0C:6E:F6:3B:BA.>Попробуйте на обеих машинах включить arp_filter:
Чуть попозже, сначала с МАКом разберусь.
>>Попробуйте на обеих машинах включить arp_filter:
>Чуть попозже, сначала с МАКом разберусь.Попробовал, не помогло. ни ssh, ни http на 217,72,147,98 не коннектятся.
Пошел на нвидию за более свежим драйвером. Еще есть желание ядро обновить с 4.25 до 4.31 - почитал ченджлоги, там были множественные фиксы в NETFILTER
>Кстати вот обратил внимание: eth3 роутера имеет МАК 01:23:45:67:89:ab
>Какой-то он неправильный :)
MAC - чушь полная. ИМХО проблема в драйвере или самой сетевухе и ядро здесь ни при чем. Попробуйте поставить другую рабочую сетевуху.
>>Кстати вот обратил внимание: eth3 роутера имеет МАК 01:23:45:67:89:ab
>>Какой-то он неправильный :)
>MAC - чушь полная. ИМХО проблема в драйвере или самой сетевухе и
>ядро здесь ни при чем.Согласен. Сходил на нвидию. Вместо моего 1.0-0261, размером 87 килобайт предлагают 1.0-0301, размером 5.6 мега. Видать много пофиксили :)
Страшно, но попробую обновить драйвер.>Попробуйте поставить другую рабочую сетевуху.
Для этого придется менять мать. Ибо на этой матери всего 3 слота расширения, и все они уже забиты сетевухами. Так что этот вариант попробую только к вечеру.
Купите многопортовую, например, Intel. Дорого, но надежно.
Обновил драйвер. МАК-адрес не поменялся. Видать битая карточка.>Купите многопортовую, например, Intel. Дорого, но надежно.
Это мысль, спасибо.
>Обновил драйвер. МАК-адрес не поменялся. Видать битая карточка.Взял MAC адрес такой же сетевухи, но рабочей. Прибавил единичку и прописал полученное для eth3 на роутере. И оно ЗАРАБОТАЛО !!!
Всем спасибо, а Джонатану - отдельное.