Сохранение порта назначения TCP-пакетов после выхода через другой локальный порт

NetworkManager участвует в работе с 3G-модемом, но лишь незначительно. Фактическая программа, которая взаимодействует с вашим модемом, называется ModemManager. Я заметил на своем ноутбуке, что он тоже иногда теряет соединение, и тогда

systemctl restart ModemManager

достаточно.

1
16.04.2018, 21:54
2 ответа

Во-первых, NAT в Linux поддерживает состояние. Это означает, что вам не нужны исходящие и входящие правила. Когда трафик возвращается, который был NAT для исходящего трафика, linux автоматически отключит -NAT, который возвращает трафик.

Хотя основная проблема, с которой вы столкнетесь, заключается в том, что сеанс TCP определяется комбинацией:

  • IP-адрес источника
  • исходный порт
  • IP-адрес назначения
  • порт назначения

Исходный IP-адрес уже ограничен одним значением (IP-адрес host1 ). IP-адрес назначения уже представляет собой единственное значение (IP-адреса host2 ). Исходный порт имеет только 2 возможных значения (80 и 443 ). И порт назначения ограничен одним значением (5015 ).
Это означает, что вы можете установить максимум 2 одновременных соединения (, если вы распределяете нагрузку SNAT по 2 портам ). И даже при последовательных подключениях вы, вероятно, столкнетесь с проблемами повторного использования порта, например, если порт находится в состоянии TIME _WAIT.

Тем не менее, если вы действительно хотите попробовать это, правило, которое должно сделать это:

iptables -t nat -I POSTROUTING \
  -d $HOST2_IP -p tcp --dport $TCP_TRAFFIC_PORT \
  -j SNAT --to-source :$PROXY_PORT
1
27.01.2020, 23:43

Знаете ли вы, на каком порту работает приложение на вашем хосте? Если нет, вам нужно сопоставить все исходные порты с 80 или 443

Попробуйте ниже заменить host2ip.

iptables -t nat -A POSTROUTING -p tcp -d host2ip -j SNAT -m multiport  --sports 1:65535 --to-source :443
0
27.01.2020, 23:43

Теги

Похожие вопросы