LINUX.ORG.RU
ФорумAdmin

iptables - решите спор?


0

1

Есть у нас программист, который написал скрипт для доступа по RDP из Internet на хост внутри ЛВС. Скрипт рулит iptables и на практике не работает. При просмотре что делает скрипт - создаёт правило вида:

-A PREROUTING -s $IP_my -i $IF_INET -p tcp -m tcp --dports 3389 -j DNAT --to-destination $IP_LAN:3489

Исправление правила в ручном режиме, без выше обозначенного скрипта на:

-A PREROUTING -d $IP_my -i $IF_INET -p tcp -m tcp --dports 3389 -j DNAT --to-destination $IP_LAN:3489

Проблему решает - порт пробрасывается.

Программист утверждает что скрипт с ключом -s сможет пробросить порт также как и с ключом -d и задаёт вопрос: Что ты будешь писать в поле "-d" если твой сервер получает ip по DHCP ???

Я отвечаю: Не буду писать ключ -d, только и всего. Раз у меня нет конкретного приёмника, а есть только интерфейс. Соответственно достаточно -i $IF_INET. Какие проблемы? -s - IP-адрес источника пакета. -d - IP-адрес получателя. В DNAT подменяется адрес получателя во входящем пакете. IP-адрес источника нам, в общем случае, не известен, находится в сети Internet. Это входящий трафик, а не исходящий. Хост в ЛВС на который приходит трафик не является его источником, а является получателем. Поэтому указывать -s нельзя, из-за этого такое правило не работает.

На что получаю: Хватит отвлекать меня от работы своим незнанием iptables.

Вот и думаю. Может я действительно что-то не понимаю? Короче, кто из нас прав: может ли правило DNAT с одновременно указанными -s и -i отработать нормально. А то я даже примеров таких правил в Google не нашёл. Как и вообще правил DNAT с указанным -s вместо -d.



Последнее исправление: azimut (всего исправлений: 2)

Какой смысл что-то обсуждать, если его творение не работает, а твоё - работает?

AnDoR ★★★★★
()

На что получаю: Хватит отвлекать меня от работы своим незнанием iptables.

На что программист получает в рыло и идет читать маны.
Разрешаю приступать.

thesis ★★★★★
()
Ответ на: комментарий от AnDoR

Тоже так считаю. Но хочу убедиться в том, что логика понимания работы iptables у меня (не)верная. Может я живу с неверной интерпретацией обработки IP-адреса по ключу -s? Человек утверждает уважаемый, я начинаю сомневаться. Поэтому узнать что скажет независимый сисадмин - вполне себе метод. Может быть в каких-то условиях вариант программиста будет работать, а эти условия не выдержаны. Скрипт у него обфусцированный, просто изменить что-то в нём и забыть о проблеме не могу.

azimut
() автор топика

может ли правило DNAT с одновременно указанными -s и -i отработать нормально

может. но только если

-s адрес клиента
Но, как я понял, $IP_my - адрес интерфейса $IF_INET. так что его правило работать не будет.

fry
()

может ли правило DNAT с одновременно указанными -s и -i отработать нормально

наверно может, только IP_my должно быть не адресом сервера, а адресом клиента в этом случае.

Что ты будешь писать в поле "-d" если твой сервер получает ip по DHCP ???

Задай встречный вопрос что он будет делать когда нужно будет обеспечить DNAT для нескольких IP :)

true_admin ★★★★★
()
Ответ на: комментарий от azimut

Всё, конец дня - клинит. Адрес клиента - IP-адрес хоста инициировавшего соединение с сервером. Конечно тогда может работать. Как и наш случай. Спасибо. )

azimut
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.