У меня есть система, в которой периодически возникают проблемы с маршрутизацией. При просмотре таблицы маршрутизации я получаю следующее:
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
- соответствующие октеты из вашей таблицы маршрутизации.