Назад | Перейти на главную страницу

Iptables DNAT однопортовый

Я пытаюсь перенаправить один порт на локальный сервер через IPtables. На данный момент у меня действуют следующие правила:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 55555 -j DNAT --to-destination 10.188.44.125:3306
iptables -t nat -A POSTROUTING -j MASQUERADE

Когда у меня есть эти правила, мой процесс rsync ssh не работает. Я предполагаю, что здесь что-то противоречивое, но я не уверен, что именно. Какие-либо предложения? Спасибо!

Обновление: вот правила, которые у меня есть, чтобы разрешить соединение rsync через ssh. Моя политика ввода отключена. Другие политики настроены на принятие.

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -i lo -j ACCEPT

Обновление 2

Вот результаты iptables-save для нат:

*nat
:PREROUTING ACCEPT [8:468]
:INPUT ACCEPT [7:408]
:OUTPUT ACCEPT [2:134]
:POSTROUTING ACCEPT [0:0]
[0:0] -A PREROUTING -p tcp -m tcp --dport 53306 -j   DNAT --to-destination 10.183.42.125:3306
[2:134] -A POSTROUTING -j MASQUERADE
COMMIT

В ваших правилах DNAT и MASQUERADE отсутствует спецификация интерфейса. Без них они пытаются работать над все трафик в обоих направлениях, а это не то, что вам нужно.

Правило DNAT должно указывать входящий интерфейс (например, -i enp2s1), по которому приходит соединение; обычно это интерфейс с выходом на WAN / Internet. И правило SNAT или MASQUERADE должно указывать исходящий интерфейс (например, -o enp2s1) по которому отправляется трафик; опять же, это обычно интерфейс, обращенный к WAN / Internet.