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

Настройка туннеля IPv6 Hurricane Electric без использования шлюза по умолчанию

Я пытался выяснить, можно ли настроить туннель 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 -6 -i eth0 ipv6.google.com

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 -6 -i он-ipv6 ipv6.google.com

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».