Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Ivan1
Сообщения: 80

Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение Ivan1 »

Привет.

В windows 2003 server в службе RRAS можно прописать в статических маршрутах маршрут на шлюзовой IP адрес через интрефейс у которого IP адрес не лежит в одной подсети со шлюзом.

К примеру на сетевой карте присвоен IP адрес 172.16.5.1 с маской 255.255.255.0. В службе RRAS можно прописать через этот интерфейс маршрут на шлюз с IP адресом к примеру 1.5.6.8 и такая система будет работать.

В линуксе при попытки добавить подобный маршрут командой

route add default gw 1.5.6.8

вылетает ошибка что шлюз не находится в одной подсети с каким либо интерфейсом и соответсвенно не добавляется.
При попытки добавить шлюзом сам интерефейс за которым находится шлюз к примеру командой

route add default dev eth0

добавление интерфейса происходит но без шлюза и соответсвенно ничего не работает.

Как добавить такой маршрут в линуксе?
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение danger08 »

Ivan1 писал(а):
03.02.2009 13:38
В линуксе при попытки добавить подобный маршрут командой

route add default gw 1.5.6.8

вылетает ошибка что шлюз не находится в одной подсети с каким либо интерфейсом и соответсвенно не добавляется.
При попытки добавить шлюзом сам интерефейс за которым находится шлюз к примеру командой

route add default dev eth0
добавление интерфейса происходит но без шлюза и соответсвенно ничего не работает.

Как добавить такой маршрут в линуксе?

Логика состоит в том, что клиенту можно назначить шлюзом только тот хост, который доступен ему напрямую (читай: находится в одной сети с клиентом). Я лично не вижу логики в создании шлюза, к которому все равно не получится достучаться :rolleyes:

Вероятно, вы путаете понятия "шлюз" (gateway) и "маршрут" (route). Если вы просто хотите добавить маршрут на определенную сеть через определенный шлюз, то это примерно такая конструкция:
/sbin/route add -net 1.5.6.8 netmask 255.255.255.255 dev eth1

где eth1 - интерфейс, который "глядит" в сторону сети с хостом 1.5.6.8

В man route есть примеры.
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Ivan1
Сообщения: 80

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение Ivan1 »

Вероятно, вы путаете понятия "шлюз" (gateway) и "маршрут" (route). Если вы просто хотите добавить маршрут на определенную сеть через определенный шлюз, то это примерно такая конструкция:
Цитата
/sbin/route add -net 1.5.6.8 netmask 255.255.255.255 dev eth1

где eth1 - интерфейс, который "глядит" в сторону сети с хостом 1.5.6.8

Нет я не путаю понятие маршрута и шлюза. Просто надо сервер поставить как бы в разрыв магистрали и дальше использовать VPN туннели с авторизацией. Но сам сервер не может на своей сетевой карте иметь IP адрес из той подсети которую нужно распределить, почему и получается что надо использовать IP адрес на сетевой карте какой нибудь вида 172.16.x.y или 192.168.x.y. вообщем не в одной подсети со шлюзом.

По идее подайдёт маршрут что то вида

назначение 0.0.0.0
маска 0.0.0.0
шлюз 1.5.6.8
интерфейс eth1

Как такой вписать при условии что на интерфейсе eth1 IP адрес не в одной подсети с этим шлюзом?
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение skor »

Не совсем понятно куда вы собрались ставить сервер...
Что именно вы такое "необычное" пытаетесь сделать?
Вы себе представляете как именно работает маршуртизация?
Ведь в таблице маршрутизации все равно все сводится к тому, и пакет будет пересылаться на рядомстоящий шлюз а не перепрыгивая его. IP-адрес шлюза из таблицы маршрутизации используется только для того чтоб определить MAC-адрес этого шлюза, и направить ему пакет. А определить MAC-адрес шлюза можно только находясь с ним в одной сети.
Хотите указать шлюзом адрес находящийся "далеко"? Тогда вначале создайте мрашрут для этого "далеко" с указанием рядомстоящего шлюза. Тогда сможете сослаться на этот "далекий" адрес. Но все сведется к тому что будет использовяться рядомстоящий шлюз.

