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

Проблемы с маршрутизацией на вторичном FIB / таблице маршрутизации во FreeBSD

Мне нужна вторичная таблица маршрутизации на этой машине. У меня все в основном настроено, но у меня проблема с тем, чтобы маршрут по умолчанию работал на вторичной выдумке.

В большей части информации я могу найти о вторичных таблицах маршрутизации, например, о простых таблицах. setfib 1 route add default 10.0.0.1 (где 10.0.0.1 - маршрутизатор в сети) используется для установки маршрута по умолчанию для вторичного fib. В этих случаях 10.0.0.1 является внешним маршрутизатором в сети и представляет собой статический маршрут. В моем случае 10.0.0.1 - это машина, на которой я пытаюсь это настроить. Это также маршрутизатор для всей сети. Если я добавлю этот маршрут, я не смогу подключиться к внешним источникам, поскольку таблица маршрутизации в значительной степени зацикливается на себе. Например:

Сначала добавляется маршрут по умолчанию (маршрут до 10.0.0.1/16 уже существует)

# setfib 1 route add default 10.0.0.1
add net default: gateway 10.0.0.1 fib 1

Пинг маршрутизатора (который является самой машиной на основном FIB) работает нормально:

# setfib 1 ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=0.043 ms
^C
--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.043/0.043/0.043/0.000 ms

Но внешние источники недоступны - «Срок жизни истек»:

# setfib 1 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
36 bytes from this_server.my.domain (10.0.0.1): Time to live exceeded
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 24ce   0 0000  01  01 3f00 10.0.0.1  8.8.8.8

^C
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss

Трассировка к внешнему источнику выявляет проблему:

# setfib 1 traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 40 byte packets
 1  this_server (10.0.0.1)  0.043 ms  0.036 ms  0.024 ms
 2  this_server (10.0.0.1)  0.033 ms  0.030 ms  0.028 ms
 3  this_server (10.0.0.1)  0.027 ms  0.031 ms  0.032 ms
    ...snip...
64  this_server (10.0.0.1)  0.132 ms  0.138 ms  0.137 ms

Открытый интерфейс на этой машине находится на другом физическом порту. Если я вручную добавлю шлюз, предоставленный провайдером, который назначается через DHCP, fib работает, хотя это не долгосрочное решение, поскольку шлюз может измениться. Я знаю, что могу настроить какой-то перехватчик для автоматического переназначения шлюза при наличии нового, но я бы предпочел сделать это чистым и правильным способом.

Я думаю, что я ищу, как маршрутизировать трафик на этой выдумке через другой интерфейс, а не через IP? Это вообще вещь? Честно говоря, я недостаточно разбираюсь в маршрутизации, чтобы действительно знать, к чему мне это нужно.

Вот сокращенная версия таблицы маршрутизации на обоих fibs (некоторые установленные туннели OpenVPN и другие разные вещи, такие как туннель ipv6, опущены):

# netstat -r4
Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
default            lo0-100.NYCMNY-VFT UGS         em0
10.0.0.0/16        link#1             U           re0

# setfib 1 netstat -r4
Routing tables (fib: 1)

Internet:
Destination        Gateway            Flags     Netif Expire
default            this_server        UGS         re0
10.0.0.0/16        link#1             U           re0

Я ценю любую помощь с этим!

Верно, вы добавляете себя в качестве маршрута по умолчанию, и это не сработает. Вам необходимо изменить шлюз на другой хост в сети 10.0.0.0, который будет обрабатывать маршрутизацию за вас.

Измените команду command route на:

setfib 1 route add default <router on 10.0.0.0 network>

Тогда, когда вы это сделаете setfib 1 ping 8.8.8.8, он будет перенаправлен на маршрутизатор, который, как ожидается, обработает его.