Назад | Перейти на главную страницу

Два маршрута для локальной сети, как удалить один без GW?

У меня есть система, в которой периодически возникают проблемы с маршрутизацией. При просмотре таблицы маршрутизации я получаю следующее:

localnet        static.xx.xx.x  255.255.255.192 UG    0      0        0 eth0
localnet        *               255.255.255.192 U     0      0        0 eth0

Первый правильный, так как static.xx.xx.x - это шлюз для локальной сети. Из соображений безопасности доступ к локальной сети возможен только через этот шлюз.

Каков правильный синтаксис для "route del ..." для удаления второго маршрута? Ожидается, что я укажу GW в команде.

Где проложен этот маршрут? В / etc / network / interfaces я установил правильный маршрут при запуске.

Спасибо за ваш вклад!

Изменить: вывод «route -n» в качестве запроса:

root@lb01:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         aa.b.10.214     0.0.0.0         UG    100    0        0 eth0
aa.b.10.192     aa.b.10.193     255.255.255.192 UG    0      0        0 eth0
aa.b.10.192     0.0.0.0         255.255.255.192 U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

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

Хотя это абсолютно ужасный сетевой архитектуры, вы должны иметь возможность установить интерфейс с IP-адресом и мачтой подсети / 32. Затем добавьте статический маршрут / 32 для шлюза на этом интерфейсе и статический маршрут / 26 для вашей сети:

ip addr add 192.0.2.40/32 dev eth0
ip route add 192.0.2.1/32 dev eth0
ip route add 192.0.2.0/26 via 192.0.2.1 dev eth0

Конечно, вам придется делать это без каких-либо IP-адресов или маршрутов, настроенных на интерфейсе. Я сейчас не помню в деталях синтаксис файла debian / etc / network / interfaces, но способ его настройки должен быть очевиден.

Проблема с этим, конечно, заключается в том, что другие хосты в этой сети не будут знать, что нужно отправлять трафик на ваш хост через этот шлюз, потому что у них будет маршрут для 192.0.2.0/26 по ссылке тоже. Вот почему мы используем разные подсети для хостов, которые должны обмениваться данными через маршрутизатор. Поскольку у вас в любом случае есть маршрутизатор, настройте подсеть / 30 для этого специального хоста и используйте его.

Для справки не используйте такие сетевые инструменты, как route и ifconfig; они древние, и есть много маленьких странностей, которые их смущают. Вместо этого используйте iproute2. Команда iproute2 для удаления маршрута - это просто его удаление, указав маршрут как можно более четко:

ip route del 192.0.2.0/26 dev eth0

Это может позволить вам это сделать, а может и нет. Конечно, после этого у вас не будет доступа к сети на этом хосте, если это удастся.

Пожалуйста, предоставьте результат route -n.

РЕДАКТИРОВАТЬ:

ip route del aa.b.10.192/26 via 0.0.0.0 dev eth0

должен сделать свое дело, где aa и b - соответствующие октеты из вашей таблицы маршрутизации.