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

Не работает маршрутизация на основе политики IPv6 в Linux

У меня есть 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 годом.