LINUX.ORG.RU
ФорумAdmin

route чудит.. или я

 


0

1

Всем привет, столкнулся с некоторой, непонятной для меня проблемой

есть 2 сети

192.168.43.0/24 192.168.50.0/24

сеть 43 поднимается по wi-fi (по требованию - инет по мобиле), 50 локалка - подключена всегда... есть значит у меня такое interfaces

auto lo
iface lo inet loopback

#===========================================
# LOCAL 
#===========================================
auto eth0

iface eth0 inet static
address 192.168.50.10
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.50.255
gateway 192.168.50.254

и казалось бы подсеть должна подниматься со своим шлюзом, но из-за того что он один то он ставится на default и видим следующее

root@box:~# route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         192.168.50.254  0.0.0.0         UG    0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.50.0    *               255.255.255.0   U     0      0        0 eth0

а после того как цепляется вафля видим такое:

root@box:~# route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         192.168.43.1    0.0.0.0         UG    0      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.50.0    *               255.255.255.0   U     0      0        0 eth0
192.168.43.0    *               255.255.255.0   U     9      0        0 wlan0

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

а теперь вопрос: почему сеть недоступна?

root@box:~# route del -net 192.168.50.0 netmask 255.255.255.0 
root@box:~# route add -net 192.168.50.0 netmask 255.255.255.0 gw 192.168.50.254 dev eth0
SIOCADDRT: Сеть недоступна

если сделать так:

root@box:~# route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.50.254 dev eth0
то запись добавляется без проблем

★★★★★

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

этот косяк я поправил, а сюда копирнул не исправленный, но он сути не меняет совсем.

jo_b1ack ★★★★★
() автор топика

Логично: 2 шлюза по умолчанию - это отдельные танцы с бубном.

Определись где у тебя какие подсети кроме 0.0.0.0/0 и сделай на них статические маршруты. А уже потом крути шлюз по умолчанию как тебе вздумается.

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

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

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

Ну так ясен пень, ты удалил connected route и хочешь зароутить сеть 192.168.50.0/24 через шлюз в сети, маршрут в которую ты только что удалил?

Зачем тебе вообще удалять сеть 192.168.50.0/24 из таблицы маршрутизации?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Зачем тебе вообще удалять сеть 192.168.50.0/24 из таблицы маршрутизации?

а как еще можно назначит другой шлюз ?

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

Ээээ? Ты кажется не понимаешь как это работает.

Смотри, грубо говоря(потому что есть еще всякие recursive routing и протоколы динамической маршрутизации, но давай об этом умолчим - у тебя такой дичи там нет и не будет) в твоей топологии есть 2 вида маршрутов:

1) connected route. Это сеть, которая настроена на самом интерфейсе и доступна через него напрямую без всяких шлюзов.

Выглядит такой маршрут в выхлопе route так:

192.168.50.0    *               255.255.255.0   U     0      0        0 eth0

Обрати внимание на вторую колонку - там вместо шлюза указан *, что означает что шлюз не используется для данной подсети

2) static route. Сеть доступная через какой-то шлюз(который в свою очередь должен быть в одной из подсетей connected route-ов).

Частным случаем static route является маршрут по умолчанию(default route) - куда слать весь трафик, который не попал под любое другое правило(connected или более специфичных static route-ов).

Шлюз по умолчанию в выхлопе route выглядит так:

default         192.168.43.1    0.0.0.0         UG    0      0        0 wlan0

Обрати внимание на маску подсети(0.0.0.0) и наличие адреса шлюза во второй колонке. default в первой колонке - это своеобразный алиас для записи адреса сети 0.0.0.0.

То есть маршрут по умолчанию имеет адрес сети 0.0.0.0 и маску 0.0.0.0.

Соответственно процедура его добавления и удаления выглядит примерно так:

route del -net 0.0.0.0 netmask 0.0.0.0
route add -net 0.0.0.0 netmask 0.0.0.0 gw ip_адрес_шлюза

Имя интерфейса при добавлении статического маршрута(и маршрута по умолчанию в том числе, т.к. как я уже сказал - это разновидность статического) можно не указывать - оно высчитается автоматически из connected route-а той сети которой принадлежит шлюз.

Соответственно ты своими действиями не добавлял шлюз по умолчанию. Ты удалил connected route для проводной подсети и при попытке прописать статический маршрут(не default) на удаленную подсеть через шлюз в этой же подсети(которой еще НЕТ в таблице маршрутизации, т.к. ты ее только что и удалил) - закономерно получил облом!

Ну и наконец: ты же понимаешь, что убрав шлюз по умолчанию из wifi-подсети ты фактически не будешь пользоваться wifi-ем, кроме как для доступа к подсети 192.168.43.0 ?

В очередной раз рекомендую первые пару-тройку частей из цикла «Сети для самых маленьких». Конкретно часть 3 про статическую маршрутизацию - разложит всё по полочкам.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

Я не хотел убирать шлюз по умолчанию(43.1) я хотел добавить статический маршрут для 50.0/24 на 50.254 и все.

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

Эээ, ты не можешь добавить статический маршрут для connected-сети через шлюз в ЭТОЙ ЖЕ сети. А сеть 50.0/24 подключена у тебя НЕПОСРЕДСТВЕННО по Ethernet.

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