Вот мой сценарий.
У меня РАБОЧИЙ ДЕЙМОН, получающий пакеты по проприетарному протоколу (установлен на порт 5000
), который безупречно работает более десяти лет.
Но у меня странная проблема.
У меня есть брандмауэр с нашим общедоступным IP-адресом, который выполняет ПЕРЕНАПРАВЛЕНИЕ ПОРТА с IPTABLES следующим образом:
IPT=iptables
LUISANA=192.168.0.1
LOCAL_IF=eth0
INET_IF=eth1
$IPT -t nat -A PREROUTING -i $LOCAL_IF -p tcp --dport 5000 -j DNAT --to $LUISANA:5000
$IPT -t nat -A PREROUTING -i $INET_IF -p tcp --dport 5000 -j DNAT --to $LUISANA:5000
Вот, LOCAL_IF
и INET_IF
два моих сетевых адаптера с локальным и публичным IP-адресами соответственно и LUISANA
это IP-адрес машины, которая находится в локальной сети, на которой запущен мой демон на порту 5000
.
Когда у меня есть сеть с такой конфигурацией, iptables
некоторые входящие пакеты повреждаются при преобразовании, и протокол выходит из строя. Однако, если я сниму этих двоих iptables
и использовать ssh туннель для перенаправления портов протокол работает безупречно.
Итак, мой вопрос: что может вызвать повреждение этого пакета? Может быть, это как-то связано с порядком байтов? (обе машины, FIREWALL и LUISANA используют одну и ту же версию LINUX на одном оборудовании x86).