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