ASPLinux - шлюз, фильтрация пакетов iptables,
внутренний интерфейс eth0 xxx.xxx.xxx.xxx
внешний интерфейс eth1 yyy.yyy.yyy.yyy,
VPN серевер1 удаленный zz1.zz1.zz1.zz1
VPN серевер2 удаленный zz2.zz2.zz2.zz2
Настройки iptables.
*filter
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p icmp -j ACCEPT
-A -INPUT -s xxx.xxx.xxx.0/255.255.255.0 -d yyy.yyy.yyy.yyy -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A -INPUT -s zz1.zz1.zz1.zz1 -d yyy.yyy.yyy.yyy -i eth1 -p tcp -m tcp --sport 1723 -j ACCEPT
-A -INPUT -s zz2.zz2.zz2.zz2 -d yyy.yyy.yyy.yyy -i eth1 -p tcp -m tcp --sport 1723 -j ACCEPT
-A INPUT -p 47 -j ACCEPT
*nat
-A POSTROUTING -s xxx.xxx.xxx.0/255.255.255.0 -d zz1.zz1.zz1.zz1 -j SNAT --to-source yyy.yyy.yyy.yyy
-A POSTROUTING -s xxx.xxx.xxx.0/255.255.255.0 -d zz2.zz2.zz2.zz2 -j SNAT --to-source yyy.yyy.yyy.yyy
протокол gre загружен. в lsmod присутствует ip_gre
Проблема такая. При установке соединения до zz1.zz1.zz1.zz1 проходит все нормально.
в tcpdump'е идет обмен сначала по 1723
tcpdump -i any host zz1.zz1.zz1.zz1
11:21:54.625744 xxx.xxx.xxx.xxx.1041 > zz1.zz1.zz1.zz1.1723: S 6085210:6085210(0) win 4288 <mss 1460,nop,nop,sackOK>
11:21:54.625785 yyy.yyy.yyy.yyy.1041 > zz1.zz1.zz1.zz1.1723: S 6085210:6085210(0) win 4288 <mss 1460,nop,nop,sackOK>
11:21:55.630860 zz1.zz1.zz1.zz1.1723 > yyy.yyy.yyy.yyy.1041: S 3637473255:3637473255(0) ack 6085211 win 65535 <mss 1460,nop,nop,sackOK> (DF)
11:21:55.630910 zz1.zz1.zz1.zz1.1723 > xxx.xxx.xxx.xxx.1041: S 3637473255:3637473255(0) ack 6085211 win 65535 <mss 1460,nop,nop,sackOK> (DF)
11:21:55.631252 xxx.xxx.xxx.xxx.1041 > zz1.zz1.zz1.zz1.1723: . ack 1 win 4288
11:21:55.631275 yyy.yyy.yyy.yyy.1041 > zz1.zz1.zz1.zz1.1723: . ack 1 win 4288
11:21:55.631327 xxx.xxx.xxx.xxx.1041 > zz1.zz1.zz1.zz1.1723: P 1:157(156) ack 1 win 4288
11:21:55.631339 yyy.yyy.yyy.yyy.1041 > zz1.zz1.zz1.zz1.1723: P 1:157(156) ack 1 win 4288
11:21:57.009423 zz1.zz1.zz1.zz1.1723 > yyy.yyy.yyy.yyy.1041: P 1:157(156) ack 157 win 65379 (DF)
11:21:57.009450 zz1.zz1.zz1.zz1.1723 > xxx.xxx.xxx.xxx.1041: P 1:157(156) ack 157 win 65379 (DF)
Далее уже идет по gre
11:22:00.908342 zz1.zz1.zz1.zz1 > yyy.yyy.yyy.yyy: gre-proto-0x880B (gre encap)
11:22:00.908361 zz1.zz1.zz1.zz1 > xxx.xxx.xxx.xxx: gre-proto-0x880B (gre encap)
11:22:00.908469 zz1.zz1.zz1.zz1 > yyy.yyy.yyy.yyy: gre-proto-0x880B (gre encap)
11:22:00.908479 zz1.zz1.zz1.zz1 > xxx.xxx.xxx.xxx: gre-proto-0x880B (gre encap)
11:22:01.040722 xxx.xxx.xxx.xxx > zz1.zz1.zz1.zz1: gre-proto-0x880B (gre encap)
11:22:01.040737 yyy.yyy.yyy.yyy > zz1.zz1.zz1.zz1: gre-proto-0x880B (gre encap)
11:22:01.230659 xxx.xxx.xxx.xxx > zz1.zz1.zz1.zz1: [|gre] (gre encap)
11:22:01.230673 yyy.yyy.yyy.yyy > zz1.zz1.zz1.zz1: [|gre] (gre encap)
11:22:01.247382 zz1.zz1.zz1.zz1 > yyy.yyy.yyy.yyy: gre-proto-0x880B (gre encap)
11:22:01.247397 zz1.zz1.zz1.zz1 > xxx.xxx.xxx.xxx: gre-proto-0x880B (gre encap)
11:22:01.440647 xxx.xxx.xxx.xxx > zz1.zz1.zz1.zz1: gre-proto-0x880B (gre encap)
Канал есть.
Если же коннектиться до zz2.zz2.zz2.zz2
то
tcpdump -i any host zz2.zz2.zz2.zz2
обмен по 1723, нормально, как и с zz1.zz1.zz1.zz1
а вот когда уже gre должен быть, тогда
11:06:57.810713 zz2.zz2.zz2.zz2 > yyy.yyy.yyy.yyy: gre-proto-0x880B (gre encap)
11:06:57.853775 xxx.xxx.xxx.xxx > zz2.zz2.zz2.zz2: gre-proto-0x880B (gre encap)
11:07:00.819848 zz2.zz2.zz2.zz2 > yyy.yyy.yyy.yyy: gre-proto-0x880B (gre encap)
11:07:00.853027 xxx.xxx.xxx.xxx > zz2.zz2.zz2.zz2: gre-proto-0x880B (gre encap)
11:07:03.810888 zz2.zz2.zz2.zz2 > yyy.yyy.yyy.yyy: gre-proto-0x880B (gre encap)
11:07:03.852221 xxx.xxx.xxx.xxx > zz2.zz2.zz2.zz2: gre-proto-0x880B (gre encap)
Получается, что gre не проходит через внешний интерфейс.
Но почему? Не пойму. Если с другим хостом все нормально!