SNAT DNAT в iptables

Задача: Полученный UDP-пакет на 192.168.100.101 на порт 4444 (интерфейс eth0) перенаправить на 192.168.1.7, порт 4444 c ip адреса 192.168.1.101 интерфейса eth1. Сделать это с испльзованием iptables (а именно в таблице nat цепочки PREROUTING и POSTROUTING).

Для этого я делаю следующее:

  1. на одном интерфейсе выставляю 192.168.100.101/24 (eth0), на втором 192.168.1.101/24 (eth1)
  2. добавляем LOG в цепочки, чтобы иметь хоть какой-то контроль прохождения пакетов. Нас интересуют цепочки PREROUTING и POSTROUTING в таблице nat, INPUT и FORWARD в таблице filter, ну и PREROUTING с FORWARD таблицы mangle

Сейчас (без использования DNAT и SNAT), получив UDP-пакет на порт 4444, мы увидим (в DMESG), что он прошёл по следующему пути: PREROUTING(mangle)->PREROUTING(nat)->INPUT(filter)->... и так до локального процесса. здесь все верно.

  1. Теперь добавим DNAT:

    sudo iptables -t nat -A PREROUTING -d 192.168.100.101 -p udp --dport 4444 --to-destination 192.168.1.7:4444

сейчас при принятии пакета на порт 44444 следующая цепочка: PREROUTING(mangle)->PREROUTING(nat)->???? теперь не заходит в INPUT(filter) что верно, но и не заходит FORWARD(mangle) и FORWARD(filter). ПОЧЕМУ? Естественно пакет не был доставлен на 192.168.1.7

  1. разрешим отправку данных попавших на интерфейс eth0 FORWARD

    sudo iptables -A FORWARD -i eth0 -d 192.168.100.101 -p udp --dport 4444 -j ACCEPT

  2. подменим IP источника UDP-пакета

    sudo iptables -t nat -A POSTROUTING -p udp --dport 4444 -j SNAT --to-source 192.168.1.101:4455

но ситуацию это не изменит: PREROUTING(mangle)->PREROUTING(nat)->???? я не попадаю в цепочку FORWARD таблиц mangle и filter. Почему? В идеале должно же быть (учитывая логи которые написаны) PREROUTING(mangle)->PREROUTING(nat)->FORWARD(mangle)->FORWARD(filter)->POSTROUTING(nat) так? или для маршрутицации нужно что-то разрешить еще или доустановить? ufw отключен. Линуха работает в виртуалке с двумя виртуальными интерфейсами в режиме моста.

Спасибо

Ответы (0 шт):