UPDATE: проверил на debain`е, не дает прописать маршрут если шлюз не "рядомстоящий". Во FreeBSD дало прописать, но пакеты не отсылались.
В общем расскажите зачем вам это надо?
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение Poor Fred »

Ivan1 писал(а):
03.02.2009 16:52
Просто надо сервер поставить как бы в разрыв магистрали и дальше использовать VPN туннели с авторизацией. Но сам сервер не может на своей сетевой карте иметь IP адрес из той подсети которую нужно распределить, почему и получается что надо использовать IP адрес на сетевой карте какой нибудь вида 172.16.x.y или 192.168.x.y. вообщем не в одной подсети со шлюзом.

При поднятии ВПН появляется виртуальные интерфейс, который и лежит в одной подсети со шлюзом. Маршрут создается при поднятии ВПН-линка. Вот и все.

Ivan1 писал(а):
03.02.2009 13:38
К примеру на сетевой карте присвоен IP адрес 172.16.5.1 с маской 255.255.255.0. В службе RRAS можно прописать через этот интерфейс маршрут на шлюз с IP адресом к примеру 1.5.6.8 и такая система будет работать.

Либо система волшебная, либо ты что-то путаешь.
Убить всех человеков!
Спасибо сказали:
Ivan1
Сообщения: 80

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение Ivan1 »

Поясню немного.

Представьте подключен кабель от провайдера в сетевую карту клиента. В карте клиента прописан IP адрес с маской определённой, шлюз, и 2 DNS сервера. IP адрес прописанный в карте клиента и шлюз лежат в 1-ой подсети. Всё работает норально.

Выдёргиваем кабель из сетевухи клиента и подключаем его к одной из двух сетевух сервера, а другую сетевуху сервера соединяем отрезком кабеля с сетевухой клиента. Между сетевкхой сервера смотрящей на клиента и сетевухой клента создаётся местная лдокальная сеть.
На сервере поднимаем VPN (к примеру PPTP сервер) и с клиенского компа подключаемся на этот VPN сервер.

При подключении к VPN серверу клиенту выдаём IP адрес который по идее должен был быть прописан у него если бы не стоял промежуточный VPN сервер, т.е. тот что выдал провайдер. DNS сервера те что выдал провайдер можно сделать тоже чтоб клиент получал при подключении к промежуточному VPN серверу. Единственное что нельзя выдать это шлюз и как нибуть разрешить проброс пакетов с клента напрямую на шолюз провайдера через промежуточный сервер.

А сервер промежуточный нужен для того чтобы сделать авторизацию клиенским компьютерам т.к. компоьютеров несколько и IP адресов которые раздать нужно тоже несколько.

Но нет IP адреса свободного на то чтоб его присвоить сетевой карте на сервере смотрящей на провайдера, да и NAT включется в этом случае, а это как раз не надо. Надо пробрасывать на сквозь на шлюз провайдера.

Как вот это реализовать на линуксе? В Windows достаточно в расс прописать такой вот маршрут как я писал выше и схема работает, но Winbdows не надёжна в данном случае.
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение skor »

А как вы собрались раздавать один и тот-же реальный IP-адрес нескольким абонентам?
Забейте на всю ту фигню что вы навыдумывали.

Берете компьютер, на сетевой карте прописываете ip-адресс и шлюз полученые от провайдера.
Настраиваете VPN, авторизацию, билинги и прочие свистелки-перделки.
Адреса абонентам выдаете из "серой" сети 192.168.0.0/16.
На сервере настраиваете NAT, что-то типа такого правила:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to-source x.x.x.x
eth0 - сетевая в сторону провайдера
x.x.x.x - ваш адрес полученый от провайдера
Все счастливы!

PS: чем вам не нравится NAT?
Без NAT-а или прокси-сервера вы не сможете посадить нескольких абонентов на один IP-адрес.
Как в ррас-е вы пропишете маршрут на 2х и более абонентов?
PPS: я тут подумал, что с помощью arpd и всяких извращений можно добиться того чтоб включеный в промежуток сервер был "невидимым" и был эдаким "переходником" из простого ethernet в VPN. Но опять же, для 1 абонента.
Спасибо сказали:
Ivan1
Сообщения: 80

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение Ivan1 »

skor писал(а):
03.02.2009 19:59
А как вы собрались раздавать один и тот-же реальный IP-адрес нескольким абонентам?
Забейте на всю ту фигню что вы навыдумывали.

Берете компьютер, на сетевой карте прописываете ip-адресс и шлюз полученые от провайдера.
Настраиваете VPN, авторизацию, билинги и прочие свистелки-перделки.
Адреса абонентам выдаете из "серой" сети 192.168.0.0/16.
На сервере настраиваете NAT, что-то типа такого правила:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to-source x.x.x.x
eth0 - сетевая в сторону провайдера
x.x.x.x - ваш адрес полученый от провайдера
Все счастливы!

PS: чем вам не нравится NAT?
Без NAT-а или прокси-сервера вы не сможете посадить нескольких абонентов на один IP-адрес.
Как в ррас-е вы пропишете маршрут на 2х и более абонентов?

дело в том что адресов нескалько как я писал выше
Ivan1 писал(а):
03.02.2009 19:40
А сервер промежуточный нужен для того чтобы сделать авторизацию клиенским компьютерам т.к. компоьютеров несколько и IP адресов которые раздать нужно тоже несколько.

И надо просто напросто закрепить конкретный IP адрес за конкретным клиентом. А шлюз, маска, и DNS сервера общие.

Вариант сопоставления адресов не подходит т.к. при нём не проходит протокол ICMP до конечного владельца IP адреса (до того компа которому этот IP сопоставлен).

По этому NAT здесь не подходит. Надо как то пробросить насквозь.
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение skor »

Если адресов несколько то proxyarp опция в настройках pppd поможет.
Она именно для этого и предназначена.
Спасибо сказали:
Ivan1
Сообщения: 80

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение Ivan1 »

skor писал(а):
03.02.2009 20:16
Если адресов несколько то proxyarp опция в настройках pppd поможет.
Она именно для этого и предназначена.

А можете обяснить по подробнее про эту опцию? Можно ли с помощью неё пробрасывать пакеты на сквозь через сервер? Проходят ли там протокол ICMP?
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение skor »

client+---(pptp)---+linux+---(eth)---+ISP
Между клиентом и линуксом подымается VPN(pptp,pppoe или еще чего...).
Между провайдером и линуксом сеть x.x.x.0/255.255.255.0 (к примеру).
У провайдера адрес x.x.x.1, у линукса x.x.x.2
Клиент подключился, клиенту выдался "честный" адрес x.x.x.3
У линукса появился маршрут на адрес x.x.x.3 в сторону интерфейса ppp0.
Провайдеру надо отослать пакет на адрес x.x.x.3, т.к. у провайдера эта сеть висит непосредственно на интерфейсе, то посылается ARP-запрос на определение MAC-адреса клиента с адресом x.x.x.3. Ответ не приходит, т.к. клиент непосредственно не подключен к этому сегменту сети - ничего не работает, всем плохо.
Если у линукса указана опция proxyarp, то после подключения клиента, линукс у себя в ARP-таблице записывает адрес x.x.x.3 со своим собственным MAC-адресом. И когда приходит ARP-запрос на определение MAC-адреса x.x.x.3, линукс отвечает что у адреса x.x.x.3 - MAC-адрес принадлежащий линуксу. И тогда провайдер шлет все пакеты предназначенные для x.x.x.3 на линукс. А дальше уже по таблице маршрутизации они благополучно доходят до клиента.
ICMP будет бегать.

Без proxyarp`а можно обойтись если провайдер у себя пропишет соответствующий маршрут через линукс.
Спасибо сказали:
little Jon
Сообщения: 212

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение little Jon »

