Ситуация стандартная: Сеть с левыми IP + Шлюз для хождения в Inet.
Шлюз: Linux Slackware v10.1
Настройка шлюза:
- Маршрут по умолчанию указывает на следующий за шлюзом маршрутизатор
- IP_FORVARD включен
- eth0: сеть 100.100.100.0 eth1 - реальный internet-ipДелаю:
iptables -A FORWARD -s 100.100.100.0/24 -j ACCEPT
iptables -A FORWARD -d 100.100.100.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -j SNAT --to-source 100.100.100.1-100.100.100.10Из локалки в Инет ничего не ходит. :-(
Где грабли-то?
> Ситуация стандартная: Сеть с левыми IP +
>Шлюз для хождения в Inet.
> Шлюз: Linux Slackware v10.1
> Настройка шлюза:
> - Маршрут по
>умолчанию указывает на следующий за шлюзом маршрутизатор
> - IP_FORVARD включен
>
> - eth0: сеть
>100.100.100.0 eth1 - реальный internet-ip
>
>Делаю:
>
> iptables -A FORWARD -s 100.100.100.0/24 -j
>ACCEPT
> iptables -A FORWARD -d 100.100.100.0/24 -j
>ACCEPT
> iptables -t nat -A POSTROUTING -p
>tcp -j SNAT --to-source 100.100.100.1-100.100.100.10
>попробуй так:
iptables -A FORWARD -s 100.100.100.0/24 -j ACCEPT
iptables -A FORWARD -d 100.100.100.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 100.100.100.0/24 -o eth1 -j SNAT --to-source internet_ip> Из локалки в Инет ничего не
>ходит. :-(
> Где грабли-то?
>
Попробывал. Не работает. С eth1 (InternetIP) пакет уходит со своим старым адресом отправителя (посмотрел в iptraf).
НАРОД ХЕЛПАЙТЕ!
> Попробывал. Не работает. С eth1 (InternetIP)
>пакет уходит со своим старым адресом отправителя (посмотрел в iptraf).
> НАРОД ХЕЛПАЙТЕ!выложи все от
service iptables statusпоглядим что у тя вообще за правила!
>выложи все от
>service iptables status
^^^^^^^ ^^^^^^
Немного не понял. service - это что?iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD(policy ACCEPT)
target prot opt source destination
ACCEPT all -- 192.168.200.0/24 anywhere
ACCEPT all -- anywhere 192.168.200.0/24Chain OUTPUT (policy ACCEPT)
target prot opt source destinationiptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.200.0/24 anywhere to:<InternetIP>Chain OUTPUT (policy ACCEPT)
target prot opt source destination
service iptables status - в мандраке эта команды выведет список правил (то что ты и сделал). про слаку незнаю.в принципе тебе не нужны правила в цепочке FORWARD потому что у тебя политика по умолчанию стоит ACCEPT, тобишь форвардить все!
по тем правилам что у тя в цепочке nat, у тебя все должно снатиться. проверь на всякий случай:
1) echo "1" > /proc/sys/net/ipv4/ip_forward
2) должны быть загружены модули, погляди lsmod и там поищи iptable_nat.если все это у тебя присутствует, то надо думать!
>service iptables status - в мандраке эта команды выведет список правил (то
>что ты и сделал). про слаку незнаю.
>
>в принципе тебе не нужны правила в цепочке FORWARD потому что у
>тебя политика по умолчанию стоит ACCEPT, тобишь форвардить все!
>
>по тем правилам что у тя в цепочке nat, у тебя все
>должно снатиться. проверь на всякий случай:
>1) echo "1" > /proc/sys/net/ipv4/ip_forward
>2) должны быть загружены модули, погляди lsmod и там поищи iptable_nat.
>
>если все это у тебя присутствует, то надо думать!что тут думать: правило в nat неправильно написано
+ на клиентах основной шлюз(default route) не указан ;) скорее всего :). он должен быть равен ip интерфейса линуха, смотрящего в локалку ;)
+я надеюсь ip 100.100.100.x ты просто так написал? Надеюсь сеть у тебя что нить типа 192.168.0.0/24 ?
Смотри мою статью:
http://lug.kmv.ru/content.php?article.65
там про iptables. есть скриптик, только подгони под свои адреса.
если чего пиши, отвечу ;)p.s. и еще есть iptables-tutorial =) ищи...не помню ссылу.
p.p.s. И нормальные юзеры делают так:echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -s 100.100.100.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IPили если ip динамический(в инете) то так:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -s 100.100.100.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADEp.p.p.s. а нормальные админы так не делают, если пекутся об экономии трафика и админят тачки юзеров :)
если всю локалку надо пустить таким образом - надо зафильтровать forward.
хотя если тебе не надо думать о клиентах в локалке - тогда вперед...только сервер прикрой ;) с обоих сторон.
>что тут думать: правило в nat неправильно написано
>+ на клиентах основной шлюз(default route) не указан ;) скорее всего :).
>он должен быть равен ip интерфейса линуха, смотрящего в локалку ;)Указан, указан :-)
>+я надеюсь ip 100.100.100.x ты просто так написал? Надеюсь сеть у тебя
>что нить типа 192.168.0.0/24 ?Да. Я сначала на это и думал, и потом поставил правильные "левые" адреса.
#iptables -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source
$INET_IPВ общем-то, у меня все заработало. Всем спасибо! :)
Но, вот такая вещь: У меня было все то-же самое, только с указанием опции -s <локальная сеть> - и не работало(!). Я правильно понимаю, что этой опцией я описываю адреса отправителей, которые нужно маскарадить?
>> Попробывал. Не работает. С eth1 (InternetIP)
>>пакет уходит со своим старым адресом отправителя (посмотрел в iptraf).
>> НАРОД ХЕЛПАЙТЕ!
>
>выложи все от
>service iptables status
>
>поглядим что у тя вообще за правила!что-то не припоминаю, чтобы в слаке была service ;)
>
>что-то не припоминаю, чтобы в слаке была service ;)
ее там нет и никогда не было