traceroute с явным выбором шлюза

Таким образом, после рытья вокруг еще некоторых, я нашел то, что продолжается. Сборка 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, когда в значительной степени все остальные в мире отказались от него, не имеет никакого смысла, но там это.

2
15.07.2013, 10:48
4 ответа

Вы действительно читали страницу справочника, правильно?

   -i interface, --interface=interface
          Specifies  the  interface  through  which traceroute should send
          packets. By default, the interface is selected according to  the
          routing table.
6
27.01.2020, 21:50
  • 1
    И это не идет никуда. Шлюз по умолчанию является все еще gw другого ISP так traceroute к шоу nexthop хорошо к чему-либо еще - ничто. Кроме того, как traceroute знал бы, что шлюз по умолчанию на eth1 10.1.0.254, если он не записан нигде? Таблица маршрутизации только показывает значение по умолчанию gw 10.0.0.254 ссылки eth0. –   15.07.2013, 11:00
  • 2
    Как Вы знаете, что у него есть 2 интерфейса? Он хочет использовать другой маршрутизатор, не другой интерфейс. –  Navin 14.06.2016, 09:11
  • 3
    @Navin, который я знаю, потому что он был явно указан в исходном вопросе! –  Michael Hampton 14.06.2016, 12:48

Хм... Просто понятие здесь, но я сказал бы - маршрутизация политики:

  1. Добавьте новую таблицу RT к своему Linux

    echo 200 test >> /etc/iproute2/rt_tables

  2. Добавьте подбор правила политики это

    ip rule add oif <iface_to_second_ISP> table test

  3. Добавьте маршрут по умолчанию в своей недавно упакованной в ящики таблице

    ip route add 0.0.0.0/0 via <second_ISP_next_hop> dev <iface_to_second_ISP> table test

  4. Сбросьте кэши и тест

    ip route flush cache

    ping -I <IP_on_second_ISP_iface> google.com

0
27.01.2020, 21:50

Публикация этого сообщения на случай, если кто-то столкнется с той же проблемой, что и я:

В ubuntu пакет inetutils-traceroute не работает позволяют вам установить исходный интерфейс, тогда как пакет traceroute делает это. Вы почти наверняка захотите последнее.

1
27.01.2020, 21:50

У меня была та же проблема, но, к счастью, мне удалось ее исправить.

На многосетевом компьютере может быть определен только один шлюз по умолчанию, независимо от количества имеющихся интерфейсов. Если вы попытаетесь выполнить трассировку до хоста, который не находится в той же подсети, что и интерфейс, который вы указываете с помощью флага -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:

  1. Перейдите на / etc / iproute2 / rt_tables и в конце следующая строка

     1 routingTableB 
     
  2. Выполните от имени пользователя 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 интерфейс будет отправлять пакеты.Это параметр, включенный в зонды, предназначенный для того, чтобы указывать промежуточным узлам, как маршрутизировать пакеты.

2
27.01.2020, 21:50

Теги

Похожие вопросы