Проблема маршрутизации.

Господа специалисты, помогите ламеру! Есть комп с двумя сетевыми картами. Одна подключена к городской сети с выходом в интернет (10.103.0.0/255.255.128.0), другая локальной сети (192.168.0.0/255.255.255.0). Проблема в том, что я не могу связать сети. Под виндой все работает на ура. Под Линуксом никак. Обе сети поотдельности функционируют нормально. Поставил iptables настроил по Wiki - не работает.
Вот таблица маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
10.103.0.0      *               255.255.128.0   U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.103.0.2      0.0.0.0         UG    0      0        0 eth0

Помогите избавиться от мелкомягкого убожества. Это последнее, что меня с ним связывает.

Что значит

Что значит связать сети? Т.е. сделать так чтобы пользователь из локалки мог попадать в городскую сеть? Если да, то то что нужно - это NAT (как вариант). Настраивается с помощью iptables. Док по этому полно, не получится, пишите сюда.

Дык

Дык ылыментарно.
www.gentoo.org/doc/ru/home-router-howto.xml раздел NAT
_________________
With Love from Siberia!

Увы и ах...

Сделал - не работает:-(. Такое впечатление, что туда идет, а обратно - нет. Когда пингуешь 10.103.0.2 ответа нет. Как только остановишь eth0 - ругается:
From 192.168.0.1 icmp_seg=xxx Destination Host Unreachable,
что и естественно. Где грабли? Может я забыл поставить какие-то пакеты?

Приведи

Приведи правила iptables, которые вводил.
Включен ли ip_forwarding (cat /proc/sys/net/ipv4/ip_forward)? Если нет, то правь /etc/sysctl.conf:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
_________________
With Love from Siberia!

Эффект нулевой

Прочитал иструкцию взад и вперед раза три. Получилось вот что:
/etc/conf.d/net

# Global config file for net.* rc-scripts
modules=( "iproute2" )

config_eth1=("192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0")
#routes_eth1=( "default gw 192.168.0.1" )

config_eth0=("dhcp")

Далее по иструкции написал и выполнил скрипт:

#!/bin/bash
#Установим политики по умолчанию для трафика, не соответсвующего ни
#одному из правил
 iptables -P INPUT ACCEPT
 iptables -P OUTPUT ACCEPT
 iptables -P FORWARD DROP

#Скопируйте и вставьте для примера...
 export LAN=eth1
 export WAN=eth0

#Теперь закроем наши сервисы так, чтобы они могли работать только для LAN
 iptables -I INPUT 1 -i ${LAN} -j ACCEPT
 iptables -I INPUT 1 -i lo -j ACCEPT
 iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
 iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

#(Необязательно) Разрешаем доступ к нашему ssh-серверу из интернета
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

#Отбросим все TCP/UDP-пакеты, обращающиеся к привелигированным портам 
 iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
 iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

#В конце добавляем правила для NAT
 iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
 iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
 iptables -A FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
 iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
#Сообщаем ядру, что ip-форвардинг разрешён
 echo 1 > /proc/sys/net/ipv4/ip_forward
 for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

Далее /etc/init.d/iptables save и /etc/init.d/iptables restart.
Проверил /etc/sysctl.conf там все в порядке.
Эффект нулевой.

попробуй

попробуй пинговать из внутренней сети сначала внутренний интерфейс роутера твоего, потом внешний, потом шлюз.. тогда будет понятно на каком месте у тебя отваливается...
кстати вот эта запись типа echo "1" > /proc/sys/.... может и не работать если у тебя не правильно сконфигурировано ядро.
_________________
Gentoo x86_64 2.6.13-r3 на Athlon 64 3000+

Такое ощущение,

Такое ощущение, что форвардинг у тебя в никакую не работает.
Все же проверь, стоит еденичка при выполнении cat /proc/sys/net/ipv4/ip_forward. Похоже, придется пересобирать ядро согласно инструкциям из вышеописанного документа.
_________________
With Love from Siberia!

Re: Эффект нулевой

nikola13 написал(а):
 iptables -P FORWARD DROP

 iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
 iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
 iptables -A FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT

через цепочку FORWARD пакеты ходят в обе стороны, поэтому исходя из приведеных правил пакеты в сеть 192.168.0.0/16 никогда не попадут
почитай еще вот это - http://www.opennet.ru/docs/RUS/iptables/

Урра, заработало!

Добавил кправилам:

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

и все заработало.
Спасибо всем, особенно за ссылки.
P.S. Если не трудно высказаться по поводу выбранного решения. Буду рад любым советам.

@#$@%^!

Б***ь! гхм... Вы абсолютно правы. Поправка к документу: строку

Цитата:
iptables -A FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT

следует читать как

Цитата:
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT

Xakep и nikola13 выражаю благодарность от имени GDP за бдительность при поиске бага. А я пошел исправлять...
Кстати, Никол, если подправить эту строку, то у тебя отпадет надобность в добавленном правиле (надеюсь ~:))

_________________
With Love from Siberia!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".