Маршрутизация. Две подсети не получается соединить. [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" )
не помогло:
вот откуда взял маршрут предыдущий:
http://www.nixp.ru/cgi-bin/forum/YaBB.pl?board=faq;action=display;num=1131433949
попробуй
Попробуй убрать роутинги из /etc/conf.d/net на Роутере 1 и прописать две команды:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
я не уверен, что это то что нужно, но может поможет
P.S. Ошибка: RTNETLINK answers: No such process возникает когда ядро не может обработать роутинг...
Путь
Путь правильный, но кое-что забыл.
А в /etc/conf.d/net пропиши просто айпи каждого интерфейса, и дефолный роутинг для инета.
всем спасибо,
всем спасибо, этот вариант для меня подошел..
Вот это
Вот это извращение для маршрутизации между двумя локальными подсетями использовать NAT...
отличный материал
http://xgu.ru/wiki/Linux_Bridge
спасибо за
спасибо за материал и за подсказку.. счас буду пробовать, только приехал.. опоздал я.. не успел..
то уже до понедельника есть времька, но счас на работе еще часок и домой.. уже 12 часов на дворе.. транспорта потом не будет..
routes_eth1=(
зачем в routes_eth1 писать маршрут для eth0?
Убери вообще
Убери вообще эти маршруты из conf.d/net, они есть изначально при поднятии интерфейсов. Все что тебе надо - прописать маршруты на клиентах с аналогичными путем. То есть для сетки 2.0
И для сетки 1.0:
Твой роутер априори знает, кто где находится, ибо обе сети для него - на расстоянии одного хопа. А вот компьютерам из разных сеток нужно прописать маршрутизатор, который знает, как маршрутизировать дальше.
upd:
Как уже говорили, у тебя на "второй машине" неверная запись маршрута.
Правильная:
_______________________
From Siberia with Love!
Эх...
Ага, NAT извращение, а маршруты прописывать на клиентах- нет...
А что, разве да?
А что, разве да? Какая ситуация, такой рецепт. Весь просвященный мир так делает. Если нужен прозрачный роутинг туда-сюда-обратно, нафиг там роутер стоит? Ставим коммутатор, делаем единую подсеть - и вперед.
_______________________
From Siberia with Love!
Да ну, зачем тогда вообще
Да ну, зачем тогда вообще маршрутизаторы или сервера, если можно все на клиентах прописать :)) Это изврат полный. Мягко говоря.
Какие маршруты
Какие маршруты на клиентах? Ненадо никаких маршрутов на клиентах. Один шлюз по умолчанию прописывается и все. И на маршрутизаторе тоже ничего не надо, надо лишь роутинг разрешить.
Я вообще херею как наистандартнейшая задача на соединение двух подсетей может столько обсасываться и придумываться столько решений.
Сказать почему нельзя делать 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 пишу маршруты из одной в другую, С сервака обе подсети пингуются, а из одна из другой нет.
Задача один в один.
Задача один в один. Теоретически все элементарно.
eth0 смотрит в подсеть 192.168.0.1
eth1 смотрит в подсеть 192.168.1.1
В подсети 192.168.1.1 есть dhcp (раздает адреса только в этой подсети - для сетевухи eth1)
Нужно, чтобы был доступ из одной подсети в другую.
В /etc/conf.d/net пишу маршруты из одной в другую, С сервака обе подсети пингуются, а одна из другой нет.
чего не хватает? Уже неделю мучаюсь, кажется все просто, а на деле столкнулся - в тупике оказался.
ы
Видимо включить форвардинг.
В sysctl.conf прописал
В sysctl.conf прописал net.ipv4.ip_forward = 1
Результат не изменился.
Или имеется вввиду что-то другое?
Дай вывод, если айпитейлблс
Дай вывод, если айпитейлблс установлены.
iptables -L
Ы
Собсно, мне кажется, что
не нужно для твоего случая.
Особонно "-net 192.168.1.0/24 gw 192.168.0.1" - это вообще как , если подсети у тя на разных сетевухах?
Цитата:Особонно "-net
вот в этом и загвозка как дать понять серваку, что разные подсети на разных сетевухах.
Ы
Так, фаер у тя отключен. Форвард разрешён. Усё должно пахать.
В твоём случае в /etc/conf.d/net дожно быть
Во всяком случае у мя на серваке 3 сетевухи и аналогичный /etc/conf.d/net.
общий случай
общий случай
главное не забыть ВКЛЮЧИТЬ форвадинг, простой записи net.ipv4.ip_forward = 1 не достаточно,
нужна или перезагрузка или перечитывание конфига
и не помешало бы глянуть вывод
__________________________________
Главное не забыть mount /dev/hands
хоть убей - не работает. С
хоть убей - не работает. С сервера пингуются обе подсети. Одна из другой - нет.
содержимое /etc/conf.d/net
выполнение sysctl -p (хотя уже перезагружал машину)
выполнение route -n
Заметил такую штуку, если на eth1 адрес получает от dhcp, при /etc/init.d/net.eth1 restart
пишет вот это:
Если руками прописать (как выше приводил), то стартует без ошибок.
На всякий случай настройки на клиентских машинах:
на клиентских машинах шлюз
на клиентских машинах прописал шлюз сервера, обе подсети друг из друга видно.
Но связи с интернетом нет в подсети, которая 192.168.0.**
upd: из подсети 192.168.1.** инет есть. Все как положено через этот же самый сервер.
Почему подсеть 192.168.0.** сервер не пускает в инет? Что еще не так?
route для 192.168.1.1
Шлюз 192.168.1.1 знает о существовании сети 192.168.0.0/24 ?
Разрешен ли там NAT для данной сети?
Шлюз в интернет надо тоже настраивать.
Или включай NAT на 192.168.1.133 для сети 192.168.0.0/24
Если я подыму NAT, то компов
Скорее всего нет. Как ему дать понять, что есть сеть 192.138.0.0/24
Если я подыму NAT, то компов в этой подсети видно не будет. Или я ошибаюсь?
Если ошибаюсь, подскажи на примере как это грамотно сделать.
192.168.1.1
Всё зависит от того, что там стоит.
Там надо
1. добавить route на 192.168.0.0/24
2. разрешить NAT для этой сети:
Если это не Windows и стоит iptables, ищи правила SNAT и MASQUERADE для сети 192.168.1.0/24 и повторяй их для 192.168.1.0/24
или замени на 192.168.0.0/16 (но со всеми последствиями)
Можно сделать, чтобы и видно было, но это будет не так тривиально. И имеет смысл только в случае плохого отношения с админом на 192.168.1.1
http://www.gentoo.org/doc/ru/
http://www.gentoo.org/doc/ru/home-router-howto.xml
Спасибо! Помогло, все
Спасибо! Помогло, все настроил.