Исходный ip на основе сетей в Ubuntu - PullRequest
0 голосов
/ 05 ноября 2018

У меня 3 интерфейса в машине с Ubuntu. eth0 / eth1 / eth2.

  • eth0 - интерфейс управления с ip (10.102.x.x)
  • eth1 - частный интерфейс с ip 192.168.1.x
  • eth2 - еще один частный интерфейс с ip 192.168.2.x

Я хочу добраться до 25.25.25.x (это поле в какой-то другой сети). Вот топология: -

Ubuntu machine <----------------> Router <------------> End Machine
192.168.1.x                 192.168.1.x   25.25.25.x     25.25.25.x

Я хочу достичь 25.25.25.x, используя интерфейсы eth1 и eth2. Так что для этого я пытаюсь сделать исходные таблицы маршрутизации на основе IP. Вот применяемая конфигурация:

ifconfig eth1 up
ifconfig eth1 192.168.1.x netmask 255.255.255.0
ip rule add from 192.168.1.x table 1 
ip route add 192.168.1.0/24 dev eth1 scope link table 1
ip route add default via 192.168.1.x dev eth1 table 1

Однако это не удачно, так как ping 25.25.25.x -I eth1 не работает. Однако прямой маршрут работает:

ifconfig eth1 up
ifconfig eth1 192.168.1.x netmask 255.255.255.0 
route add -net 25.25.25.0/24 gw 192.168.1.x

В нерабочем случае клиент linux выполняет трансляцию для 25.25.25.x ip, чего не должно быть.

Вот выходные данные ip route и ip route show table 1: -

root@ubuntu:~# ip rule show
0:  from all lookup local 
32765:  from 192.168.1.x lookup 1 
32766:  from all lookup main 
32767:  from all lookup default 
root@ubuntu:~# ip route show table 1
default via 192.168.1.x dev eth1 
192.168.1.0/24 dev eth1 scope link

Может кто-нибудь ответить, почему первый случай не работает?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Варианты использования для такой конфигурации:

  • обеспечивает ответ на входящий трафик через тот же интерфейс, например
  • протоколы и приложения с множественной адресацией, , например, SCTP

В основном это работает для меня просто отлично. Содержание /etc/network/interfaces:

auto eth1
iface eth1 inet static
  address 192.168.1.19
  netmask 255.255.255.0
  gateway 192.168.1.254 # default gateway if no source address
  post-up ip link set eth1 promisc on
  post-up ip route add 192.168.1.0/24 dev eth1 table 122
  post-up ip route add default via 192.168.1.254 table 122
  post-up ip rule add from 192.168.1.19/32 table 122 priority 122
  post-up ip route flush cache
  pre-down ip rule del from 192.168.1.19/32 table 122 priority 122
  pre-down ip route flush table 122
  pre-down ip route flush cache

auto eth2
iface eth2 inet static
  address 192.168.2.19
  netmask 255.255.255.0
  post-up ip link set eth2 promisc on
  post-up ip route add 192.168.2.0/24 dev eth2 table 222
  post-up ip route add default via 192.168.2.254 table 222
  post-up ip rule add from 192.168.2.19/32 table 222 priority 222
  post-up ip route flush cache
  pre-down ip rule del from 192.168.2.19/32 table 222 priority 222
  pre-down ip route flush table 222
  pre-down ip route flush cache 

Тогда:

$ ip route get 8.8.8.8
8.8.8.8 via 192.168.1.254 dev eth1  src 192.168.1.19 
    cache 
$ ip route get 8.8.8.8 from 192.168.1.19
8.8.8.8 from 192.168.1.19 via 192.168.1.254 dev eth1 
    cache 
$ ip route get 8.8.8.8 from 192.168.2.19
8.8.8.8 from 192.168.2.19 via 192.168.2.254 dev eth2 
    cache 
0 голосов
/ 05 ноября 2018

Ваша конфигурация не имеет смысла.

правило ip, добавленное из таблицы 192.168.1.x 1

Это говорит о том, что если мы знаем, что пакет из 192.168.1.x, мы можем использовать таблицу 1 для его маршрутизации.

ip route добавить значение по умолчанию через 192.168.1.x dev eth1 таблица 1

Это говорит о том, что, если мы знаем, что используем таблицу 1 для маршрутизации пакета, маршрут по умолчанию будет через 192.168.1.x.

Видите проблему? Только таблица 1 знает, что ваш маршрут по умолчанию доступен через маршрутизатор 192.168.1.x. И только зная, что маршрут по умолчанию доступен через 192.168.1.x, вы должны использовать таблицу 1. Поэтому не следует ожидать, что эта конфигурация будет работать так, как вы ожидаете.

Я не понимаю, почему вы пытаетесь использовать маршрутизацию на основе источника. Вы просто хотите направить определенный путь к определенному месту назначения. Трудно предложить изменения, не понимая, почему вы делаете вещи более сложными, чем они должны казаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...