Недавно я начал новую работу и унаследовал существующую инфраструктуру с множеством проблем.
Одна из проблем заключается в том, что предыдущий администратор добавил статические маршруты к некоторым серверам, привязанным к виртуальным интерфейсам, в командной строке, не передавая их конфигурациям сервера. Обнаружил это случайно, просматривая корневую историю.
Проблема, с которой я столкнулся, заключается в том, что история ограничена. У меня есть только пара записей командной строки, но не все. Однако ни один из знакомых мне диагностических инструментов не покажет, к каким виртуальным интерфейсам привязаны маршруты.
Чтобы быть конкретным, (с IP-адресами, сброшенными для обеспечения конфиденциальности системы), конечно:
root@web-a:/home/paul# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
14.17.24.24 10.124.74.65 255.255.255.255 UGH 0 0 0 eth0
14.17.24.23 10.124.74.65 255.255.255.255 UGH 0 0 0 eth0
18.29.146.135 10.124.74.65 255.255.255.255 UGH 0 0 0 eth0
58.21.196.19 10.124.74.65 255.255.255.255 UGH 0 0 0 eth0
10.124.74.64 0.0.0.0 255.255.255.192 U 0 0 0 eth0
0.0.0.0 10.124.74.65 0.0.0.0 UG 0 0 0 eth0
root@mweb-a:/home/paul# ip route show
14.17.24.24 via 10.124.74.65 dev eth0 src 10.124.74.73
14.17.24.23 via 10.124.74.65 dev eth0 src 10.124.74.73
18.29.146.135 via 10.124.74.65 dev eth0 src 10.124.74.73
58.21.196.19 via 10.124.74.65 dev eth0 src 10.124.74.73
10.124.74.64/26 dev eth0 proto kernel scope link src 10.124.74.69
default via 10.124.74.65 dev eth0
root@web-a:/home/paul# history|grep "route add"
66 2012-07-26 14:46:27 - route add -net 14.17.24.23 netmask 255.255.255.255 gw 10.124.74.65 eth0:2
67 2012-07-26 14:46:27 - route add -net 14.17.24.24 netmask 255.255.255.255 gw 10.124.74.65 eth0:2
Надеюсь, это ясно прошло. 'route -n', 'ip route show', ни один из них не показывает фактический виртуальный интерфейс, к которому был привязан маршрут. Итак, у меня есть два маршрута, по которым я не знаю, к какому виртуальному интерфейсу они должны перейти (на сервере пять виртуальных IP-адресов).
Важное предостережение: я плохо разбираюсь в маршрутизации. Я понимаю основы - но это все. Я довольно долгое время был администратором unix / system, но маршрутизация всегда ускользала от меня, и у меня никогда не было необходимости делать что-то более продвинутое, чем правильно подключать несколько интерфейсов.
Я понимаю, что даже не знаю, имеет значение чтобы маршруты были привязаны к конкретным виртуальным интерфейсам. Судя по выходным данным, я подозреваю, что, поскольку все идет через один и тот же шлюз (и все виртуальные интерфейсы находятся в одной сети 10.124.74), то их не нужно связывать с отдельными виртуальными интерфейсами - я ' Думаю, их можно просто привязать к физическому интерфейсу.
Однако я не желаю действовать по принципу «все должно быть хорошо».
Помощь с ясностью будет очень признательна.
Виртуальные интерфейсы (т.е. eth0:0
) - это взлом, созданный для поддержки нескольких IP-адресов на одном интерфейсе в ifconfig
. Их на самом деле не существует - они просто такие, как вы говорите ifconfig
какой IP-адрес вы хотите изменить. Ядро и инструменты iproute2 (т.е. ip
) не знаю об этих виртуальных интерфейсах, поэтому все упоминает только реальный интерфейс. В route
команда могла использовать виртуальный интерфейс для определения исходного адреса для использования, но в противном случае просто отбросила бы его.
Вам лучше работать с ip
инструмент, который поддерживает несколько адресов в интерфейсе, и использовать src
параметр для ip route
если вам нужно установить конкретный исходный адрес для маршрута.