Здравствуйте, дорогие форумчане.
Вопрос очень прост. Как ПРАВИЛЬНО написать правила проброса порта с внешного ip на хост внутри локальной сети? У меня 2 варианта:1) Ограничиваем проброс указанием источника:
-A PREROUTING -t nat -s 1.1.1.1 -d 2.2.2.2 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.1
и разрешаем проход в FORWARD
-A FORWARD -i eth2 -o eth0 -d 192.168.1.1 -p tcp --dport 3389 -j ACCEPT
2) Или же пробрасываем всех страждущих
-A PREROUTING -t nat -d 2.2.2.2 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.1
а не угодных "косим" в FORARD
-A FORWARD -i eth2 -o eth0 -s 1.1.1.1 -p tcp --dport 3389 -j ACCEPT
-A FORWARD -i eth2 -o eth0 -p tcp --dport 3389 -j DROP
Какое решение, идиологически, более правильное??
> Какое решение, идиологически, более правильное??
Я думаю, что в случае DNAT решение зависит от задачи.
Например, может случиться так, что с другого src IP пойдет на другой dnat IP, и т п.Опять же, зависит от числа IP, которым разрешено. Если их >1 я бы делал по варианту 2, но с учетом вышенаписанного мной.
---В случае с SNAT решение "фильтровать в nat" обычно приводит к тому, что на внешнем интерфейсе летают пакеты с адресами внутренней сети.
---
В общем случае, на мой взгляд, "правильно идеологически" - это сделать так, чтобы минимальное манипулирование правилами приводило к максимально корректному на ваш взгляд результату - т.е. минимизировать свою работу при максимальном уровне правильности правил.
Такая минимизация полезна, т.к. уменьшается вероятность "чего-нибудь забыть".
>[оверквотинг удален]
> -A FORWARD -i eth2 -o eth0 -d 192.168.1.1 -p tcp --dport 3389
> -j ACCEPT
> 2) Или же пробрасываем всех страждущих
> -A PREROUTING -t nat -d 2.2.2.2 -p tcp -m tcp --dport 3389
> -j DNAT --to-destination 192.168.1.1
> а не угодных "косим" в FORARD
> -A FORWARD -i eth2 -o eth0 -s 1.1.1.1 -p tcp --dport 3389
> -j ACCEPT
> -A FORWARD -i eth2 -o eth0 -p tcp --dport 3389 -j DROP
> Какое решение, идиологически, более правильное??если сделаете по 1 варианту , то желательно не угодных "косим" в INPUT, но там можно политикой по умолчанию обойтись
>[оверквотинг удален]
>> 2) Или же пробрасываем всех страждущих
>> -A PREROUTING -t nat -d 2.2.2.2 -p tcp -m tcp --dport 3389
>> -j DNAT --to-destination 192.168.1.1
>> а не угодных "косим" в FORARD
>> -A FORWARD -i eth2 -o eth0 -s 1.1.1.1 -p tcp --dport 3389
>> -j ACCEPT
>> -A FORWARD -i eth2 -o eth0 -p tcp --dport 3389 -j DROP
>> Какое решение, идиологически, более правильное??
> если сделаете по 1 варианту , то желательно не угодных "косим" в
> INPUT, но там можно политикой по умолчанию обойтисьНе-не-не. INPUT тут не участвует. Это транзитный трафик.
>[оверквотинг удален]
>>> -A PREROUTING -t nat -d 2.2.2.2 -p tcp -m tcp --dport 3389
>>> -j DNAT --to-destination 192.168.1.1
>>> а не угодных "косим" в FORARD
>>> -A FORWARD -i eth2 -o eth0 -s 1.1.1.1 -p tcp --dport 3389
>>> -j ACCEPT
>>> -A FORWARD -i eth2 -o eth0 -p tcp --dport 3389 -j DROP
>>> Какое решение, идиологически, более правильное??
>> если сделаете по 1 варианту , то желательно не угодных "косим" в
>> INPUT, но там можно политикой по умолчанию обойтись
> Не-не-не. INPUT тут не участвует. Это транзитный трафик.транзитный это для кого dnat сделаете, а кого не завернете - INPUT. Если конечно ip назначения изначально - ip этой машины
Модно сделать так# здесь проверяются только пакеты RDP
iptables -t nat -N RDP
iptables -t nat -A RDP -s 1.1.1.1 -d 2.2.2.2 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A RDP -s A.B.C.D -d E.F.G.H -j DNAT --to-destination I.J.K.L
# не тратим ресурсы на непрошенных гостей
iptables -t nat -A RDP -j TARPIT# каждый пакет проверяется здесь только один раз
iptables -t nat -p tcp -m tcp --dport 3389 -g RDP# если есть желание отфильтровать что-нибудь - IMHO: чем раньше - тем меньше ресурсов на это будет потрачено