Вы здесь

Маршрутизация. Две подсети не получается соединить. [Solved]

Доброго.

Есть подсеть - 192.168.1.0/24 (Подсеть 1)
Есть подсеть - 192.168.2.0/24 (Подсеть 2)

Хочу их соеденить.
Ставлю машину с двумя карточками. (Роутер 1)
На одну вешаю ип : 192.168.1.1, на другую ип : 192.168.2.1.
в sysctrl.conf выставляю net.ipv4.ip_forward = 1.

Пытаюсь пинговать с этого компьютера Подсеть 1 и Подсеть 2. Пингуются.

Беру машину второй подсети.
у нее /etc/conf.d/net

modules=( "iproute2" )
config_eth0=( "192.168.2.2 netmask 255.255.255.0 brd 192.168.2.255" )
routes_eth0=( "default gw 192.168.2.1" )

и если я пингую допустим 192.168.1.2 (машину подсети 1), то машина не пингуетя..
Я так понимаю, что нужно на Роутере 1 нужно прописать маршрут для всех пакетов предназначенных для подсети 192.168.1.0/24 пускать через 192.168.1.1, а все пакеты для подсети 192.168.2.0/24 пускать через 192.168.2.1.

Пытаюсь сделать так для того чтобы из подсети 2 можно было бы пинговать подсеть 1.
в /etc/conf.d/net на Роутере 1:

config_eth1=( "192.168.2.1 netmask 255.255.255.0 brd 192.168.2.255" )
routes_eth1=(
               "-net 192.168.1.0/24 gw 192.168.1.1"
            )

пытался вместо gw писать via.. результатов не принесло..
при рестарте пишет вот что:

grpr_router conf.d # /etc/init.d/net.eth1 restart
 * Caching service dependencies ...                                                                                     
 * Stopping eth1
 *   Bringing down eth1
 *     Shutting down eth1 ...                                                                                           
 * Starting eth1
 *   Bringing up eth1
 *     192.168.2.1                                                                                                      
 *   Adding routes
 *     -net 192.168.1.0/24 gw 192.168.1.1 ...
RTNETLINK answers: No such process                                                                                      

Спасибо..
З.ы. Паралельно ищу на форуме еще ответов, но нужно вложится в два часа... поэтому создал тему, может кто поможет.. спасибо.

у меня записано несколько иначе, и символ "-" перед net явно лишний... вообще было бы неплохо не сочинять непонятные комунды а заглянуть в net.example
routes_ppp1=( "10.0.0.0/8 via 10.44.0.1 dev ppp1" )

добавил след.:
routes_eth1=( "192.168.1.0/24 via 192.168.1.1 dev eth0" )

не помогло:

grpr_router conf.d # /etc/init.d/net.eth1 restart
 * Stopping eth1
 *   Bringing down eth1
 *     Shutting down eth1 ...                                                                                           
 * Starting eth1
 *   Bringing up eth1
 *     192.168.2.1                                                                                                      
 *   Adding routes
 *     192.168.1.0/24 via 192.168.1.1 dev eth0 ...
RTNETLINK answers: No such process   

вот откуда взял маршрут предыдущий:
http://www.nixp.ru/cgi-bin/forum/YaBB.pl?board=faq;action=display;num=1131433949

routes_eth1=( "192.168.1.0/24 via 192.168.1.1 dev eth0" )

зачем в routes_eth1 писать маршрут для eth0?

Убери вообще эти маршруты из conf.d/net, они есть изначально при поднятии интерфейсов. Все что тебе надо - прописать маршруты на клиентах с аналогичными путем. То есть для сетки 2.0

route add -net 192.168.1.0/24 gw 192.168.2.1

И для сетки 1.0:

route add -net 192.168.2.0/24 gw 192.168.1.1

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

upd:
Как уже говорили, у тебя на "второй машине" неверная запись маршрута.
Правильная:

routes_eth0=( "192.168.1.0/24 via 192.168.2.1" )

_______________________
From Siberia with Love!

Не грусти, товарищ! Всё хорошо, beautiful good!

winterheart написал:
....
Убери вообще эти маршруты из conf.d/net, они есть изначально при поднятии интерфейсов. Все что тебе надо - прописать маршруты на клиентах с аналогичными путем....

Ага, NAT извращение, а маршруты прописывать на клиентах- нет...

А что, разве да? Какая ситуация, такой рецепт. Весь просвященный мир так делает. Если нужен прозрачный роутинг туда-сюда-обратно, нафиг там роутер стоит? Ставим коммутатор, делаем единую подсеть - и вперед.
_______________________
From Siberia with Love!

Не грусти, товарищ! Всё хорошо, beautiful good!

Да ну, зачем тогда вообще маршрутизаторы или сервера, если можно все на клиентах прописать :)) Это изврат полный. Мягко говоря.

Какие маршруты на клиентах? Ненадо никаких маршрутов на клиентах. Один шлюз по умолчанию прописывается и все. И на маршрутизаторе тоже ничего не надо, надо лишь роутинг разрешить.
Я вообще херею как наистандартнейшая задача на соединение двух подсетей может столько обсасываться и придумываться столько решений.
Сказать почему нельзя делать NAT? Потому что тогда все запросы из одной подсети в другую будут иметь в IP адресе отправителя - IP адрес шлюза.

думал, уже тему никто и не обсуждает.. и не заходил уже сюда..
я посидел подумал..

и сделал так (все получилось так, как и хотел) :
Картинка - http://www.imgup.ru/image-1219741358c4cab5c511477c264ca0141e03f6a343

на клиент1 defaulе gateway указываю роутер 192.168.2.1
никаких дополнительныз маршрутов ему не прописываю

на сервер1 default gateway в интернет
прописал ему маршрут на сеть 192.168.1.0/24 через 192.168.2.1

на роутере указал default gateway 192.168.2.2

всё.

на сервер1 завел DHCP, который раздает всем в своей сети IP-адреса из сетки 192.168.2.0/24 и отдает всем default gateway 192.168.2.1

а дальше роутер уже будет всё решать, если пакет в 192.168.1.0/24, то в правый интерфейс (по картинке) отправит, если в 192.168.2.0/24, то в левый (по картинке), а если и ни туда, и ни туда, а на какую-то другую сеть, то отправит на сервер1, который у меня шлюз в интернет.

на роутере никакого NAT в этом случае и не будет.
NAT только на сервер1 работает

и правила прописывать вручную нужно только на сервер1, чтобы он знал о существовании сети 192.168.1.0/24? которая доступна через роутер

Вот, теперь все верно.
NAT на шлюзе в инет (сервер1) нужен, потому что IP-шик реальный только у него есть. И маршрут на нем конечно нужен в подсеть 192.168.1.0/24, т.к. он тоже шлюзом является по сути.

Задача один в один. Теоретически все элементарно.
eth0 смотрит в подсеть 192.168.0.1
eth1 смотрит в подсеть 192.168.1.1
В подсети 192.168.1.1 есть dhcp
Нужно, чтобы был доступ из одной подсети в другую.

В /etc/conf.d/net пишу маршруты из одной в другую, С сервака обе подсети пингуются, а из одна из другой нет.

config_eth1=( "dhcp" )
config_eth0=( "192.168.0.1 netmask 255.255.255.0" )
routes_eth0=(
        "-net 192.168.1.0/24 gw 192.168.0.1"
 )
modules=( "iproute2" )