Таким образом, после рытья вокруг еще некоторых, я нашел то, что продолжается. Сборка RHEL5 удара не использует terminfo вообще (почему, кто знает, это - Red Hat), это использует termcap. Однако существует, по-видимому, другой удар на поле, которое действительно использует terminfo. Поэтому подоболочки и re-execing работали бы, поскольку они будут использовать другой удар, не по умолчанию. Я чувствую себя глупым для не замечать это.
Это может быть определено от сравнения 2 команд:
# ldd "$BASH"
linux-vdso.so.1 => (0x00007fff4f1fd000)
libtermcap.so.2 => /lib64/libtermcap.so.2 (0x0000003e0bc00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003e07000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003e06c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003e06800000)
# ldd `which bash`
linux-vdso.so.1 => (0x00007fff643fd000)
libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x0000003e0d800000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003e07000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003e06c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003e06800000)
Замечая, что каждый связан против libtermcap и другого против libncurses.
Я должен был указать, что использовал RHEL здесь, поскольку это - по-видимому, критический фактор. То, почему они используют termcap, когда в значительной степени все остальные в мире отказались от него, не имеет никакого смысла, но там это.
Вы действительно читали страницу справочника, правильно?
-i interface, --interface=interface
Specifies the interface through which traceroute should send
packets. By default, the interface is selected according to the
routing table.
Хм... Просто понятие здесь, но я сказал бы - маршрутизация политики:
Добавьте новую таблицу RT к своему Linux
echo 200 test >> /etc/iproute2/rt_tables
Добавьте подбор правила политики это
ip rule add oif <iface_to_second_ISP> table test
Добавьте маршрут по умолчанию в своей недавно упакованной в ящики таблице
ip route add 0.0.0.0/0 via <second_ISP_next_hop> dev <iface_to_second_ISP> table test
Сбросьте кэши и тест
ip route flush cache
ping -I <IP_on_second_ISP_iface> google.com
Публикация этого сообщения на случай, если кто-то столкнется с той же проблемой, что и я:
В ubuntu пакет inetutils-traceroute
не работает позволяют вам установить исходный интерфейс, тогда как пакет traceroute
делает это. Вы почти наверняка захотите последнее.
У меня была та же проблема, но, к счастью, мне удалось ее исправить.
На многосетевом компьютере может быть определен только один шлюз по умолчанию, независимо от количества имеющихся интерфейсов. Если вы попытаетесь выполнить трассировку до хоста, который не находится в той же подсети, что и интерфейс, который вы указываете с помощью флага -i
, трассировка завершится неудачно из-за отсутствия шлюза (при условии, что вам не повезло достаточно, чтобы использовать единственный интерфейс, для которого определен шлюз по умолчанию).
Решением этой проблемы является определение дополнительных таблиц маршрутизации для каждого «лишнего» интерфейса на вашем компьютере.
Подробное руководство можно найти по этой ссылке.
В сводке, если у вас есть 2 интерфейса с характеристиками:
Interface A: IP: 10.0.0.10 subnet: 255.255.255.0 Gateway 10.0.0.1
Interface B: IP: 192.168.0.10 subnet: 255.255.255.0 Gateway 192.168.0.1
и в таблице маршрутизации отображается только шлюз по умолчанию A, вы должны выполнить следующие шаги, чтобы включить шлюз B:
Перейдите на / etc / iproute2 / rt_tables
и в конце следующая строка
1 routingTableB
Выполните от имени пользователя root следующие команды:
ip route add 192.168.0.0/24 dev src 192.168.0.10 table routingTableB
ip route добавить по умолчанию через 192.168.0.1 dev table routingTableB
ip rule добавить из 192.168.0.10/32 table routingTableB
ip rule добавить в 192.168.0.10/32 таблицу routingTableB
После этого вы сможете без проблем использовать флаг -i
с интерфейсом B.
Обратите внимание, что эта конфигурация будет потеряна после перезагрузки. Проверьте ссылку выше, чтобы узнать, как сделать его постоянным.
Кстати, флаг -g
не указывает, на какой IP интерфейс будет отправлять пакеты.Это параметр, включенный в зонды, предназначенный для того, чтобы указывать промежуточным узлам, как маршрутизировать пакеты.