NetworkManager участвует в работе с 3G-модемом, но лишь незначительно. Фактическая программа, которая взаимодействует с вашим модемом, называется ModemManager. Я заметил на своем ноутбуке, что он тоже иногда теряет соединение, и тогда
systemctl restart ModemManager
достаточно.
Во-первых, NAT в Linux поддерживает состояние. Это означает, что вам не нужны исходящие и входящие правила. Когда трафик возвращается, который был NAT для исходящего трафика, linux автоматически отключит -NAT, который возвращает трафик.
Хотя основная проблема, с которой вы столкнетесь, заключается в том, что сеанс TCP определяется комбинацией:
Исходный 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
Знаете ли вы, на каком порту работает приложение на вашем хосте? Если нет, вам нужно сопоставить все исходные порты с 80 или 443
Попробуйте ниже заменить host2ip.
iptables -t nat -A POSTROUTING -p tcp -d host2ip -j SNAT -m multiport --sports 1:65535 --to-source :443