То, что я пытаюсь сделать, это сбросить любые пакеты на определенный порт UDP, за исключением пакетов из моей защищенной подсети 10.8.0.0/24.

iptables -t nat -A --src 10.8.0.0/24 -p udp --destination-port 63210 -j ACCEPT

Я получаю эту ошибку Bad argument: 10.8.0.0/24

Я не понимаю, почему это не работает ...

  • Почему эта команда говорит, что IP - плохой аргумент?
  • Как отбросить любые другие пакеты, находящиеся вне подсети?
  • Должен ли я использовать таблицу NAT?
  • Как этого добиться?

Я нашел решение, как это:

ОБНОВИТЬ

iptables -N xchain
iptables -A xchain --source 10.8.0.0/24 -j ACCEPT
iptables -A xchain -j DROP
iptables -I INPUT -p udp --dport 63210 -j xchain

После применения этого я не могу получить доступ к порту с любого IP ...

ПРОБЛЕМА У меня есть сервер OpenVPN, установленный на интерфейсе tun0, пересылающий пакеты в eth0 следующим образом:

iptables -I FORWARD -i tun0 -o eth0 \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
          -s 10.8.0.0/24 -j MASQUERADE

Вопрос в том, как отлавливать трафик tun0 и фильтровать его вместо eth0, когда IP-адреса становятся реальными.

1 ответ1

0

Вместо того, чтобы пытаться заблокировать таблицу NAT, попробуйте таблицу FORWARD.

iptables -A FORWARD --src 10.8.0.0/24 -p udp --destination-port 63210 -j ПРИНЯТЬ

iptables -A FORWARD -p udp --destination-port 63210 -j DROP

Это примет пакеты для вашей локальной сети и отбросит все остальное (для этого порта), которое пересылается через маршрутизатор - даже если задействован NAT. Обратите внимание, что он не будет перехватывать запросы, инициирующие или завершающие ON самого маршрутизатора, для этого вы будете использовать INPUT и / или OUTPUT, а не прямую цепочку.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .