Премини към съдържанието
synner

Q: Настройка на iptables + iproute2, маршрутизация чрез маркиране.

    Препоръчан отговор


    Здравейте, манияци

    (реалните IP адреси и портове са сменени за илюстрацията).

    Имам Debian Jessie сървър A с публичен адрес 77.77.77.77.
    Имам Debian Jessie сървър B с публичен адрес 77.77.78.78 (различен subnet).

    Сървър B слуша на TCP 3333.
    Искам връзки към A:13333 да бъдат пренасочвани към B:3333

    Пробвах:

    iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 13333 -j DNAT --to-destination 77.77.78.78:3333


    Но не работи, защото когато B отговори на клиента, клиентът не знае за пренасочването от A->B и отговаря с TCP RST.
    Ако добавя и

    iptables -t nat -A POSTROUTING -d 77.77.78.78 -p tcp --dport 3333 -j MASQUERADE


    номерът става, но тогава в логовете на B не виждам истинския адрес на клиента, което ми е проблем.

    За това решавам да правя рутиране с отделна таблица и маркиране на пакети/връзки.
    Понеже A и B са в различни мрежи, решавам да вдигна IP-IP тунел:


    На сървър A:

    ip tunnel add tunnel0 mode ipip remote 77.77.78.78 local 77.77.77.77 ttl 32
    ip link set tunnel0 up
    ip addr add 192.168.254.1/30 dev tunnel0

    На сървър B:

    ip tunnel add tunnel0 mode ipip remote 77.77.77.77 local 77.77.78.78 ttl 32
    ip link set tunnel0 up
    ip addr add 192.168.254.2/30 dev tunnel0

    ICMP ping минава.

    Сега почват iptables + iproute2 магиите.
    На сървър B:

    iptables -t mangle -A PREROUTING -i tunnel0 -p tcp --dport 3333 -j MARK --set-xmark 0x1/0xffffffff
    echo 1 rt_tunnel0 >> /etc/iproute2/rt_tables
    ip route add default via 192.168.254.1 dev tunnel0 table rt_tunnel0
    ip rule add from all fwmark 1 table rt_tunnel0

    На сървър A:

    iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 13333 -j DNAT --to-destination 192.168.254.2:3333


    Сега като пусна един "tcpdump -i tunnel0" на server B, виждам, че пристигат TCP SYN по тунела, ма сървър B не е*ава да върне TCP ACK.

    Къде бъркам? Нещо по return path-а ли?

    Благодаря предварително!

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    преди 17 часа, synner написа:

    iptables -t mangle -A PREROUTING -i tunnel0 -p tcp --dport 3333 -j MARK --set-xmark 0x1/0xffffffff

    трябва да маркираш изходящия поток от порта 3333 с OUTPUT, не входящия, и тогава да се рутира от таблицата rt_tunnel0 към тунела. В случая, изходящия поток от порта се рутира от main таблицата, защото не е маркиран и няма mapping между маркирания поток и таблицата rt_tunnel0, затова не виждаш tcp ack на tunnel0. На сървър А добави маскарадинг, квото дойде от тунела да го натва.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    В крайна сметка махнах iptables rules от сървър B и го направих само с iproute2:

    root@debian ~ # echo 250 rt_tunnel0 >> /etc/iproute2/rt_tables
    root@debian ~ # ip route add default via 192.168.254.1 dev tunnel0 src 192.168.254.2 table rt_tunnel0
    root@debian ~ # ip route add 192.168.254.0/30 dev tunnel0 src 192.168.254.2 table rt_tunnel0
    root@debian ~ # ip rule add iif tunnel0 table rt_tunnel0
    root@debian ~ # ip rule add from 192.168.254.2 table rt_tunnel0

    И добавих един SNAT на сървър A.

    Сега въпросът ми е как да напратя тези настройки да се запазват при reboot?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    преди 19 часа, synner написа:

    В крайна сметка махнах iptables rules от сървър B и го направих само с iproute2:

    
    root@debian ~ # echo 250 rt_tunnel0 >> /etc/iproute2/rt_tables
    root@debian ~ # ip route add default via 192.168.254.1 dev tunnel0 src 192.168.254.2 table rt_tunnel0
    root@debian ~ # ip route add 192.168.254.0/30 dev tunnel0 src 192.168.254.2 table rt_tunnel0
    root@debian ~ # ip rule add iif tunnel0 table rt_tunnel0
    root@debian ~ # ip rule add from 192.168.254.2 table rt_tunnel0

    И добавих един SNAT на сървър A.

    Сега въпросът ми е как да напратя тези настройки да се запазват при reboot?

    създаваш изпълним скрипт с тях и го поставяш в /etc/network/if-up.d

     

    • Харесва ми 1

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    • Горещи теми в момента

    • Подобни теми

      • от smash3d
        Здравейте,
        Имам нужда от помощ .
        Работна станция : Microsoft Windows 10
        Защитна стена : Linux Centos iptables
        Достъп до : Microtik

        Опитвам се да направя PPTP VPN връзка с една фирма, но явно моя firewall ( iptables ) го спира .
        Трябва ли изрично да кажа на Firewall-a да пуска този PPTP , защото когато се опитвам да се свържа VPN връзката ми иска име и парола , но след като ги въведа получавам :
        A connection to the remore computer could not be established, so the port used for this connection was closed.
        От тази грешка разбирам, че трябва да отворя порт в защитната стена . 
        След малко четене по нета разбрах, че PPTP  изпозлва 1723 и GRE . Тях съм ги отворил като Accept INCOME rule  , както и като Accept OUTPUT rule в защитната стена .
        Но въпреки това проблема продължава. 
        Трябва ли още нещо да отварям като портове и къде ?
      • от rihijt0erfjkmgt
        Зравейте!
        Някой може ли да ми даде цялата защита, която се слага в iptables за филтриране на UDP пакетите. Не искам да ми блокирва UDP пакетите а просто да блокирва флудера. Тоест при някакъв лимит да го блокирва и т.н. Благодаря Ви!
    • Разглеждащи в момента   0 потребители

      Няма регистрирани потребители разглеждащи тази страница.

    • Дарение

    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.