Назад | Перейти на главную страницу

Указание IP-адреса источника для маршрута к хосту

Я использую Ubuntu 12.04. Я назначил два IP-адреса сетевой карте, отредактировав / etc / network / interfaces. Теперь это выглядит так (пропуская строки, не связанные с вопросом).

auto eth0
iface eth0 inet static
    address 192.168.60.23
    netmask 255.255.255.0
    gateway 192.168.60.1
    up route add 192.168.60.1 dev eth0
    up route add 10.0.1.1 dev eth0
    up route add 192.168.60.151 gw 10.0.1.1

auto eth0:1
iface eth0:1 inet static
    address 192.168.60.101
    netmask 255.255.255.0

Теперь, однако, я хотел бы, чтобы пакеты, идущие на 192.168.60.151, покидали мою машину со вторым IP-адресом (192.168.60.101) в качестве адреса источника.

Я попытался добавить src 192.168.60.101 в соответствующую строку восходящего маршрута, но это не сработало. Я также пытался переместить эту строку в блок eth0: 1, но это тоже не сработало. Когда я выполняю ip route get 192.168.60.151, я всегда получаю 192.168.60.151 через 10.0.1.1 dev eth0 src 192.168.60.21.

Я погуглил, но не понял, как изменить исходный адрес исходящих пакетов.

Это должно сработать. Он использует синтаксис ip (8) вместо route (8), но в остальном эквивалентен. Маршрут к 192.168.60.151 должен быть установлен во втором определении интерфейса, иначе адрес src еще не установлен и команда завершится ошибкой.

auto eth0
iface eth0 inet static
    address 192.168.60.23
    netmask 255.255.255.0
    gateway 192.168.60.1
    # The next line should not be necessary, the target is on the same subnet and link
    # up ip route add 192.168.60.1 dev eth0
    up ip route add 10.0.1.1 dev eth0

auto eth0:1
iface eth0:1 inet static
    address 192.168.60.101
    netmask 255.255.255.0
    # ip(8) uses 'via' instead of 'gw'
    up ip route add 192.168.60.151 via 10.0.1.1 src 192.168.60.101