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

Изменить исходный IP-адрес для определенного целевого хоста

Это продолжение этот вопрос обо мне. (Все еще на Debian 7.8)

Проблема на самом деле не связана с IPSec или чем-то еще, потому что я даже не могу проверить связь с удаленным хостом с «правильным» исходным IP (через ping -I eth1: ipsec).

Вот необходимая информация:

inet xxx.xxx.xxx.94/24 brd xxx.xxx.xxx.255 scope global eth1
inet xxx.xxx.xxx.92/29 brd xxx.xxx.xxx.95 scope global secondary eth1:ipsec

Я хочу, чтобы в моих подключениях использовался gw по умолчанию и стандартный IP-адрес eth1: .94, но одно соединение с удаленным хостом использовало eth1: ipsec: .92.

Я считаю, что это проблема маршрутизации, поэтому я добавил таблицу правил маршрутизации:

0:      from all lookup local
2:      from all to xxx.xxx.xxx.21 lookup 17
32766:  from all lookup main
32767:  from all lookup default

и 17 имеет:

xxx.xxx.xxx.21 via xxx.xxx.xxx.91 dev eth1  src xxx.xxx.xxx.92

Но даже сейчас, если я пингую, пакеты получат исходный IP-адрес .94 (даже с ping -I eth1: ipsec или -I xxx.xxx.xxx.92):

xxx.xxx.xxx.94 > xxx.xxx.xxx.21: ICMP echo request, id 20865, seq 9, length 64
IP xxx.xxx.xxx.21 > xxx.xxx.xxx.94: ICMP echo reply, id 20865, seq 9, length 64

Также SNAT-передача пакетов через iptables ничего не делает, по-прежнему неправильный IP-адрес источника.

... Я здесь совершенно потерялся.

После нескольких болезненных дней отладки, маршрутизации и таблиц маршрутизации и кипящей головы я отказался и перенастроил всех клиентов IPSec, находящихся под моим непосредственным контролем, на использование IP-адреса .92, и теперь все работает, как ожидалось.

Я все еще не понимаю, почему я не могу выполнить sourceroute или SNAT пакеты ... время для серьезного тестирования в моей тестовой среде (я подозреваю какую-то сумасшедшую несовместимость между IP-псевдонимом, кардиостимулятором и таблицами маршрутизации или чем-то в этом роде, или просто глупость).