URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5518
[ Назад ]

Исходное сообщение
"Проброс портов в iptables"

Отправлено Majestyk , 12-Фев-20 14:38 
Всем добрый день! Помогите пожалуйста разобраться с правильным написанием правила проброса портов.

Есть сервер в локальной сети на который мы посылаем какие-то пакеты и нужно чтобы он пробрасывал эти пакеты на другой сервер в локальной сети с таким же портом.

где:
10.20.80.4 локальный сервер с которого шлём пакеты
10.20.11.6 локальный сервер на который приходят пакеты
10.20.11.4 локальный сервер на который надо пробросить пакеты с 10.20.11.6
2115 - порт на который кидаем

Пробую так, но результата нет.
iptables -t nat -A PREROUTING --dst 10.20.11.6 -p tcp --dport 2115 -j DNAT --to-destination 10.20.11.4


Содержание

Сообщения в этом обсуждении
"Проброс портов в iptables"
Отправлено Majestyk , 12-Фев-20 15:04 
> нужно чтобы он пробрасывал эти пакеты на другой сервер в локальной
> сети с таким же портом.
> где:
> 10.20.80.4 локальный сервер с которого шлём пакеты
> 10.20.11.6 локальный сервер на который приходят пакеты
> 10.20.11.4 локальный сервер на который надо пробросить пакеты с 10.20.11.6
> 2115 - порт на который кидаем
> Пробую так, но результата нет.
> iptables -t nat -A PREROUTING --dst 10.20.11.6 -p tcp --dport 2115 -j
> DNAT --to-destination 10.20.11.4

Разобрался сам вот таким образом
iptables -t nat -A PREROUTING -i ens31 -p tcp --dport 2115 -j DNAT --to 10.20.11.4:2115
iptables -t nat -A POSTROUTING -o ens31 -j MASQUERADE


"Проброс портов в iptables"
Отправлено Licha Morada , 13-Фев-20 07:59 
>[оверквотинг удален]
>> 10.20.11.6 локальный сервер на который приходят пакеты
>> 10.20.11.4 локальный сервер на который надо пробросить пакеты с 10.20.11.6
>> 2115 - порт на который кидаем
>> Пробую так, но результата нет.
>> iptables -t nat -A PREROUTING --dst 10.20.11.6 -p tcp --dport 2115 -j
>> DNAT --to-destination 10.20.11.4
> Разобрался сам вот таким образом
> iptables -t nat -A PREROUTING -i ens31 -p tcp --dport 2115 -j
> DNAT --to 10.20.11.4:2115
> iptables -t nat -A POSTROUTING -o ens31 -j MASQUERADE

Всё правильно. Если вы посмотрите на траффик сниффером на всех 3-ёх машинах, в случаях с правилом MASQUERADE и без него, то будет весьма наглядно почему оно так.

Из соображений чистоты, я бы рекомендовал переделать правила на нечто более симметричное и конкретное:
iptables -t nat -A PREROUTING -i ens31 --src 10.20.80.4 --dst 10.20.11.6 -p tcp --dport 2115 -j DNAT --to 10.20.11.4:2115
iptables -t nat -A POSTROUTING -o ens31 --src 10.20.80.4 --dst 10.20.11.4 -p tcp --dport 2115 -j SNAT --to-source 10.20.11.6

Разница между SNAT и MASQUERADE: https://terrywang.net/2016/02/02/new-iptables-gotchas.html
Кроме того, условия ограниченны строже. "--src" не слишком принципиален, но важно что SNAT надо применять ровно к тому-же, к чему применяется DNAT.

А по хорошему, рекомендую rinetd для таких задач. Или вообще haproxy.


"Проброс портов в iptables"
Отправлено Majestyk , 13-Фев-20 15:27 
Большое спасибо за совет!

"Проброс портов в iptables"
Отправлено Андрей Антоша , 06-Мрт-20 09:37 
> Всем добрый день! Помогите пожалуйста разобраться с правильным написанием правила проброса
> портов.
> Есть сервер в локальной сети на который мы посылаем какие-то пакеты и
> нужно чтобы он пробрасывал эти пакеты на другой сервер в локальной
> сети с таким же портом.
> где:
> 10.20.80.4 локальный сервер с которого шлём пакеты
> 10.20.11.6 локальный сервер на который приходят пакеты
> 10.20.11.4 локальный сервер на который надо пробросить пакеты с 10.20.11.6
> 2115 - порт на который кидаем

https://www.opennet.dev/man.shtml?topic=iptables&category=8&r...

ерунду спрашиваете.
вам нужно делать таким образом

iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK ACK --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN,ACK --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK ACK --sport 80 -j ACCEPT