View Full Version : NAT + iptables
Разъясните кто-нибудь
Как я понял
команда перебивает ip источника на 1.2.3.4:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
Вот непонятно что при этом происходит с портами если через шлюз выходят несколько клиентов (допустим 3 клиента на http сервер порт 80) при этом с одним и тем же портом 30150)
что сделает шлюз :
1 клиенту поменяет при выходе в internet адрес 1.2.3.4 оставив порт неизменным
2 клиенту поменяет и адрес и порт отличный от первого
3 клиенту поменяет адрес и порт отличный от 2 предыдущих.
а ответ на эти пакеты соответственно перепишет как-будто все 3 клиента общались с сервером без шлюза ?
Правильно ли я понял ?
И правил на обратное преобразование ответов из инета не надо ?
т.е шлюз помнит какое преобразование он делал и вернет все назад сам.
Разъясните кто-нибудь
Как я понял
команда перебивает ip источника на 1.2.3.4:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
Вот непонятно что при этом происходит с портами если через шлюз выходят несколько клиентов (допустим 3 клиента на http сервер порт 80) при этом с одним и тем же портом 30150)
что сделает шлюз :
1 клиенту поменяет при выходе в internet адрес 1.2.3.4 оставив порт неизменным
2 клиенту поменяет и адрес и порт отличный от первого
3 клиенту поменяет адрес и порт отличный от 2 предыдущих.
а ответ на эти пакеты соответственно перепишет как-будто все 3 клиента общались с сервером без шлюза ?
Правильно ли я понял ?
И правил на обратное преобразование ответов из инета не надо ?
т.е шлюз помнит какое преобразование он делал и вернет все назад сам.
NAT не оставляет исходный порт, а выбирает очередной незанятый. ИП клиента и порт, а также порт с которого вышли записываются в специальную таблицу (ее, кстати, можно смотреть где-то в недрах /proc/net/...) и ответные пакеты роутятся куда надо автоматически (при этом никак не меняются).
Спасибо, прояснил.
Если перебивать не конкретный lan-ip на внешний ip , а целиком lan-сеть то iptables и с этим спокойно справится без конфликтования портов у lan клиентов?
И есть ли где дока про сам процесс nat 'a , т.е как все изнутри ?
А то постоянно либо на описание nat 'a , либо на описание команд iptables и нигде про сам процесс поэтапно?
И есть ли где дока про сам процесс nat 'a , т.е как все изнутри ?
А то постоянно либо на описание nat 'a , либо на описание команд iptables и нигде про сам процесс поэтапно?
Есть вот здесь (http://iptables-tutorial.frozentux.net/iptables-tutorial.html). Это хорошее описание (можно уже книжкой назвать - по объему и стилю вполне тянет) iptables вообще и nat в частности.
Есть вот здесь (http://iptables-tutorial.frozentux.net/iptables-tutorial.html). Это хорошее описание (можно уже книжкой назвать - по объему и стилю вполне тянет) iptables вообще и nat в частности.
Или более старый, но на русском:
www.opennet.ru/docs/RUS/iptables/
Еще настоятельно рекомендую:
http://lartc.org/
хоть и пробегал по этим докам,но
интересные моменты упустил:
SNAT (Source Network Address Translation) используется для изменения исходных адресов пакетов. С помощью этого действия можно
скрыть структуру локальной сети, а заодно и разделить единственный
внешний IP адрес между компьютерами локальной сети для выхода в
Интернет. В этом случае брандмауэр, с помощью SNAT, автоматически
производит прямое и обратное преобразование адресов, тем самым
давая возможность выполнять подключение к серверам в Интернете с
компьютеров в локальной сети.
Придется читать внимательней, хотя про порты ни слова