Page 1 of 14 12311 ... LastLast
Results 1 to 15 of 205

Thread: 2 провайдера с резервированием канала

  1. Question 2 провайдера с резервированием канала

    Задача - организовать на WL-550gE 2 WAN-порта.
    Проблема, с которой столкнулся - отсутствует (?) функционал advanced routing'а в прошивке. Т.е. не получается выполнять команды типа ip rule add ... А без этого получается, что ответ на пакет, пришедший через один WAN-порт уходит через другой WAN-порт. В частности, при этом не вяжутся TCP-сессии (SYN & ACK приходят/уходят через разные порты).
    Как сие решить?
    Last edited by andycpp; 10-01-2007 at 19:13.

  2. #2
    Quote Originally Posted by andycpp View Post
    Задача - организовать на WL-550gE 2 WAN-порта.
    Проблема, с которой столкнулся - отсутствует (?) функционал advanced routing'а в прошивке. Т.е. не получается выполнять команды типа ip rule add ... А без этого получается, что ответ на пакет, пришедший через один WAN-порт уходит через другой WAN-порт. В частности, при этом не вяжутся TCP-сессии (SYN & ACK приходят/уходят через разные порты).
    Как сие решить?
    перекомпилировать прошивку с поддержкой ip advanced routing

  3. Quote Originally Posted by gaaronk View Post
    перекомпилировать прошивку с поддержкой ip advanced routing
    Да ну?

    зы. возможно, стоить включить эту опцию в стандартный вариант прошивки?
    У кого стоит среда, пригодная для рекомпиляции прошивки - сделайте доброе дело, плиз - рекомпилируйте последнюю прошивку от Олега с advanced routing.

  4. #4
    ну да. я себе так и сделал для премиума. у меня три wan - для мирового траффика, для ua-ix и резерв.

  5. Quote Originally Posted by gaaronk View Post
    ну да. я себе так и сделал для премиума. у меня три wan - для мирового траффика, для ua-ix и резерв.
    Если не сложно, выложи ip routing / ip rules / iptables для твоей конфигурации, да и саму прошивку тоже

    зы. я пока OpenWrt юзаю (кстати, веб-интерфейс там очень и очень уже), но, как я понимаю, это не имеет значения.

    Нда, который день чувствую себя идиотом.

    Поставил прошивку Олега с включенным advanced routing'ом (за что ему спасибо).

    Выполняю команды:
    Code:
    robocfg vlan 0 ports "2 3 4 5t" vlan 1 ports "0 5t" vlan 2 ports "1 5t"
    vconfig add eth0 2
    ifconfig 10.0.2.10 broadcast 10.0.2.255 netmask 255.255.255.0 up
    получаю следующее - с роутера пингуется как 10.0.2.10, так и gateway во вторую сеть - 10.0.2.1.

    А вот с компьютера - второй гейтвей уже не пингуется... как так получается?

    Делаю дальше
    Code:
    iptables -R INPUT 3 -j logaccept -i vlan2 -m state --state NEW
    iptables -I FORWARD 2 -j logaccept -i vlan2 -o br0
    iptables -I FORWARD 3 -j logaccept -i br0 -o vlan2
    результат тот же

    решил сделать tcpdump, результат вот:
    Code:
    Это вот с роутера пигную:
    IP 10.0.2.10 > 10.0.2.1: icmp 84: echo request seq 0
    IP 10.0.2.1 > 10.0.2.10: icmp 84: echo reply seq 0
    IP 10.0.2.10 > 10.0.2.1: icmp 84: echo request seq 1
    IP 10.0.2.1 > 10.0.2.10: icmp 84: echo reply seq 1
    arp who-has 10.0.2.1 tell 10.0.2.10
    arp reply 10.0.2.1 is-at 00:20:2b:00:20:2b
    
    Это вот - с компьютера:
    IP 10.0.0.100 > 10.0.2.1: icmp 40: echo request seq 12557
    IP 10.0.0.100 > 10.0.2.1: icmp 40: echo request seq 12813
    не понимаю, в чём проблема?

    зы. и ещё вопрос - я не очень понимаю, а зачем это вот в nat/POSTROUTING?:
    MASQUERADE all -- * br0 10.0.0.0/24 10.0.0.0/24
    Last edited by Omega; 18-08-2014 at 12:01.

  6. #6
    а маскарадинг во вторую сеть включил?

  7. А зачем?

    По-идее, вторая сеть - там свой роутер, который уже и занимается маскарадом на границе с провайдером.

    Т.е. у меня такое впечатление, что просто не роутятся пакеты из 10.0.0.0/24 в 10.0.2.0/24. А вот почему - никак понять не могу

    добавил
    Code:
    iptables -t nat -A POSTROUTING -j MASQUERADE -o vlan2 -s ! 10.0.2.10
    пинги пошли. Тогда вопрос - маскарад ~= SNAT, т.е. замена адреса отправителя. А зачем его заменять в данном случае?

    зы. у меня такое чувство, что отмечание НГ конкретно повлияло на голову... Блин, где я туплю??
    Last edited by andycpp; 09-01-2007 at 09:56.

  8. #8
    ага
    маскарадинг это замена адреса.
    вопрос в том знает ли второй роутер про то что сеть 10.0.0.0/24 надо маршрутизировать не по дефолту в сторону провайдера, а на первый роутер?

  9. Quote Originally Posted by gaaronk View Post
    ага
    маскарадинг это замена адреса.
    вопрос в том знает ли второй роутер про то что сеть 10.0.0.0/24 надо маршрутизировать не по дефолту в сторону провайдера, а на первый роутер?
    второй роутер совсем тяжел в настройке...

    А касательно входящих соединений - я делаю в соотв. с
    http://lartc.org/howto/lartc.rpdb.mu...ks.html#AEN298

    и не работает

    зы. что-то у меня такое чувство, что проблема во втором роутере... Буду исследовать.
    Исследовал - таки да, часть проблем была на втором роутере - Network unreachable эта падла генерировала, пока не перегрузил.

    Но так и осталась проблема с тем, что при работе чс default gateway != WAN-овскому не работают входящие соединения на компьютер

    Врагу не сдаётся наш...

    Решил пойти другим путём - маркировать пакеты и в зависимости от флага отправлять через нужную таблицу роутинга. И нихрена

    Code:
    iptables -t mangle -j MARK --set-mark 82 -d 82.144.206.10  <- wan1 IP
    
    ip route add 82.144.206.0/25 dev vlan1 src 82.144.206.10 table 11
    ip route add 10.0.0.0/24 dev br0 table 11           <- lan
    ip route add 10.0.2.0/24 dev vlan2 table 11        <- wan2 subnet
    ip route add 127.0.0.0/8 dev lo table 11
    ip route add default via 82.144.206.1 table 11     <- wan1 GW
    
    ip rule add fwmark 82 table 11
    
    ip route delete default
    ip route add default gw 10.0.2.1  <- wan2 GP
    и шЫш - входящие соединения не работают

    Вопрос - а откуда iptables берут адрес отправителя при процедуре маскарада? может быть они его берут исходя из значения default gateway? А как же тогда быть?
    Last edited by Omega; 18-08-2014 at 12:02.

  10. #10
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    маскарадинг происходит уже после выбора маршрута, гейтвея и т.д. адрес отправителя должен быть адресом интерфейса, который выбран роутингом.

  11. Quote Originally Posted by Oleg View Post
    маскарадинг происходит уже после выбора маршрута, гейтвея и т.д. адрес отправителя должен быть адресом интерфейса, который выбран роутингом.
    Ок

    Но, тем не менее, почему-то перестаёт работать "виртуальный сервер" после того, как я меняю default gateway (table main) на второй канал... Почему так происходит - никак не могу понять

    Сделал по совету Олега - WAN - дефолтный машрут, и LAN1 (vlan2) - для избранного + виртуальный сервер. Краткое резюме - вирт. сервер не работает (как всегда)
    Далее - от рестарта и до упора - то что я делаю.
    Code:
    [Admin@gate-volia root]$ iptables -nvL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
        0     0 logdrop    all  --  *      *       0.0.0.0/0            0.0.0.0/0          state INVALID
      657 37002 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
        4   240 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0          state NEW
       24  1362 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0          state NEW
        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
        7   819 logdrop    all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain FORWARD (policy ACCEPT 8 packets, 1767 bytes)
     pkts bytes target     prot opt in     out     source               destination
        0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
        0     0 logdrop    all  --  *      *       0.0.0.0/0            0.0.0.0/0          state INVALID
       70 21198 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
        0     0 logdrop    all  --  !br0   vlan1   0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0          ctstate DNAT
        0     0 logdrop    all  --  *      br0     0.0.0.0/0            0.0.0.0/0
    
    Chain OUTPUT (policy ACCEPT 1152 packets, 827K bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain MACS (0 references)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain SECURITY (0 references)
     pkts bytes target     prot opt in     out     source               destination
        0     0 RETURN     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          tcp flags:0x16/0x02 limit: avg 1/sec burst 5
        0     0 RETURN     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          tcp flags:0x17/0x04 limit: avg 1/sec burst 5
        0     0 RETURN     udp  --  *      *       0.0.0.0/0            0.0.0.0/0          limit: avg 5/sec burst 5
        0     0 RETURN     icmp --  *      *       0.0.0.0/0            0.0.0.0/0          limit: avg 5/sec burst 5
        0     0 logdrop    all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain logaccept (0 references)
     pkts bytes target     prot opt in     out     source               destination
        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0          state NEW LOG flags 7 level 4 prefix `ACCEPT '
        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain logdrop (6 references)
     pkts bytes target     prot opt in     out     source               destination
        7   819 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0          state NEW LOG flags 7 level 4 prefix `DROP '
        7   819 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0
    [Admin@gate-volia root]$ iptables -nvL -t nat
    Chain PREROUTING (policy ACCEPT 42 packets, 4648 bytes)
     pkts bytes target     prot opt in     out     source               destination
        7   819 VSERVER    all  --  *      *       0.0.0.0/0            10.0.2.10
    
    Chain POSTROUTING (policy ACCEPT 9 packets, 582 bytes)
     pkts bytes target     prot opt in     out     source               destination
        7  1727 MASQUERADE  all  --  *      vlan1  !10.0.2.10            0.0.0.0/0
        0     0 MASQUERADE  all  --  *      br0     10.0.0.0/24          10.0.0.0/24
    
    Chain OUTPUT (policy ACCEPT 9 packets, 582 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain VSERVER (1 references)
     pkts bytes target     prot opt in     out     source               destination
    [Admin@gate-volia root]$ robocfg vlan 0 ports "2 3 4 5t" vlan 2 ports "1 5t"
    [Admin@gate-volia root]$ vconfig add eth0 2
    [Admin@gate-volia root]$ ifconfig vlan2 up
    [Admin@gate-volia root]$ udhcpc -i vlan2 -r 82.144.206.10 -s /bin/true -b
    udhcpc (v0.9.9-pre) started
    Sending discover...
    Sending select for 82.144.206.10...
    Lease of 82.144.206.10 obtained, lease time 3600
    [Admin@gate-volia root]$ ifconfig -a
    br0       Link encap:Ethernet  HWaddr 00:15:F2:3B:37:04
              inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
              inet6 addr: fe80::215:f2ff:fe3b:3704/10 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1565 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2393 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:105463 (102.9 KiB)  TX bytes:1555945 (1.4 MiB)
    
    vlan0     Link encap:Ethernet  HWaddr 00:15:F2:3B:37:04
              inet6 addr: fe80::215:f2ff:fe3b:3704/10 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1626 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2395 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:129304 (126.2 KiB)  TX bytes:1565673 (1.4 MiB)
    
    vlan1     Link encap:Ethernet  HWaddr 00:15:F2:3B:37:04
              inet addr:10.0.2.10  Bcast:10.0.2.255  Mask:255.255.255.0
              inet6 addr: fe80::215:f2ff:fe3b:3704/10 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:83 errors:0 dropped:0 overruns:0 frame:0
              TX packets:74 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:17195 (16.7 KiB)  TX bytes:21199 (20.7 KiB)
    
    vlan2     Link encap:Ethernet  HWaddr 00:15:F2:3B:37:04
              inet6 addr: fe80::215:f2ff:fe3b:3704/10 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:10 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:2886 (2.8 KiB)  TX bytes:1270 (1.2 KiB)
    
    [Admin@gate-volia root]$ ifconfig vlan2 82.144.206.10 netmask 255.255.255.128 broadcast 82.144.206.127 up
    [Admin@gate-volia root]$ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    10.0.2.1        0.0.0.0         255.255.255.255 UH    0      0        0 vlan1
    82.144.206.0    0.0.0.0         255.255.255.128 U     0      0        0 vlan2
    10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 br0
    10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 vlan1
    82.144.0.0      82.144.206.1    255.255.0.0     UG    0      0        0 vlan2
    127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
    0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 vlan1
    [Admin@gate-volia root]$ iptables -t nat -I POSTROUTING 2 -o vlan2 -s ! 82.144.206.10 -j MASQUERADE
    [Admin@gate-volia root]$ iptables -t nat -A VSERVER -j DNAT -p tcp --dport 25 --to 10.0.0.101:25
    [Admin@gate-volia root]$ iptables -t nat -A VSERVER -j DNAT -p tcp --dport 80 --to 10.0.0.100:80
    [Admin@gate-volia root]$ ip link set br0 up
    [Admin@gate-volia root]$ ip addr add 10.0.0.1/24 brd + dev br0
    RTNETLINK answers: File exists
    [Admin@gate-volia root]$ ip rule add prio 50 table main
    [Admin@gate-volia root]$ ip route del default table main
    [Admin@gate-volia root]$ ip link set vlan2 up
    [Admin@gate-volia root]$ ip addr flush dev vlan2
    [Admin@gate-volia root]$ ip addr add 82.144.206.10/25 brd 82.144.206.127 dev vlan2
    [Admin@gate-volia root]$ ip link set vlan1 up
    [Admin@gate-volia root]$ ip addr flush dev vlan1
    [Admin@gate-volia root]$ ip addr add 10.0.2.10/24 brd 10.0.2.255 dev vlan1
    [Admin@gate-volia root]$ ip rule add prio 201 from 82.144.206.0/25 table 201
    [Admin@gate-volia root]$ ip route add default via 82.144.206.1 dev vlan2 src 82.144.206.10 proto static table 201
    [Admin@gate-volia root]$ ip route append prohibit default table 201 metric 1 proto static
    [Admin@gate-volia root]$ ip rule add prio 202 from 10.0.2.0/24 table 202
    [Admin@gate-volia root]$ ip route add default via 10.0.2.1 dev vlan1 src 10.0.2.10 proto static table 202
    [Admin@gate-volia root]$ ip route append prohibit default table 202 metric 1 proto static
    [Admin@gate-volia root]$ ip rule add prio 222 table 222
    [Admin@gate-volia root]$ ip route add default table 222 proto static via 10.0.2.1 dev vlan1
    [Admin@gate-volia root]$ ip route add 82.144.0.0/16 via 82.144.206.1
    [Admin@gate-volia root]$ ip route get 82.144.25.25
    82.144.25.25 via 82.144.206.1 dev vlan2  src 82.144.206.10
        cache  mtu 1500 advmss 1460
    [Admin@gate-volia root]$
    В каком месте я дурак?
    Last edited by Omega; 18-08-2014 at 12:02.

  12. #12
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Всё остальное работает?

    Сейчас не хватает правила, которое собственно и разрешит виртуальные сервера для vlan2.

    Что-то типа

    iptables -t nat -A PREROUTING -d 1.1.1.1 -j VSERVER

    1.1.1.1 нужно заменить на адрес vlan2.

  13. Да, остальное работает. Добавил правило - не помогло

    Если кратко, что я делаю после ребута (настройка в веб-интерфейсе - 10.0.2.10 - Static IP):
    Code:
    robocfg vlan 0 ports "2 3 4 5t" vlan 2 ports "1 5t"
    vconfig add eth0 2
    ifconfig vlan2 up
    udhcpc -i vlan2 -r 82.144.206.10 -s /bin/true -b
    ifconfig vlan2 82.144.206.10 netmask 255.255.255.128 broadcast 82.144.206.127 up
    iptables -t nat -I POSTROUTING 2 -o vlan2 -s ! 82.144.206.10 -j MASQUERADE
    iptables -t nat -A VSERVER -j DNAT -p tcp --dport 25 --to 10.0.0.101:25
    iptables -t nat -A VSERVER -j DNAT -p tcp --dport 80 --to 10.0.0.100:80
    iptables -t nat -R PREROUTING 1 -j VSERVER -d 82.144.206.10
    ip route add 82.144.0.0/16 via 82.144.206.1
    И вот так выглядит активность, когда гугль пытается зайти на 82.144.206.10:80
    Code:
    [Admin@gate-volia root]$ tcpdump -i vlan2 "not port 23"
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on vlan2, link-type EN10MB (Ethernet), capture size 68 bytes
    00:21:20.453788 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    00:21:21.456722 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    00:21:23.467582 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    00:21:27.474981 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    00:21:35.484796 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    00:21:51.492311 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    00:21:59.097842 IP washer.volia.net.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length: 302
    00:22:23.497599 IP nf-out-f136.google.com.56396 > smart-group.biz.www: S 1169836405:1169836405(0) win 8190 <mss 1460>
    ...
    До меня (кажется) начало доходить, почему проблема получается.
    Решение о том, куда роутить пакет, принимается до nat/POSTROUTING

    Допустим, пакет пришел с 4.4.4.4 на 82.144.206.10:80, его DNAT'нуло на 10.0.0.100:80, и генерируется ответный пакет. Роутер его видит как из br0 S:10.0.0.100, D:4.4.4.4. И не знает, что его надо отроутить назад на 82.144.206.1, и роутит по дефолту на 10.0.2.1. Потом уже срабатывает SNAT и заменяет S10.0.0.100 на S10.0.2.10. Вот и получается разрыв в цепочке.

    Есть чувство, что нужно использовать CONNMARK, чтобы по первому пакету отмаркировать и все относящиеся к нему, а дальше уже по fwmark определять, куда роутить. Но оно есть начиная с 2.6 ядра. Может есть ещё какие варианты? Хелп!

    Хотя нашел вот - kernel-module-ipt-conntrack_2.4.22.l2.3r63-r17_ixp4xxbe.ipk... но ставить боязно, да и не факт, что встанет.
    Last edited by Omega; 18-08-2014 at 11:59.

  14. #14
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    А причём тут гугль? Он находится _вне_ сети 82.144.0.0/16.

  15. гугль - это просто пример того, что происходит, когда приходит входящий коннект откуда-нить на 82.144.206.10. Syn приходит, а Syn-ack-ответ отсылается с другого ИП И, соотв, Tcp не получается.

Page 1 of 14 12311 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •