LINUX.ORG.RU
ФорумAdmin

Не могу понять смысл одного правила iptables.

 


0

1

Есть 2 виртуальные машины c Linux, которые запущены в VMware ESXi. Скажем, L-Linux и LW-Linux.

На L-Linux - только 1 сетевой интерфейс LAN c адресом 10.0.123.10

На LW-Linux - 2 сетевых интерфейса.
1) LAN ens224 c адресом 10.0.123.5
2) WAN ens192 с адресом 192.168.10.2 
Дальше к LW-Linux подключено какое-то устройство с белым ip. Пусть в качестве белого ip будет адрес 77.55.6.8

На L-Linux правила iptables все ACCEPT. То есть, файрволл абсолютно не настроен. Плюс для ssh изменили порт на 1234.

По итогу: можно с определенных ip-адресов подключаться удаленно к ssh к машине L-Linux вот так:

ssh dude@77.55.6.8 -p 1234

На LW-Linux машине в правилах nat iptables я не могу понять смысл одного правила (без которого вроде все работает). Вот правила nat:

    
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A PREROUTING -s 93.230.140.3/32 -i ens192 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.0.123.10
-A PREROUTING -s 13.85.95.3/32 -i ens192 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.0.123.10

-A POSTROUTING -d 10.0.123.10/32 -o ens224 -p tcp -m tcp --dport 1234 -j SNAT --to-source 10.0.123.5
-A POSTROUTING -o ens192 -j MASQUERADE

Первые 2 правила PREROUTING - понятно - это «разрешение» заходить на порт 1234 для адресов 93.230.140.3/32 и 13.85.95.3/32 на L-Linux.

А смысл вот этого правила понять не могу:

-A POSTROUTING -d 10.0.123.10/32 -o ens224 -p tcp -m tcp --dport 1234 -j SNAT --to-source 10.0.123.5



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

Первые 2 правила PREROUTING - понятно - это разрешение заходить на порт 1234 для адресов 93.230.140.3/32 и 13.85.95.3/32 на L-Linux.

Нет, вы неправильно поняли.

А смысл вот этого правила понять не могу:
-A POSTROUTING -d 10.0.123.10/32 -o ens224 -p tcp -m tcp –dport 1234 -j SNAT –to-source 10.0.123.5

Заменяет исходящий адрес на 10.0.123.5. Например прилетел пакет с адреса 1.2.3.4, правило заменит этот адрес на 10.0.123.5

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

Нет, вы неправильно поняли.

Я имел в виду, что это правило разрешает проброс порта 1234 с внешнего адреса 77.55.6.8 на адрес 10.0.123.10 (на машину L-Linux) для входящих белых ip 93.230.140.3/32 и 13.85.95.3/32

Так будет правильнее?

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

Если машина LW-Linux не является для других участников сети и в частности для IP адреса 10.0.123.10, то без этого правила ответные пакеты будут перенаправляться на шлюз, через который будут доступны IP адреса подключающихся.

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

Заменяет исходящий адрес на 10.0.123.5. Например прилетел пакет с адреса 1.2.3.4, правило заменит этот адрес на 10.0.123.5

Наверное, я чего-то не понимаю. Как-то мне странно, что ens224 – это локальный интерфейс. На него может прилететь пакет, у которого адрес источника будет белый ip, как, например 1.2.3.4 ?

Это ж белый ip 1.2.3.4 вы имели в виду?

truebin
() автор топика
Ответ на: комментарий от targitaj

Ок. Вот сейчас я могу попасть на L-Linux удаленно со своего ПК так:

ssh dude@77.55.6.8 -p 1234

А если убрать это правило:

-A POSTROUTING -d 10.0.123.10/32 -o ens224 -p tcp -m tcp –dport 1234 -j SNAT –to-source 10.0.123.5

То будет у меня работать sh dude@77.55.6.8 -p 1234 ?

На что влияет это правило?

truebin
() автор топика
Ответ на: комментарий от truebin

Выводы делать не умеешь.

Если правило уберёшь - то в качестве IP адреса источника пакетов, с которого ты подключаешься на указанный порт увидишь свой внешний IP.

Если правило останется - будет 10.0.123.5.

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

Выводы делать не умеешь.

Для этого и спрашиваю на форуме. Чтобы выводы делать – надо хорошо понимать и знать основные процессы.

P.S. Короче, закомментил я это правило. Никаких изменений не вижу. Хм.

Что работало – то и работает. Что не работало – то не работает.

truebin
() автор топика
Ответ на: комментарий от truebin

Учись не только спрашивать, но и анализировать ответы.

Тебе я написал для чего это правило, а в комментарии на который ты написал вопрос «На что влияет это правило?» тебе написал ответ:

SNAT в исходящем пакете подменяет source ip на указанный. Чтобы удалённая сторона вернула ответ на указанный адрес.

Вот тоже самое, но другими словами:

Если правило уберёшь - то в качестве IP адреса источника пакетов, с которого ты подключаешься на указанный порт увидишь свой внешний IP.

Если правило останется - будет 10.0.123.5.

Для этого и спрашиваю на форуме.

Смысл спрашивать, если ты пытаешься думать и не понимаешь ответов?

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

Все ip делятся на 2 категории - которые маршрутизируются в сети Интернет и которые НЕ маршрутизируются в сети Интернет. Так называемые «серые» адреса - НЕ маршрутизируются. Интернет про них ничего НЕ ЗНАЕТ. У тебя есть шлюз с марштрутизируемым адресом, до которого может дойти пакет из сети Интернет. Что за шлюзом - Интернет не знает. Шлюз выступает лицом для всей сети, которая за ним. Интернет общается только и исключительно с твоим шлюзом. А вот шлюз уже может приходящие на определённый порт пакеты пробрасывать за себя, во внутренние сети.

Вот чтобы на исходящий в Интернет из внутренней сети пакет хост в Интернете мог ответить - вот за этим применяют на исходящем пакете SNAT. Чтобы подставить в исходящий пакет адрес шлюза.

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от targitaj

В данном случае SNAT не нужен, точнее будет работать и без него, т.к. машина, на которой делается проброс порта является шлюзом для машины, на которую порт пробрасывается. Ответный пакет в любом случае пойдёт через шлюз и обратное преобразование будет сделано.

А вот если бы эта машина не являлась шлюзом, а просто участником сети и нужно делать на ней проброс порта на другую машину, то правило со SNAT обязательно.

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

Его легко можно сделать вот из этого сообщения: Не могу понять смысл одного правила iptables. (комментарий)

Только там пропущено слово:

не является ШЛЮЗОМ для других участников сети

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Лады. Я только начинаю знакомиться с сетями.

Ну, ничего страшного, что еще раз мне ответили более полно. Речь кстати идет про продакшн. Уж лучше я дураком побуду, чем потом обподливлюсь с ног до головы. :)

truebin
() автор топика
Ответ на: комментарий от anc

Вас там хоть кормят?

Голодаю, потому что я руками работаю хорошо. А теперь желательно удаленно работать (вот и учусь), потому что я живу в одной интересной стране-камикадзе – на улицу выходить опасно.

truebin
() автор топика
Ответ на: комментарий от anc

Это значит, что на форуме сидит весь мир. И тут действительно есть голодающие люди (и всякие есть). И жизнь у разных людей может отличаться друг от друга как день и ночь.

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