The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Проброс портов в iptables"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Linux iptables, ipchains / Linux)
Изначальное сообщение [ Отслеживать ]

"Проброс портов в iptables"  +/
Сообщение от Majestyk (ok), 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Majestyk (ok), 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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от Licha Morada (ok), 13-Фев-20, 07:59   +1 +/
>[оверквотинг удален]
>> 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.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #3

3. Сообщение от Majestyk (ok), 13-Фев-20, 15:27   +/
Большое спасибо за совет!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

4. Сообщение от Андрей Антошаemail (?), 06-Мрт-20, 09:37   +/
> Всем добрый день! Помогите пожалуйста разобраться с правильным написанием правила проброса
> портов.
> Есть сервер в локальной сети на который мы посылаем какие-то пакеты и
> нужно чтобы он пробрасывал эти пакеты на другой сервер в локальной
> сети с таким же портом.
> где:
> 10.20.80.4 локальный сервер с которого шлём пакеты
> 10.20.11.6 локальный сервер на который приходят пакеты
> 10.20.11.4 локальный сервер на который надо пробросить пакеты с 10.20.11.6
> 2115 - порт на который кидаем

https://www.opennet.ru/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

Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру