LINUX.ORG.RU
ФорумAdmin

iptables, routing, несколько сетей, два провадера, два VPN - вообщем совсем запутался

 , ,


0

1

Добрый день всем. Прошу помощи, уже две недели бьюсь, а продвинулся только на половину. Итак есть шлюз на Ubuntu 3.8.0. У него 4 физических сетевых интерфейса: eth0 - локальная сеть 192.168.1.0/24 и новая сеть 10.0.1.0/24 eth1 - DMZ сеть 10.0.10.0/24 и 192.168.10.0/24 eth2 - интерфейс провайдера 1 - обычно в down, используется как резерв eth3 - интерфейс провайдера 2 - IP от провайдера: 89.Х.Х.Х

Поднято два OpenVPN клиента: tun0 10.55.0.10 и tun2 10.57.0.10 Необходимо определенные машины из сети 192.168.1.0/24 выпускать в интернет через vpn канал tun0, а все машины из сети 10.0.1.0/24 через tun2. Раньше сети 10.0.1.0/24 и tun2 не было. Половину я настроил (а главное старое не поломал) - у меня пакеты из сети 10.0.1.0/24 уходят в tun2, ответ оттуда приходит - а дальше я пакеты нигде не могу найти.... Уже всю голову сломал. Логика была такая - для новой сети помечать пакеты и SNAT для них на другой интерфейс.

Приведу основные правила iptables и ip rule/route:

[15:08:06 root@k]:~# ip rule list
0:      from all lookup local
73:     from 192.168.1.106 to 10.0.10.0/24 lookup main
74:     from 192.168.1.106 to 10.0.1.0/24 lookup main
76:     from 192.168.1.106 lookup inet_tunel
83:     from 192.168.1.102 to 192.168.10.0/24 lookup main
86:     from 192.168.1.102 to 10.0.1.0/24 lookup main
88:     from 192.168.1.102 lookup inet_tunel
95:     from 10.0.1.0/24 to 192.168.1.0/24 lookup main
97:     from 10.0.1.0/24 to 10.0.10.0/24 lookup main
98:     from 10.0.1.0/24 to 10.0.1.0/24 lookup main
100:    from all fwmark 0x4/0x4 lookup base1_tunel
32766:  from all lookup main
32767:  from all lookup default

Это таблицы маршрутизации:

[16:01:10 root@k]:~# ip route list table inet_tunel
default via 10.55.0.9 dev tun0
192.168.10.0/24 via 192.168.10.1 dev eth1

[16:06:55 root@k]:~# ip route list table base1_tunel[br]
default via 10.57.0.9 dev tun2[br]
10.0.1.0/24 via 10.0.1.1 dev eth0[br]

Таблица NAT - Пытаюсь по логам понять куда пропали пакеты:

[16:07:03 root@k]:~# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 14762 packets, 885K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  tun2   *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "NAT-PRE "
    0     0 LOG        all  --  *      *       10.57.0.10           0.0.0.0/0            LOG flags 0 level 4 prefix "NAT-PRE 1 "
    0     0 LOG        all  --  *      *       0.0.0.0/0            10.57.0.10           LOG flags 0 level 4 prefix "NAT-PRE 1 "
  159 12084 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:123 to:10.0.0.1

