LINUX.ORG.RU
ФорумAdmin

основной шлюз из другой подсети


0

0

в общем, не хочет подниматься основной шлюз из другой подсети. вот interfaces:

allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 10.10.2.15
network 10.10.0.0
netmask 255.255.0.0
up route add -net 10.20.0.0 netmask 255.255.0.0 gw 10.10.254.254
up route add -net default netmask 0.0.0.0 gw 10.20.1.8

вот таблица маршрутов сразу после включения:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.20.0.0       10.10.254.254   255.255.0.0     UG    0      0        0 eth0
10.10.0.0       0.0.0.0         255.255.0.0     U     0      0        0 eth0

как видите, не хочет подниматься именно второй маршрут. 10.20.1.8 пингуется отлично. при попытке поднять вручную выдаёт «SIOCADDRT: No such process». такой же маршрут со шлюзом 10.10.1.4 прописывается без проблем. что я делаю не так?



Последнее исправление: brin (всего исправлений: 1)

Ответ на: комментарий от brin

Пацаны фантазировали.

Если уж очень хочется сотворить такую глупость — добавь чужую подсеть в качестве своей на eth0: ip ro add 10.20.0.0/16 dev eth0 _без гейта_. Само собой, с последствиями этой глупости разбирайся сам. Вряд ли оно будет работать.

Если хочется, чтобы работало, делай туннель. Или хотя бы настрой роутинг на 10.10.254.254.

nnz ★★★★
()

То что то ты хочешь сделать называется strict/soft source routing.
Дело в том, что ты хочешь указать первому маршрутизатору (10.10.254.254) куда он должен направить твой пакет.
В IP пакете даже есть опции для указания этой информации. [1]
Насколько я понимаю, через route это сделать нельзя, но есть более кошерный ip route.

Можно попробовать что-то вроде:
ip route add to default nexthop via 10.10.254.254 dev eth0 via 10.20.1.8

Другое дело что с вероятностью 99,9% твой первый маршрутизатор отвергнет такой пакет или проигнорирует содержащуюся в нём инфу о пути.
Это обычное поведение большинства маршрутизаторов по-умолчанию. Чтобы такое работало, нужно как правило разрешить это.

[1] http://www.ietf.org/rfc/rfc791.txt

Nao ★★★★★
()

Дело в том что адрес следующего маршрутизатора это то что Gateway 10.10.254.254 должен быть доступен с помощью arp протокола иначе ничего не выйдет(Иными словами на расстояние одного хопа, Иными словами после ping 10.10.254.254 в arp-кеше должен быть мак это можно проверить коммандой arp -an, Иными словами тот кто Gateway 10.10.254.254 должен быть с Вами в одной локальной сети).Такая логика у системы: если есть адрес 10.10.254.254 и он указан как Gateway то система посылает к нему широковещательный запрос arp, получив ответ формирует соответствующие пакеты в сет, если такой arp запрос оказался неудачным то пакет отбрасывается. Можно ли эту логику обойти ... Можно либо фарволом маркировать такие пакеты и отправлять туда куда нужно. Либо если роутеры в сети поддерживают мягкую или жесткую маршрутизацию от источника ( это IP-опция ) то можно просто фаирволом добовлять в пакет эту опцию. Теперь стоит задуматься какой из фаирволов это сможет сделать...а ну и самый интересный способ: немного поправить ядро :). Мое мнение немного субъективно, возможно где то что то я пропускаю. Но как показывает практика и RFC все именно так и работает. Хотя производители систем не всегда придерживаются RFC так что вполне реально найдется такой дистрибутив который сможет это сделать так просто без всяких вмешательств...

Aazzz
()

10.10.254.254 у тебя шлюз в 10.20.. Т.е. у него есть интерфейсы и в 10.10. и в 10.20.. Если на 10.10.254.254 дефолтом прописан 10.20.1.8, то достаточно одного маршрута:

up route add -net default netmask 0.0.0.0 gw 10.10.254.254

по нему будет и 10.20. и все остальное.

lvi ★★★★
()
Ответ на: комментарий от lvi

о, а вот это интересно. надо будет запилить

brin
() автор топика
Ответ на: комментарий от nnz

Если уж очень хочется сотворить такую глупость — добавь чужую подсеть в качестве своей

Наверное, надо еще и адрес себе из этой сети на интерфес добавить?

power
()
Ответ на: комментарий от power

>Наверное, надо еще и адрес себе из этой сети на интерфес добавить?

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

nnz ★★★★
()

схемы сети я не знаю, но может можно сделать так:

iface eth0 inet static 
address 10.10.2.15 
network 10.0.0.0 
netmask 255.0.0.0

up route add -net 10.20.0.0 netmask 255.255.0.0 gw 10.10.254.254

up route add -net default netmask 0.0.0.0 gw 10.20.1.8

dr0n
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.