Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   NAT и маскарадинг (http://forum.oszone.net/showthread.php?t=14008)

Delalex 29-07-2003 19:22 75061

Имеются две сетки, одна домашняя (172.20.0.0, eth0), другая внешняя с выходом в инет (192.168.2.0, eth1). Требуется подставить IP адаптера внешней сети в пакеты домашней. При попытке занести в таблицу nat следующую строку:
iptables -t nat -A POSTROUTING -s 172.20.0.(хост) -o eth1 - j SNAT --to-source 192.168.2.(хост)
или
iptables -t nat -A POSTROUTING -s 172.20.0.(хост) -o eth1 -j MASQUERADE
выдает ошибку 'iptables: Invalid argument'. В чем дело, подскажите?
Ради интереса: iptables -t nat -A POSTROUTING -s 172.20.0.(хост) ошибки не выдает. ASPLinux 9, ядро 2.4.21, сконфигурировано с поддержкой NAT...

Demige 29-07-2003 23:01 75062

Неправильно пишешь
надо так.
iptables -t nat -A POSTROUTING -s (eth0 network) -o eth1 - j SNAT --to-source (eth1 address)

т.е. в пакетах из сети eth0 подставлять адрес ip (интернетовский) машины-гейта
т.е. это надо настраивать именно на той машине, которая имеет ip в инете, а я так понял та настраиваешь на машине рутере между сетями

JeweL 30-07-2003 10:36 75063

Demige
ну почему же? пусть себе будет межсетевой nat (если именно это требуется). Просто маршруты настроить надо правильно.
Команда имхо будет правильно выглядеть так:
iptables -t nat -A POSTROUTING -s 172.20.0.10/32 -o eth1 - j SNAT --to-source 192.168.2.1
где 172.20.0.10/32 - адрес того, кого хотим выпустить вовне, 192.168.2.1 - адрес eth1

Delalex 30-07-2003 17:30 75064

Спасибо, ребята! Только вот проблема осталась...
Попробую рассказать поподробней, что мне нужно. Имеются вот такие сетки:
Home_host (172.20.0.2)<->((172.20.0.1,eth0)Main_home_host(eth1,192.168.2.145))<->((192.168.2.254)Gate(Inet IP)) - Provider
Main_home_host - мой комп, подключенный к муниципальной сети, соответственно, все исходящие пакеты должны содержать адрес источника 192.168.2.145, иначе о доступе в инет и к ресурсам локалки не будет и речи (платная сетка-то).
Gate - системный шлюз в инет, все адреса источников маскарадятся на выделенный инетовский IP.
Home_host - еще один мой комп, с которого я хочу иметь доступ к ресурсам сети и инета.
Вот такая вот картинка получается... как вы посоветовали - я уже делал, перепробовал все, но в итоге все та же ошибка 'Invalid argument'. Методом "тыка" определил, что ошибку вызывает все действия после '-j',  будь то SNAT --to-source IP или простой MASQUERADE. Вот и не пойму, в чем дело... ядро сконфигурировано с поддержкой ipv4, модули загружаю прямо из скрипта без всяких ошибок.

JeweL 31-07-2003 09:48 75065

возможно проблема в том, что необходимые iptables модули автоматом не подгружаются. Посмотри lsmod. Если какие-то из нижеприведенных модулей отсутствуют (второй блок по мере надобности) - действуй modprobe
ip_tables
ip_conntrack
iptable_filter
iptable_mangle
iptable_nat
ipt_state
ipt_REJECT
ipt_MASQUERADE

ipt_LOG
ipt_limit
ip_conntrack_ftp
ip_conntrack_irc
ip_nat_ftp
ip_nat_ircip_nat_irc
ipt_owner

Delalex 31-07-2003 19:24 75066

Я эти модули загружаю прямо из скрипта, в случае неудачи появлялась бы ошибка modprobe, а ее нет. Что интересно, сегодня сконфигурировал и поставил ядро 2.4.20 и все заработало на том же скрипте :) Попробовал переконфигурировать ядро 2.4.21 (мало ли что... все мы люди) - вылезает та же ошибка при использовании аргумента SNAT или MASQUERADE в таблице NAT - 'Invalid argument'. А с ядром 2.4.20 у меня другие проблемы: фиговато работает чипсет nForce2, в частности, IDE - контроллер, да и с тв-тюнером Pinnacle PCTV Pro не все ладно, впрочем, с ним и в 2.4.21 проблемы... но это отдельный вопрос.
Спасибо всем за помощь! Если есть какие-нибудь соображения по этому поводу, буду очень рад их выслушать, тема пока открыта!

glassMonk 02-08-2003 11:35 75067

Огромное спасибо JeweL. Так как мне почти не приходилосб работать с NAT.

Delalex 03-08-2003 11:01 75068

Моя проблема решилась очень просто: поставил IPTABLES 1.2.8 (вместо 1.2.7а), после чего на ядре 2.4.21 скрипт заработал (сам удивляюсь). Если кому-нибудь пригодится мой опыт объединения двух сетей с взаимным (или доверенным) доступом к их ресурсам и инету, всегда буду рад помочь: delalex@inbox.ru

Gorza 05-08-2003 13:05 75069

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

Добавлено:

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

Delalex 06-08-2003 05:43 75070

Вполне с этим согласен - я и использовал SNAT. *Маскарад здесь был упомянут лишь потому, что не работала именно функция подмены IP-адреса источника в исходящих пакетах, для чего, собственно, SNAT и маскарад и предназначены.
Можно применять маскарад и для статического IP-адреса, просто это является нецелесообразным, т.к. увеличивает нагрузку на систему... в чем между ними разница:
SNAT поставлена конкретная задача - менять адрес источника на явно указанный IP, a MASQUERADE после каждого пакета "забывает", что надо "подсовывать" в качестве исходящего IP и запрашивает адрес внешнего сетевого интерфейса по новой - отсюда и повышенная затребованность ресурсов.

Gorza 06-08-2003 09:43 75071

..как приятно слушать разговор двух умных людей, особенно если один из них - ты сам.... ;-)

Barracuda 06-08-2003 14:29 75072

Delalex
Gorza
А вы это что тут делаете?

Delalex 06-08-2003 21:13 75073


Цитата:

..как приятно слушать разговор двух умных людей, особенно если один из них - ты сам.... ;-)
Точно-точно... :)

Цитата:

Delalex
Gorza
А вы это что тут делаете?
Азбуку изучаем ( с картинками). Присоединяйся, если есть желание.


Время: 13:28.

Время: 13:28.
© OSzone.net 2001-