Маршрутизация трафика для одного IP-адреса через указанный интерфейс

С bashили zshв режиме emacsвы можете использовать Alt + 0Alt +_. То есть удерживайте клавишу Alt и нажмите 0 и подчеркивание в последовательности (, которые на клавиатуре qwerty расположены рядом друг с другом, хотя вам нужно Shift для подчеркивания ).

Заменяется на первое синтаксическое слово предыдущей командной строки. Это может быть не последняя команда. Например, если последняя командная строка была:

$(echo echo foo) bar

Будет расширено до $(echo echo foo), а не echo.

Если вы хотите, чтобы это была одна клавиша, вы можете использовать bindв bashили bindkeyв zsh, чтобы связать эту последовательность с клавишей.

Например, для привязки к F12:

  • bash:

    bind "\"$(tput kf12)"'": "\e0\e_"'
    
  • zsh:

    bindkey -s $terminfo[kf12] '\e0\e_'
    
0
14.09.2020, 02:16
2 ответа

Добавьте маршрут узла к 192.168.1.86 с помощью следующей команды:

ip route add 192.168.1.86/32 dev eth1

где eth1 — это интерфейс, к которому подключено устройство. Этот маршрут является более конкретным, чем обычный маршрут 192.168.1.0/24, и будет выбираться при обращении к устройству, для других хостов применяется обычный маршрут.

3
18.03.2021, 23:05

Если вы можете назначить дополнительный адрес хосту 192.168.1.86, вы можете сделать это следующим образом:

На 192.168.1.86 используйте «ifconfig -a», чтобы получить список текущих настроек интерфейса, например:

# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.86  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:21:f6:41:94:37  txqueuelen 1000  (Ethernet)
        RX packets 68267884  bytes 20871214051 (19.4 GiB)
        RX errors 0  dropped 3485  overruns 0  frame 0
        TX packets 5758238  bytes 843203020 (804.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 1663  bytes 508496 (496.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1663  bytes 508496 (496.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 

В моем случае в качестве интерфейса используется eth0. Вы можете игнорировать интерфейс lo (loopback ).

Чтобы добавить адрес к этому интерфейсу, вы просто настраиваете другой "под" интерфейс и назначаете ему адрес и сетевую маску. Например:

# ifconfig eth0:1 10.33.33.33 netmask 255.255.255.0 up

В результате появится новый интерфейс с именем «eth0 :1»:

# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.86  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:21:f6:41:94:37  txqueuelen 1000  (Ethernet)
        RX packets 68268140  bytes 20871241191 (19.4 GiB)
        RX errors 0  dropped 3485  overruns 0  frame 0
        TX packets 5758341  bytes 843217718 (804.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.33.33.33  netmask 255.255.255.0  broadcast 10.33.33.255
        ether 00:21:f6:41:94:37  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 1663  bytes 508496 (496.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1663  bytes 508496 (496.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Затем на вашем хосте-мосте для интерфейса, который должен взаимодействовать с хостом 192.168.1.86, настройте этот интерфейс так, чтобы он также находился в сети 10.33.33.x (в этом примере )... скажем 10.33.33.1.

С этого момента вы больше не будете обращаться к хосту 192.168.1.86 по адресу 192.168.1.86... теперь он будет доступен по адресу 10.33.33.33.

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

Чтобы сделать дополнительное определение интерфейса постоянным на хосте 192.168.1.86, вы должны добавить файл в сценарии /etc/sysconfig/network -с именем ifcfg -eth0 :1, который может иметь похожее содержимое. этому:

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0:1
ONBOOT=yes
IPADDR=10.33.33.33
PREFIX=24

Обратите внимание, что в моем случае интерфейс был eth0. У вас может быть иначе, поэтому экстраполируйте по мере необходимости. Кроме того, в моем примере я использовал сеть 10.33.33.x, но вы должны убедиться, что указанная вами сеть не конфликтует где-либо еще в вашей среде. В целом сеть 10.x.x.x довольно безопасна,просто выберите неиспользуемую подсеть.

Предложение Йохана по использованию статического маршрута простое и понятное. Это оставит беспорядок, связанный с необходимостью ссылаться на одну и ту же сеть с обеих сторон хоста моста, но должно работать. Мое предложение выше поможет избавиться от «уродливой» проблемы двойной сети с практической точки зрения. Любой из них должен решить вашу дилемму.

1
18.03.2021, 23:05

Теги

Похожие вопросы