Я пытался выяснить, можно ли настроить туннель IPv6 Hurricane Electric для настройки на сервере CentOS VPS, но не делать его шлюзом по умолчанию для всего трафика IPv6, а также иметь возможность использовать подсеть / 64 делегировано через туннель.
Используя пример CentOS 7 с некоторыми изменениями в этом руководстве (это Linode VPS):
https://www.linode.com/docs/networking/set-up-an-ipv6-tunnel-on-your-linode
Причина того, что туннель не является шлюзом по умолчанию, заключается в том, что у меня уже есть собственный IPv6 через SLAAC и делегированный / 64, но я надеялся добавить туннель IPv6 в качестве сценария аварийного переключения / дополнительного сетевого маршрута IPv6 для служб, работающих на этом сервер.
Все конфигурации, которые я видел в отношении настройки интерфейса "he-ipv6", в основном принимают на себя шлюз по умолчанию, что делает мое собственное адресное пространство IPv6 больше не доступным для связи со стороной WAN, но такие возможности подключения, как ping и traceroute, по-прежнему работают в пределах server на обоих интерфейсах, протестирован путем указания конкретного интерфейса в тестах.
traceroute to ipv6.google.com (2a00:1450:400b:801::200e), 30 hops max, 80 byte packets
1 2a01:7e00::xxxx:xxxx:xxxx:xxxx (2a01:7e00::8678:acff:fe5a:1a41) 0.919 ms 1.358 ms 1.425 ms
2 2a01:7e00:7777:6::1 (2a01:7e00:7777:6::1) 0.832 ms 2a01:7e00:7777:1::1 (2a01:7e00:7777:1::1) 0.893 ms 2a01:7e00:7777:3::1 (2a01:7e00:7777:3::1) 2.858 ms
3 2001:7f8:4::3b41:1 (2001:7f8:4::3b41:1) 1.489 ms 1.489 ms 1.470 ms
4 2001:4860:0:1102::2 (2001:4860:0:1102::2) 1.768 ms 2001:4860:0:1103::3 (2001:4860:0:1103::3) 2.129 ms 2.306 ms
5 2607:f8b0:e000:8000::6 (2607:f8b0:e000:8000::6) 11.461 ms 2001:4860::c:4000:dd7a (2001:4860::c:4000:dd7a) 30.924 ms 30.940 ms
6 2001:4860::1:0:b04f (2001:4860::1:0:b04f) 12.182 ms 14.449 ms 13.446 ms
7 2001:4860:0:1::1223 (2001:4860:0:1::1223) 10.631 ms 10.818 ms 11.042 ms
8 dub08s01-in-x0e.1e100.net (2a00:1450:400b:801::200e) 11.695 ms 12.338 ms 11.674 ms
traceroute to ipv6.google.com (2a00:1450:400b:c00::8b), 30 hops max, 80 byte pac kets
1 jamesnetworks-3.tunnel.tserv1.lon2.ipv6.he.net (2001:470:1f1c:xxx::1) 5.321 ms 8.443 ms 11.440 ms
2 ge3-20.core1.lon2.he.net (2001:470:0:320::1) 11.657 ms 11.635 ms 11.610 m s
3 2001:7f8:4::3b41:1 (2001:7f8:4::3b41:1) 12.799 ms 12.776 ms 12.745 ms
4 2001:4860:0:1::2484 (2001:4860:0:1::2484) 12.380 ms 2001:4860:0:1103::3 (20 01:4860:0:1103::3) 13.500 ms 2001:4860:0:1103::2 (2001:4860:0:1103::2) 12.769 ms
5 2001:4860::c:4000:dd7a (2001:4860::c:4000:dd7a) 12.871 ms 2607:f8b0:e000:80 00::6 (2607:f8b0:e000:8000::6) 22.566 ms 2001:4860::c:4000:dd7a (2001:4860::c:4 000:dd7a) 13.663 ms
6 2001:4860::1:0:af90 (2001:4860::1:0:af90) 20.897 ms 11.010 ms 12.375 ms
7 2001:4860::2:0:b051 (2001:4860::2:0:b051) 12.114 ms 22.411 ms 11.200 ms
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 dg-in-x8b.1e100.net (2a00:1450:400b:c00::8b) 11.499 ms 11.035 ms 11.800 ms
Я настроил туннель и подтверждаю, что он работает, но мои два / 64 адресных пространства IPv6 не работают, когда оба включены. Я ищу дальнейшее руководство о том, какая конфигурация маршрутизации мне нужна, чтобы заставить это работать, возможно, немного за пределами области, описанной в документах выше.
Шлюз по умолчанию на eth0
устройство оно настроено как:
default via fe80::1 dev eth0 proto ra metric 1024 expires 1796sec
При включении he-ipv6
интерфейс, это добавлено в дополнение к вышеупомянутому:
default via 2001:470:1fxx:xx::1 dev he-ipv6 metric 1
Чем выше метрика, тем больше трафик пытается пройти через he-ipv6
интерфейс, который мне не нужен. Точно так же наличие двух маршрутов по умолчанию кажется плохой идеей.
Что я пытаюсь сделать, так это сохранить работоспособность нативного подключения IPv6, в то время как he-ipv6 активен и доступен для маршрутизации трафика на настроенные адреса IPv6 в моем маршрутизируемом / 64 через туннель в дополнение к существующему / 64 от Линоде.
Я считаю, что мне может понадобиться статическая маршрутизация здесь, но я не знаю, как с этим справиться.
Пока что, имея возможность правильно контролировать метрику в соответствии с приведенными ниже инструкциями, таблица маршрутизации IPv6 выглядит так:
unreachable ::/96 dev lo metric 1024 error -113
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -113
# Additional route added by he-ipv6
2001:470:1f1c:xxx::/64 dev he-ipv6 proto kernel metric 256
# Adding any IPv6 in the HE routed /64 to eth0 adds the route below
2001:470:1f1d:xxx::/64 dev eth0 proto kernel metric 256
unreachable 2002:a00::/24 dev lo metric 1024 error -113
unreachable 2002:7f00::/24 dev lo metric 1024 error -113
unreachable 2002:a9fe::/32 dev lo metric 1024 error -113
unreachable 2002:ac10::/28 dev lo metric 1024 error -113
unreachable 2002:c0a8::/32 dev lo metric 1024 error -113
unreachable 2002:e000::/19 dev lo metric 1024 error -113
# Linode SLAAC IPv6
2a01:7e00::/64 dev eth0 proto kernel metric 256 expires 14395sec
2a01:7e00:xxxx:xxx::/64 dev eth0 proto kernel metric 256
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -113
# Having fe80::/64 for both interfaces seems wrong?
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev he-ipv6 proto kernel metric 256
# eth0 (Linode IPv4/IPv6)
default via fe80::1 dev eth0 proto ra metric 1024 expires 1795sec hoplimit 64
# he-ipv6
default via 2001:470:1f1c:xxx::1 dev he-ipv6 metric 1025
Две ссылки на fe80::/64
не кажется здесь правильным, я не думаю, что he-ipv6 понадобится этот набор в этом случае, и мне, возможно, нужны дополнительные статические маршруты, чтобы маршрутизированные адреса / 64 были доступны извне.
Любые советы или решения будут оценены по поводу того, чтобы это работало!
Хорошо иметь два маршрута по умолчанию, но, как указывает Рон в комментариях, вы почти наверняка захотите, чтобы у них были разные метрики, так что обычно предпочтительнее будет один (предположительно интерфейс Ethernet).
Вы хотите отредактировать ifup
сценарий, который вы добавили для he-ipv6
интерфейс и добавить METRIC=100
ко дну. Когда туннельный интерфейс запущен, это должно привести к появлению двух маршрутов по умолчанию: существующего с метрикой 1 и нового с метрикой 100. Если маршрут по умолчанию через порт Ethernet уходит, то трафик v6 начнет течь. через туннель.
Имейте в виду, что вы также можете добавить несколько дополнительных статических маршрутов v6 через туннельный интерфейс в зависимости от того, что вы хотите достичь через HE.
РЕДАКТИРОВАТЬ: Redhat / CentOS не всегда реализует / не соблюдает значение METRIC в различных скриптах интерфейса. Вы, конечно, можете изменить эти сценарии, включив это значение, но это может быть нежелательно с точки зрения работоспособности, так как вам нужно будет отслеживать любые изменения, внесенные в эти стандартные сценарии.
Итак ... вы можете легко сделать это из интерфейса командной строки:
sudo ip -6 delete default via 2001:470:1fxx:xx::1 dev he-ipv6
sudo ip -6 add default via 2001:470:1fxx:xx::1 dev he-ipv6 metric 100
Вы также можете добавить это для автоматического запуска, создав сценарий с именем /sbin/ifup-local
это будет выглядеть примерно так:
#!/bin/sh
if [[ "$1" == "he-ipv6" ]]
then
sudo ip -6 delete default via 2001:470:1fxx:xx::1 dev he-ipv6
sudo ip -6 add default via 2001:470:1fxx:xx::1 dev he-ipv6 metric 100
else
#DO_NOTHING
fi
Это должно вызываться автоматически CentOS после запуска каждого интерфейса, но будет делать что-либо только в том случае, если рассматриваемый интерфейс буквально «he-ipv6».