PDA

View Full Version : NAT + iptables


Korse
16-04-2008, 17:10
Разъясните кто-нибудь

Как я понял
команда перебивает 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 клиента общались с сервером без шлюза ?
Правильно ли я понял ?
И правил на обратное преобразование ответов из инета не надо ?

т.е шлюз помнит какое преобразование он делал и вернет все назад сам.

6opoga
17-04-2008, 10:06
Разъясните кто-нибудь

Как я понял
команда перебивает 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/...) и ответные пакеты роутятся куда надо автоматически (при этом никак не меняются).

Korse
17-04-2008, 11:33
Спасибо, прояснил.

Если перебивать не конкретный lan-ip на внешний ip , а целиком lan-сеть то iptables и с этим спокойно справится без конфликтования портов у lan клиентов?

И есть ли где дока про сам процесс nat 'a , т.е как все изнутри ?
А то постоянно либо на описание nat 'a , либо на описание команд iptables и нигде про сам процесс поэтапно?

lazyman
17-04-2008, 12:28
И есть ли где дока про сам процесс nat 'a , т.е как все изнутри ?
А то постоянно либо на описание nat 'a , либо на описание команд iptables и нигде про сам процесс поэтапно?

Есть вот здесь (http://iptables-tutorial.frozentux.net/iptables-tutorial.html). Это хорошее описание (можно уже книжкой назвать - по объему и стилю вполне тянет) iptables вообще и nat в частности.

ABATAPA
17-04-2008, 13:13
Есть вот здесь (http://iptables-tutorial.frozentux.net/iptables-tutorial.html). Это хорошее описание (можно уже книжкой назвать - по объему и стилю вполне тянет) iptables вообще и nat в частности.

Или более старый, но на русском:
www.opennet.ru/docs/RUS/iptables/

Еще настоятельно рекомендую:
http://lartc.org/

Korse
17-04-2008, 22:21
хоть и пробегал по этим докам,но
интересные моменты упустил:
SNAT (Source Network Address Translation) используется для изменения исходных адресов пакетов. С помощью этого действия можно
скрыть структуру локальной сети, а заодно и разделить единственный
внешний IP адрес между компьютерами локальной сети для выхода в
Интернет. В этом случае брандмауэр, с помощью SNAT, автоматически
производит прямое и обратное преобразование адресов, тем самым
давая возможность выполнять подключение к серверам в Интернете с
компьютеров в локальной сети.

Придется читать внимательней, хотя про порты ни слова