Вот что-то не пойму одну ситуацию.
Есть сервер, у него кучка статических маршрутов в разные подсети, заюзан src-based роутинг для того чтобы он отвечал с тех же интерфейсов на которые получает запрос, проблем нет.
Понадобилось добавить маршрут до одного хоста который лежит за цисковским впном, ну делаю как обычно:
ip route add 172.16.1.1 via 10.1.0.1 dev vlan2 src 10.1.0.3
Пингую с сервера. Не работает. Смотрю капчур на цыске:
# sh capture cap1
10 packets captured
1: 11:53:33.711617 802.1Q vlan#8 P0 <EXT_IP> > 172.16.1.1: icmp: echo request
2: 11:53:34.717110 802.1Q vlan#8 P0 <EXT_IP> > 172.16.1.1: icmp: echo request
Т.е. сервер почему-то выбирает в качестве source-address свой внешний реальный айпи, который вообще в другом влане висит и к делу никак не относится.
Хорошо, делаю так:
ping -I 10.1.0.3 172.16.1.1
Нихрена, опять то же самое. ip route flush cache делал, не помогает.
Почему даже если я пингу явно указываю исходный интерфейс или айпишник, он всё равно выбирает другой?
tcpdump на самом серваке показывает то же что и цыска:
# tcpdump -n -i vlan2 'icmp and host 172.16.1.1'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan2, link-type EN10MB (Ethernet), capture size 68 bytes
12:04:04.241353 IP <EXT_IP> > 172.16.1.1: ICMP echo request, id 14, seq 1, length 64
12:04:05.247592 IP <EXT_IP> > 172.16.1.1: ICMP echo request, id 14, seq 2, length 64
Куда еще покопать?