А я всегда считал что между подсетями можно устанавливать мост. Поскольку мост работает на канальном уровне то ip адреса ему как-то совсем боком.
:nopity:
Посему можно пробрасывать пакеты на шлюз провайдера прозрачно, ip -то нету :)


Linuxforum@conference.jabber.ru
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение skor »

Мост немного не в тему. На нем сложно сделать аутентификацию (хотя с 802.1x это уже вполне реально, но с удаленными абонентами это не поможет).
Спасибо сказали:
little Jon
Сообщения: 212

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение little Jon »

Если я правильно понял, то смысл задачи в установке rras сервер а на линух и прописывании статического маршрута. А не смог он его прописать потому что не создал устройства device на которое его надо прописывать, в винде для этого имеется виртуальное многопортовое устройство минипорт wan. В общем тут freeradius нужен или аналог.


Linuxforum@conference.jabber.ru
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение skor »

Нет. Главная задача у человека раздать интернет клиентам с аутентификацией. Чтоб как раз не было моста (свича). Что и было сделано под виндой на ррас`е. В тоже время ррас позволял прописать не совсем корректный маршрут по умолчанию (и насколько я понял подобное можно сделать и в линуксе с помощь ip route).
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Как вписать маршрут на шлюз, если шлюз не лежит в 1-ой подсети с IP на интерфейсе?

Сообщение danger08 »

skor писал(а):
03.02.2009 19:59
PPS: я тут подумал, что с помощью arpd и всяких извращений можно добиться того чтоб включеный в промежуток сервер был "невидимым" и был эдаким "переходником" из простого ethernet в VPN. Но опять же, для 1 абонента.

В принципе, такой "переходник" можно сделать с помощью OpenVPN в режиме TAP. Параллельно отпадает проблема авторизации на таком мосте, о чем говорилось ниже (используется авторизация методами OpenVPN).

Но здесь так делать не стоит, у человека совсем другие задачи.
Блогосайт - http://www.fateyev.com
Спасибо сказали: