Ответы пользователя по тегу Iptables
  • Какое решение killswitch для iptables лучше?

    hint000
    @hint000
    у админа три руки
    Нет здесь правил для INPUT с действием DROP, а значит и нет смысла добавлять что-то в INPUT с действием ACCEPT, оно и так по-умолчанию будет. Можно написать и более лаконично:

    iptables --flush
    iptables --delete-chain
    iptables -t nat --flush
    iptables -t nat --delete-chain
    iptables -P OUTPUT DROP
    iptables -A OUTPUT -j ACCEPT -o lo
    iptables -A OUTPUT -j ACCEPT -p udp --dport 1194
    iptables -A OUTPUT -j ACCEPT -o tun+

    Отличие в том, что можно подключаться к любому OpenVPN-серверу, т.к. ограничение задано по номеру порта, но не по адресу сервера. Также запись tun+ позволит работать через любой туннель, если будет создано несколько туннелей (tun0, tun1, tun2,..) - ну мало ли как и что захочется добавить в будущем.
    Ответ написан
    5 комментариев
  • Как перенаправить трафик с помощью iptables?

    hint000
    @hint000
    у админа три руки
    POSTROUTING не требуется?
    Требуется, если 6.6.6.6:1000 не является шлюзом для 1.1.1.1:9999 (а по описанию задачи не является).
    iptables -t nat -A POSTROUTING -p tcp --dport 1000 -j SNAT --to-source 6.6.6.6
    Без этого будет несимметричный маршрут, клиент пошлёт запрос на 6.6.6.6, а получит ответ напрямую от 1.1.1.1 (и отправит этот ответ в мусор).
    Ответ написан
  • Как работает Iptables?

    hint000
    @hint000
    у админа три руки
    второй вопрос. Посложнее.
    На самом деле не сложнее, гуглится за 10 секунд:
    https://serverfault.com/questions/594835/what-is-t...
    -A PREROUTING -d x.x.x.x -p udp --dport 1100:1200 -j DNAT --to-destination y.y.y.y

    А по первому вопросу попробуйте так
    -A PREROUTING -i eth0 -p tcp -m multiport ! --dports 22,1100:1200 -j DNAT --to-destination 10.200.1.5

    Не уверен, что проканает multiport с отрицанием, попробуйте, если не проканает, то придумаем другой вариант.
    (фрагмент -d 0.0.0.0/32 я выкинул, как не несущий смысла)

    Upd.:
    Вариант с multiport без отрицания:
    -A PREROUTING -i eth0 -p tcp -m multiport --dports 1:21,23:1100,1200:65535 -j DNAT --to-destination 10.200.1.5


    Вариант без multiport и без отрицания, уже приходится раскидывать на три правила вместо одного:
    -A PREROUTING -i eth0 -p tcp --dport 1:21 -j DNAT --to-destination 10.200.1.5
    -A PREROUTING -i eth0 -p tcp --dport 23:1100 -j DNAT --to-destination 10.200.1.5
    -A PREROUTING -i eth0 -p tcp --dport 1200:65535 -j DNAT --to-destination 10.200.1.5


    Upd.:
    Здесь говрится, что multiport не принимает одновременно список и диапазон: https://www.opennet.ru/base/net/iptables_treasures... вместо него предлагается расширение mport
    -A PREROUTING -i eth0 -p tcp -m mport ! --dports 22,1100:1200 -j DNAT --to-destination 10.200.1.5
    Ответ написан
    Комментировать
  • Как перенаправить трафик с 1 машины на 2?

    hint000
    @hint000
    у админа три руки
    а нужно что бы получал от айпи клиента
    Это так не работает. Объясняю почему нет.
    Если 2.x.x.x получит от 123.x.x.x, то он и ответить должен на 123.x.x.x.
    А если он ответит на 123.x.x.x, то 123.x.x.x получит ответ от 2.x.x.x, а запрос-то он посылал на 1.x.x.x, так что ответ от какого-то левого сервера улетит в мусор.

    Напишите, какую задачу пытаетесь решить таким способом, авось найдётся решение получше. Например, обратный прокси, если условия задачи позволяют.
    Ответ написан
    3 комментария
  • Трассировка в IPTables?

    hint000
    @hint000
    у админа три руки
    https://gist.github.com/egernst/2c39c6125d916f8caa...
    Note: If the matching rule number (3 for prerouting chain of raw table) is greater than the number of rules there, it means there wasn't a match for any of the rules and it is just returning to whomever called the chain.

    https://stackoverflow.com/questions/41748330/how-t...
    came to this question too and dit some testing: policy:5 seem to refer to the fictive last "rule" of your chain, where the policy is considered. so loonyuni's traced chain should have 4 explicit rules in it.

    Иными словами, policy означает, что сработало policy (правило по-умолчанию для цепочки).
    А policy:2 означает лишь то, что в цепочке было одно правило и policy оказалось последним и вторым. Если бы было четыре правила в цепочке, то где-нибудь в логе появилось бы policy:5.
    Ответ написан
    Комментировать
  • Почему трафик подсети не идет в tun0?

    hint000
    @hint000
    у админа три руки
    Согласно правилу
    -A POSTROUTING -s 10.101.0.0/16 -o tun0 -j MASQUERADE
    трафик ipsec клиентов должен уходить в tun0

    Нет. Согласно этому правилу, если трафик уйдёт в tun0, то его следует отмаскарадить. А если не в tun0 - то не следует маскарадить.

    iptables вообще не управляет непосредственно тем, на какой интерфейс направить пакет. Опосредовано - через DNAT.
    Выбор сетевого интерфейса - это задача маршрутизации, а не iptables.
    Ответ написан
  • Как сделать FORWARD с одного ip на другой через iptables?

    hint000
    @hint000
    у админа три руки
    Запутанная формулировка вопроса. То ли приведённые правила у вас на роутере, то ли эти правила на первом сервере...
    Но в двух словах - гуглите по словам "hairpin NAT".
    Ответ написан
    Комментировать
  • Как запретить подключение на сервер с IP сервера?

    hint000
    @hint000
    у админа три руки
    iptables -I INPUT -s 11.22.33.44 -p tcp --dport 5566 -j DROP
    iptables -I INPUT -s 11.22.33.44 -p udp --dport 5566 -j DROP
    iptables -I INPUT -s 127.0.0.1/8 -p tcp --dport 5566 -j DROP
    iptables -I INPUT -s 127.0.0.1/8 -p udp --dport 5566 -j DROP

    здесь 11.22.33.44 - IP-адрес сервера
    5566 - номер порта (если используется только UDP или только TCP, то два ненужных правила убрать).
    Ответ написан
    Комментировать
  • Как пробросить пакеты на одном интерфейсе через iptables?

    hint000
    @hint000
    у админа три руки
    Недостаточно данных, чтобы дать точный ответ. Но можно угадать. :)
    Вариант (1) - несимметричный маршрут:
    Отправляете пакеты с машины, имеющей адрес 192.168.243.x.
    Пакеты имеют адрес источника 192.168.243.x.
    31.130.115.27 отправляет ответ на 192.168.243.x.
    192.168.243.x неожиданно получает ответ от 31.130.115.27, хотя ждал ответ от 192.168.243.131; Неожиданный ответ выбрасывается в мусорку.
    Вариант (2) - не прописана маршрутизация:
    31.130.115.27 вообще видит сеть 192.168.243.0/24?

    В целом правила корректные, но чего-то ещё не хватает. Нужны подробности, чтобы понять, чего именно не хватает.
    Ответ написан
    3 комментария
  • Можете покритиковать правила iptables?

    hint000
    @hint000
    у админа три руки
    Насчёт ssh есть странность.
    Если сервер выставлен непосредственно в Интернет, то нет смысла в --mac-source при доступе извне.
    Если же сервер в локальной сети и доступ извне только через роутер, тогда непонятно, зачем ssh на нестандартном порту, ведь для доступа извне на роутере всё равно потребуется проброс порта.

    Далее, Samba и CUPS не будут работать, потому что разрешен только INPUT, а OUTPUT по-умолчанию DROP. Вообще, дропать OUTPUT по-умолчанию - не лучшая идея, IMHO. Разве что речь шла бы о компьютере в застенках спецслужбы :)
    Ответ написан
    3 комментария
  • Как для iptables настроить looback?

    hint000
    @hint000
    у админа три руки
    Да, нужно разрешать. Желательно в самом начале цепочки INPUT, чтобы по ошибке не отфильтровать каким-то запрещающим правилом.
    -A INPUT -i lo -j ACCEPT
    Ответ написан
    Комментировать
  • Как проложить маршрут от vps к серверу в локальной сети?

    hint000
    @hint000
    у админа три руки
    Вам нужно делать два проброса.
    Первый с VPS до OpenWRT (например, XXX.XXX.XXX.XXX:2222 -> 10.9.8.2:2222).
    Второй с OpenWRT до локального сервера (10.9.8.2:2222 -> 192.168.0.7:22).
    Судя по P.S., вы это уже сделали.
    Предположу, проблема в маршрутизации. OpenWRT должен иметь шлюз по-умолчанию 10.9.8.1. Проверьте, при подключении VPN весь интернет-трафик должен идти через VPN.
    Ответ написан
  • Как завернуть трафик DHCP с нестандартного 6767 порта на 67 порт DHCP Mikrotik?

    hint000
    @hint000
    у админа три руки
    iptables -A INPUT -p udp --dport 6767 -j ACCEPT
    iptables -t nat -A PREROUTING -p udp --dport 6767 -j REDIRECT --to-port 67

    соответственно, в переводе с человеческого на микротиковский:
    /ip firewall filter add action=accept chain=input dst-port=6767 protocol=udp
    /ip firewall nat add action=redirect chain=dstnat dst-port=6767 protocol=udp to-ports=67

    P.S. Если есть какие-то запрещающие правила, то эти ставьте раньше запрещающих (это если не слишком вдаваться в подробности, а если вдаваться, то нужно внимательно изучать все имеющиеся правила, как в filter, так и в nat).
    Ответ написан
  • Как корректно настроить проброс портов iptables?

    hint000
    @hint000
    у админа три руки
    Почти правильно.
    iptables -t nat -A PREROUTING -p tcp -d 192.168.1.70 --dport 80 -j DNAT --to 192.168.1.45:31280

    iptables -t nat -A OUTPUT -p tcp -d 192.168.1.70 --dport 80 -j DNAT --to 192.168.1.45:31280
    Ответ написан
  • Как перенаправить трафик с одного дц на другой?

    hint000
    @hint000
    у админа три руки
    Нужно два правила iptables. Первое переадресовывает, второе обеспечивает симметричность маршрута.
    -A PREROUTING -d ip1 -p tcp -m multiport --dports 123,1234 -j DNAT --to-destination ip2
    -A POSTROUTING -d ip2 -p tcp -m multiport --dports 123,1234 -j SNAT --to-source ip1
    Порты нужно указывать конкретные. Либо отдельно прописывать, что трафик с вашего рабочего адреса не нужно переадресовывать. Если не указать ограничения по портам или по адресам, то вы пробросите весь трафик, и сам первый VPS станет вам недоступен.
    Ответ написан
    Комментировать
  • Как пустить PREROUTING iptables через фильтр?

    hint000
    @hint000
    у админа три руки
    хочу попробовать закрыть все публичные порты и открывать их для каждого пользователя индивидуально.
    Это называется доступом по белому списку. Ниже пример, как можно это сделать. Только у меня это не в формате исполняемого шелл-скрипта, а в формате конфига, загружаемого командой iptables-restore.
    # example
    
    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    
    # WhiteList (разрешенные внешние клиенты)
    -N Wht
    -A Wht -s 1.2.3.4      -j RETURN
    -A Wht -s 2.3.4.5      -j RETURN
    # разрешенная подсеть
    -A Wht -s 3.4.5.0/24 -j RETURN
    # ...
    
    # go to hell
    -A Wht  -j DNAT --to-destination 192.168.99.99
    
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 22 -j Wht
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT
    
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 80 -j Wht
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.18:80
    
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 8080 -j Wht
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 8080 -j DNAT --to-destination 192.168.42.19:80
    
    -A PREROUTING -s 192.168.0.0/16 -j ACCEPT
    
    COMMIT

    поясню насчёт 192.168.99.99 - этот адрес я выбрал (произвольно, можно любой другой) в качестве "чёрной дыры", куда можно невозбранно отправлять ненужные пакеты. Прописана "дыра" командой ip route add blackhole 192.168.99.99
    Ответ написан
    1 комментарий
  • Почему возникает ошибка iptables-restore?

    hint000
    @hint000
    у админа три руки
    Проверьте, что после COMMIT перевод строки есть.
    Ответ написан
    1 комментарий
  • Как исправить iptables?

    hint000
    @hint000
    у админа три руки
    Ошибка в 285 строчке - это вторая с конца команда "esac"
    Ну если считать строки по выложенному скрипту, то 285 строка - это
    [ -e "$VAR_SUBSYS_IPTABLES" ] && restart, а вовсе не "esac"

    При беглом просмотре одну ошибку в скрипте я заметил: строки 125-126 надо удалить, это ошибочная копипаста следующих за ними строк
    $IPTABLES -t mangle -P PREROUTING $policy \
                        && $IPTABLES -t mangle -P POSTROUTING $policy \
    
                    $IPTABLES -t mangle -P PREROUTING $policy \
                        && $IPTABLES -t mangle -P POSTROUTING $policy \
                        && $IPTABLES -t mangle -P INPUT $policy \
                        && $IPTABLES -t mangle -P OUTPUT $policy \
                        && $IPTABLES -t mangle -P FORWARD $policy \
                        || let ret+=1
                    ;;
    Ответ написан
  • Как пробросить порт в ubuntu?

    hint000
    @hint000
    у админа три руки
    добавить
    -A FORWARD -d 192.168.42.10 -p tcp -m tcp --dport 3389 -j ACCEPT
    в любом месте выше этой строки:
    -A FORWARD -j DROP
    обратите внимание, что в форварде порт уже проброшенный, т.е. 3389, а не 55658
    Ответ написан
    2 комментария