Маршрутизация работает, выбирая наиболее конкретное место назначения. Это означает, что вам нужно
ssh
. Таким образом, вывод ip route
должен выглядеть как:
default via 10.128.0.1 dev enp0s31f6 proto static metric 100
10.128.0.0/23 dev enp0s31f6 proto kernel scope link src 10.128.1.21 metric 100
192.168.42.0/24 dev enp0s20f0u1 proto kernel scope link src 192.168.42.65 metric 100
A.B.C.D/32 dev enp0s20f0u1 ...
Чтобы добавить последний, выполните
ip route add A.B.C.D/32 dev enp0s20f0u1 via 192.168.42.129
где 192.168.42.129
— текущий шлюз (не обязательно должен быть постоянным ).
Используйте
ip route del default via 192.168.42.129 dev enp0s20f0u1
для удаления второго маршрута по умолчанию вручную, если вы хотите убедиться, что через этот интерфейс не проходит ничего, кроме пакетов A.B.C.D и link local. Как это настроено сейчас, если первый интерфейс по какой-то причине выйдет из строя, весь трафик будет использовать этот интерфейс.
В вашем выводе у вас было 10.136.80.66
, которое было добавлено через DHCP. Я не знаю, зачем это было добавлено, но, скорее всего, это зачем-то нужно инфраструктуре.
Существуют различные способы автоматизации этой настройки, которые зависят от того, как именно настроена ваша система (диспетчер сети? /etc/network/interfaces
?)
Использование iptables
для маркировки пакетов, как это предлагается в комментарии, является глупой идеей,маршрутизация работает напрямую без необходимости установки меток. Вот для чего нужна маршрутизация.
Использование сетевой маски /24
, предложенной в одном ответе, вместо сетевой маски /32
для A.B.C.D
на самом деле приведет к маршрутизации более одного адреса назначения (, 256 из них ), так что не делайте этого. либо.