Я пытаюсь выполнить простую пересылку пакетов на сервере Ubuntu 14.04 (IP = 192.168.36.217) с помощью iptables. Я хочу принимать входящие пакеты, предназначенные для сервера на конкретном порту, и переписывать их в новый пункт назначения с указанным портом (HTTPS) и исходным IP-адресом, установленным на этот сервер, и исходным портом, настроенным с использованием NAT, поэтому его можно отменить на возвратных пакетах.
Таблицы mangle, raw и security пусты. Все правила всех таблиц имеют значение по умолчанию ACCEPT. У меня есть 1 правило DNAT в PREROUTING и 1 правило SNAT в POSTROUTING. Затем я добавил некоторые правила LOG, чтобы проверить, что происходит. Вот как выглядят таблицы nat и filter:
filter Таблица
Chain INPUT (policy ACCEPT 249 packets, 15888 bytes)
num pkts bytes target prot opt in out source destination
1 143 8348 LOG tcp -- * * 10.15.4.115 0.0.0.0/0 LOG flags 0 level 4 prefix "l++: INP of interest: "
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 169 packets, 12148 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 LOG tcp -- * * 0.0.0.0/0 45.45.45.45 LOG flags 0 level 4 prefix "l++: filter\OUTPUT : "
filter Таблица
Chain PREROUTING (policy ACCEPT 2762 packets, 279K bytes)
num pkts bytes target prot opt in out source destination
1 33 1672 LOG tcp -- * * 10.15.4.115 0.0.0.0/0 tcp dpt:65001 LOG flags 0 level 4 prefix "l++: nat PRE "
2 15 760 DNAT tcp -- * * 10.15.4.115 0.0.0.0/0 tcp dpt:65001 to:45.45.45.45:45001
3 0 0 LOG tcp -- * * 10.15.4.115 0.0.0.0/0 LOG flags 0 level 4 prefix "l++: nat PRE BOT"
Chain INPUT (policy ACCEPT 263 packets, 46239 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 LOG all -- * * 10.15.4.115 0.0.0.0/0 LOG flags 0 level 4 prefix "l++: nat INP: "
Chain OUTPUT (policy ACCEPT 60 packets, 4285 bytes)
num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 60 packets, 4285 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 LOG tcp -- * * 10.15.4.115 0.0.0.0/0 LOG flags 0 level 4 prefix "l++: nat POST end: "
2 0 0 SNAT tcp -- * em1 10.15.4.115 0.0.0.0/0 to:192.168.36.217
3 0 0 LOG tcp -- * em1 192.168.36.217 0.0.0.0/0 LOG flags 0 level 4 prefix "l++: nat POST after SNAT: "
4 0 0 LOG tcp -- * em1 10.15.4.115 0.0.0.0/0 LOG flags 0 level 4 prefix "l++: nat POST after SNAT what"
Когда я test (от 10.15.4.115: telnet 192.168.36.217 65001), это все, что я вижу в журнале системных сообщений:
May 19 15:20:40 LDAP-Proxy kernel: [1891508.926283] l++: nat PRE IN=em1 OUT=
MAC=<omitted> SRC=10.15.4.115 DST=192.168.36.217 LEN=52 TOS=0x00 PREC=0x00
TTL=127 ID=21164 DF PROTO=TCP SPT=59394 DPT=65001 WINDOW=64512 RES=0x00 SYN
URGP=0
Я полагаю, что у меня есть правило PREROUTING, в которое включены правила LOG. Пакет входит, попадает в правило DNAT и быстро исчезает.
Я с радостью получу любые предложения, идеи, дикие догадки об этом неправильном поведении. Спасибо!