Chain INPUT (policy ACCEPT 4238 packets, 296K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  tun2   *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "NAT-INPUT "
   19  2766 LOG        all  --  eth0   *       10.0.1.11            0.0.0.0/0            LOG flags 0 level 4 prefix "NAT-INPUT "

Chain OUTPUT (policy ACCEPT 3621 packets, 252K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  *      tun2    0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "NAT-OUT "
    0     0 LOG        all  --  *      *       0.0.0.0/0            10.0.1.11            LOG flags 0 level 4 prefix "NAT-OUT 1 "
    0     0 LOG        all  --  *      *       0.0.0.0/0            10.57.0.0/24         LOG flags 0 level 4 prefix "NAT-OUT 1 "

Chain POSTROUTING (policy ACCEPT 194 packets, 26245 bytes)
 pkts bytes target     prot opt in     out     source               destination
    1    48 LOG        all  --  *      tun2    0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "NAT-POST "
    0     0 LOG        all  --  *      *       0.0.0.0/0            10.57.0.0/24         LOG flags 0 level 4 prefix "NAT-POST 1 "
   36  1848 LOG        all  --  *      *       0.0.0.0/0            10.0.1.0/24          LOG flags 0 level 4 prefix "NAT-POST 2 "
 7590  472K SNAT       all  --  *      eth3    0.0.0.0/0            0.0.0.0/0            to:89.XXX.XXX.XXX
    1    48 SNAT       all  --  *      tun2    0.0.0.0/0            0.0.0.0/0            to:10.57.0.10
  158  8764 SNAT       all  --  *      tun0    0.0.0.0/0            0.0.0.0/0            to:10.55.0.10

Таблица Mangle - тут маркирую пакеты:

[16:08:40 root@k]:~# iptables -t mangle -vnL
Chain PREROUTING (policy ACCEPT 2539K packets, 2008M bytes)
 pkts bytes target     prot opt in     out     source               destination
    7   336 LOG        all  --  tun2   *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "MNG PRE "
    3   144 MARK       all  --  *      *       10.0.1.11            178.62.9.171         MARK set 0x4
    7   336 MARK       all  --  *      *       178.62.9.171         0.0.0.0/0            MARK set 0x4

Chain INPUT (policy ACCEPT 28510 packets, 5221K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  tun2   *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "MSK INPUT "
   30  3775 CONNMARK   all  --  eth0   *       10.0.1.0/24          0.0.0.0/0            CONNMARK set 0x4

Chain FORWARD (policy ACCEPT 2506K packets, 2002M bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  tun2   *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "MNG FORWARD "
    3   144 LOG        all  --  *      tun2    0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "MNG FORWARD 2 "

Chain OUTPUT (policy ACCEPT 17408 packets, 2724K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1761  254K CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            CONNMARK restore

Chain POSTROUTING (policy ACCEPT 2520K packets, 2005M bytes)
 pkts bytes target     prot opt in     out     source               destination
    3   144 LOG        all  --  *      tun2    0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "MNG POST "
    0     0 LOG        all  --  *      *       0.0.0.0/0            10.57.0.10           LOG flags 0 level 4 prefix "MNG POST 2"
    0     0 LOG        all  --  *      *       10.57.0.10           0.0.0.0/0            LOG flags 0 level 4 prefix "MNG POST 3"

Судя по записям в syslog - пакеты уходят в tun2, появляются обратный пакет с ответом, но почему он НЕ пересылается клиенту понять не могу.

 May 23 15:00:30 GW kernel: [882678.934026] NAT-INPUT IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=10.0.1.255 LEN=229 TOS=0x00 PREC=0x00 TTL=128 ID=273 PROTO=UDP SPT=138 DPT=138 LEN=209
May 23 15:02:16 GW kernel: [882785.235875] NAT-INPUT IN=eth0 OUT= MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=10.0.1.1 LEN=58 TOS=0x00 PREC=0x00 TTL=128 ID=489 PROTO=UDP SPT=60382 DPT=53 LEN=38
May 23 15:02:16 GW kernel: [882785.271904] NAT-INPUT IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=10.0.1.255 LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=490 PROTO=UDP SPT=137 DPT=137 LEN=58
May 23 15:02:29 GW kernel: [882798.603455] MNG FORWARD 2 IN=eth0 OUT=tun2 MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=531 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:29 GW kernel: [882798.603509] LAN_BASE1 IN=eth0 OUT=tun2 MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=531 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:29 GW kernel: [882798.603540] MNG POST IN= OUT=tun2 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=531 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:29 GW kernel: [882798.603569] NAT-POST IN= OUT=tun2 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=531 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:31 GW kernel: [882799.762388] MNG PRE IN=tun2 OUT= MAC= SRC=178.62.9.171 DST=10.57.0.10 LEN=48 TOS=0x08 PREC=0x40 TTL=51 ID=0 DF PROTO=TCP SPT=80 DPT=1053 WINDOW=29200 RES=0x00 ACK SYN URGP=0
May 23 15:02:32 GW kernel: [882801.566077] MNG FORWARD 2 IN=eth0 OUT=tun2 MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=543 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:32 GW kernel: [882801.566129] LAN_BASE1 IN=eth0 OUT=tun2 MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=543 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:32 GW kernel: [882801.566159] MNG POST IN= OUT=tun2 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=543 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:32 GW kernel: [882801.651083] MNG PRE IN=tun2 OUT= MAC= SRC=178.62.9.171 DST=10.57.0.10 LEN=48 TOS=0x08 PREC=0x40 TTL=51 ID=0 DF PROTO=TCP SPT=80 DPT=1053 WINDOW=29200 RES=0x00 ACK SYN URGP=0
May 23 15:02:35 GW kernel: [882803.761998] MNG PRE IN=tun2 OUT= MAC= SRC=178.62.9.171 DST=10.57.0.10 LEN=48 TOS=0x08 PREC=0x40 TTL=51 ID=0 DF PROTO=TCP SPT=80 DPT=1053 WINDOW=29200 RES=0x00 ACK SYN URGP=0
May 23 15:02:38 GW kernel: [882807.570744] MNG FORWARD 2 IN=eth0 OUT=tun2 MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=556 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:38 GW kernel: [882807.570796] LAN_BASE1 IN=eth0 OUT=tun2 MAC=00:21:97:c7:d2:79:00:03:ff:20:3c:4c:08:00 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=556 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:38 GW kernel: [882807.570827] MNG POST IN= OUT=tun2 SRC=10.0.1.11 DST=178.62.9.171 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=556 DF PROTO=TCP SPT=1053 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0x4
May 23 15:02:38 GW kernel: [882807.655691] MNG PRE IN=tun2 OUT= MAC= SRC=178.62.9.171 DST=10.57.0.10 LEN=48 TOS=0x08 PREC=0x40 TTL=51 ID=0 DF PROTO=TCP SPT=80 DPT=1053 WINDOW=29200 RES=0x00 ACK SYN URGP=0
May 23 15:02:43 GW kernel: [882811.762116] MNG PRE IN=tun2 OUT= MAC= SRC=178.62.9.171 DST=10.57.0.10 LEN=48 TOS=0x08 PREC=0x40 TTL=51 ID=0 DF PROTO=TCP SPT=80 DPT=1053 WINDOW=29200 RES=0x00 ACK SYN URGP=0
May 23 15:02:51 GW kernel: [882819.961945] MNG PRE IN=tun2 OUT= MAC= SRC=178.62.9.171 DST=10.57.0.10 LEN=48 TOS=0x08 PREC=0x40 TTL=51 ID=0 DF PROTO=TCP SPT=80 DPT=1053 WINDOW=29200 RES=0x00 ACK SYN URGP=0

Да, хотел сказать что в части тунеля через tun0 все работает и rp_filter на интерфейсах tun2 и eth0 установил в 0.

И где у меня кривые руки?

Вы уверены, что rp_filter отклчен, файла в /proc/... содержит 0? И попробуйте отключить его для всех интерфейсов, и для all и default.

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