У меня на сервере 2 интерфейса (eno1 & eno2). Всякий раз, когда какой-либо процесс пытается достичь IP-адреса (скажем, 183.182.99.1), я хочу, чтобы трафик использовал eno2 ссылка на сайт.
Вот моя текущая таблица маршрутизации:
default via 192.168.1.1 dev eno2 metric 90
default via 172.22.1.1 dev eno1 metric 100
183.182.99.1 via 192.168.1.1 dev eno2 metric 80
Проблема здесь в том, что когда eno2 не работает, ядро пытается связаться с этим IP, используя eno1.
Вместо этого я хочу, чтобы он вышел из строя, как если бы он был отключен.
Есть ли способ добиться этого?
Да, вы можете просто "вставить" черная дыра маршрут "между" двумя вашими маршрутами. Под вставкой между я подразумеваю использование более высокой метрики, чем eno2метрика, но более низкая, чем eno1метрика. Конечно, нет маршрута по умолчанию eno1 это вообще бы и решило.
# ip route add blackhole default metric 95
Вы можете заменить blackhole
(падение) с prohibit
или unreachable
для получения различных сообщений ICMP вместо ничего (при маршрутизации. Локальные процессы сразу получают ошибку даже при blackhole
). throw
тоже может быть использован, но его цель другая и обычно предназначена для дополнительных правил IP.
Если ваша цель - защитить только 183.182.99.1 от использования eno1, затем примените это только к этому IP, например, это вместо вышеуказанного (метрика не имеет большого значения, если она выше 80, поскольку, как обычно, более короткая сетевая маска (/ 32) всегда побеждает более крупную сетевую маску (/ 0)):
# ip route add blackhole 183.182.99.1 metric 9999