У меня есть VPN-сервер, который действует как IPv6-подключение к Интернету. Настроили нас так:
Мне назначен пул адресов / 48, который я хочу подсеть для моих клиентов VPN. Для аргументации позвольте вызвать пул 2001:DB8:CAFE::/48
.
Я разделил эту сеть на следующие части: 2001:DB8:CAFE::/64
назначается фактическому каналу VPN между сервером VPN и каждым клиентом.
Это дает нам такой макет:
+--------------+ 2001:470:xxxx:xxx::/64 +---------------+ /-> Client 1 network (2001:DB8:CAFE:100::/56) | + <-- Tunnelbroker link -> + | / | The internet | | My VPN Server + <-*---> VPN link - network topology (2001:DB8:CAFE::/64) | + <- Native IPv6 link ---> + | \ +--------------+ 2a01:xxxx:xxxx:xxxx::/48 +---------------+ \-> Client 2 network (2001:DB8:CAFE:200::/56)
Я хочу, чтобы весь трафик поступал из 2001:DB8:CAFE::/48
маршрутизируется по моей ссылке Tunnelbroker - и только эта ссылка.
Это приводит меня к следующему сценарию:
# Reset IPv6 routing table.
ip -6 rule flush
# Reset Tunnelbroker routing table (table name: "he-ipv6").
ip -6 route flush table he-ipv6
# Add routeable VPN subnets to Tunnelbroker routing table
ip -6 rule add from 2001:DB8:CAFE::/48 table he-ipv6
# Any traffic that originates from VPN has to be forwarded via Tunnelbroker routing table
# using the tunnelbroker link (link name: he-ipv6).
ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table he-ipv6
# Add default IPv6 rules again - since they gets deleted by the initial rule flush command.
ip -6 rule add priority 32766 from all table main
Однако: когда я запускаю ip -6 route add default ...
-command я получаю следующую ошибку:
RTNETLINK answers: No route to host
Проблема в том, что мог пинговать 2001:470:xxxx:xxx::1
до того, как я запустил скрипт, но не после.
Что мне не хватает?
Do'h! Порядок команд имеет значение.
Причина команды ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table he-ipv6
не сработало, маршрут был определен в main
стол.
Но поскольку начальная команда flush удаляет основную таблицу, вам нужно добавить ее снова перед ты делаешь ip route default
команда.
Таким образом, правильный сценарий:
# Reset IPv6 routing table.
ip -6 rule flush
# Add default IPv6 rules again - since they gets deleted by the initial rule flush command.
ip -6 rule add priority 32766 from all table main
# Reset Tunnelbroker routing table (table name: "he-ipv6").
ip -6 route flush table he-ipv6
# Add routeable VPN subnets to Tunnelbroker routing table
ip -6 rule add from 2001:DB8:CAFE::/48 table he-ipv6
# Remember to add a rule that if no machine does not respond to a
# packet address in my /48, then we should return unreachable.
# Else the package will be forwarded by default out through the
# Hurricane Electric connection.
#(From the Internet)
ip -6 route add unreachable 2001:DB8:CAFE::/48
#(From my /48 subnet)
ip -6 route add unreachable 2001:DB8:CAFE::/48 table mynet6
# Any traffic that originates from VPN has to be forwarded via Tunnelbroker routing table
# using the tunnelbroker link (link name: he-ipv6).
ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table he-ipv6
Я оставлю здесь вопрос и ответ, поскольку я, вероятно, не единственный, кто пытается выполнять маршрутизацию IPv6 на основе источника.
Самая последняя информация, которую я нашел по этому поводу, датируется 2010 годом.