OpenVPN IPV6 Туннельный Радвд

У меня есть интересный вопрос относительно ipv6 + openvpn..

Моя версия OpenVPN 2.1.1

мне дали 2 родных /64 сети ipv6

(Блок 1 -> 2a01:abc:123: deac:: /64)

(Блок2 -> 2a01:abc:123: dead:: /64)

(Шлюз -> 2a01:abc:123: глухой:: 1/59) * У меня нет контроля над этим *

План был / есть, направить этот "Block2" через openvpn и в офис (для целей тестирования)

Су, чтобы объяснить..

У меня есть Centos Box в качестве первого linux-маршрутизатора в центре обработки данных и Ubuntu box в качестве второго linux-маршрутизатора в офисе. Я создал простой туннель точка-точка с использованием tun (на основе адреса ipv4 для запуска туннель)

Я назначил в Centos

ip addr add 2a01:abc:123:dead::1/64 dev eth0
ip addr add fed0::2/128 dev tun0

ip route add 2a01:abc:123:dead::/64 dev tun0  ## ipv6 Block2 down the tunnel
ip route add ::/0 via 2a01:abc:123:deaf::1 dev eth0 ## Default out to Gateway

Я назначил на Ubuntu

ip addr add fed0::3/128 dev tun0
ip addr add 2a01:abc:123:dead::2/64 dev eth0

ip route add ::/0 via 2a01:abc:123:deaf::1 dev tun0 ## Default up the tunnel

Я также включил на обоих серверах..

sysctl -w net.inet6.ip6.forwarding=1

Выглядит хорошо... правильно??? Неправильно..:(

Я не могу пропинговать шлюз или 2a01:abc:123:dead::1 из Ubuntu-eth0

Я могу получить доступ к Интернету с любого интерфейса ipv6 на Centos Box, но явно не с Ubuntu Box..

Кроме того, в конечном итоге я буду запускать radvd на Ubuntu box eth0 и автоматически настраивать сеть с адресом ipv6

Кто-нибудь с некоторыми советами / советами, чтобы помочь мне..???

ура

2 ответа

Решение

Ваш вопрос действительно меня зацепил, так как я могу использовать то же решение в другой сети, которой я управляю. Я экспериментировал с этим, и это действительно возможно! (Я просто люблю Linux...).

Я создал лабораторию Netkit, которая моделирует вашу ситуацию. Вы можете скачать лабораторию здесь (1,8 КиБ).

Вам не нужно устанавливать Netkit, если вы не заинтересованы в тестировании его на своем компьютере. Вы можете просто получить пакет выше и посмотреть файлы.startup для разных машин. Если вы хотите протестировать лабораторию, ей нужна файловая система с установленным "radvd", которая не входит в стандартную файловую систему Netkit. Проверьте README пакета файловой системы, чтобы увидеть, как смонтировать его на вашем компьютере, а затем использовать apt-get update && apt-get install radvd,

Лаборатория состоит из 6 машин: v6site (некоторый интернет-сайт V6, к которому вы хотите получить доступ), v6isp (ваш провайдер), r1 (ваш первый маршрутизатор с подключением V4 и V6), r2 (ваш второй маршрутизатор, который подключается к r1 через OpenVPN), pc1 и pc2 (машины подключены и обслуживают IPv6 через r2).

Я использовал префикс документации RFC 3849 2001:DB8::/32 в примере вместо случайных адресов, которые вы использовали. Кроме того, я использовал FEC0::/96 для конечных точек OpenVPN, который устарел. В вашем развертывании рекомендуется использовать небольшой префикс вместо уникального локального адреса.


Пояснение: RFC 3849 определяет префикс 2001:DB8::/32, который будет использоваться в качестве примера и для целей документации (для глобальной одноадресной передачи). Вместо того чтобы выбирать какой-либо случайный IPv6-адрес, пользователям рекомендуется использовать адреса с префиксом 2001:DB8::/32 в качестве подстановочного знака в примерах, которые будут заменены на что-то другое в фактическом развертывании. В этом вопросе сначала 2001:acb:132:acb::/64, затем 2001:123:123:11a1::/64. В ответ я просто заменил оба адреса на префикс документации. Когда вы применяете ответ к своему реальному сценарию, просто посмотрите на каждое вхождение 2001: DB8:: адреса и замените их фактическими адресами.

Конечные точки туннеля также должны иметь адреса. Адреса, используемые в конечных точках туннеля, не должны быть внешне маршрутизируемыми, поскольку они используются только внутри. Вы использовали адреса, начинающиеся с FED1:: и FED2::, а я использовал адреса, начинающиеся с FECO::. Эти адреса были первоначально определены в RFC 3513. Они эквивалентны частным адресам IPv4 10.0.0.0/8, 192.168.0.0/16 и 172.16.0.0/12. Из-за проблем они позже были объявлены устаревшими в RFC 3879 в пользу уникальных локальных адресов (ULA) в RFC 4193. ULA имеют "случайный" префикс, уникальный для каждого конечного пользователя. Преимущество состоит в том, что если по какой-либо причине вы будете маршрутизировать между этими сетями, например, с использованием туннелей, они смогут общаться друг с другом без трансляции адресов (в то время как конфликты могут возникать и случаются, например, при использовании 192.168.0.0/16). Страница, на которую ссылаются до этого разъяснения, поможет вам создать свой собственный префикс ULA (и, возможно, зарегистрировать его, но регистрация не обязательна).

Нет реальной проблемы в использовании локальных адресов сайтов, таких как FECx или FEDx, в конечных точках туннеля. Они устарели, но это не делает их неправильными. Просто рекомендуется использовать ULA.


Общая конфигурация вашего первого маршрутизатора (r1) приведена ниже. Следуйте за комментариями для лучшего понимания.

# Enable forwarding for IPv6 (between eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1

## ISP V6 Internal network
# Since there is no host specific address, we pick an address in the /64
# prefix. Note that this address is the same in two different prefixes:
# ..11a1::/64 and ..11a0::/59. This requires a proxing hack in R2.
# Optimally, you would have an address in the /59 prefix to use here,
# outside the delegated /64 prefix.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::1/59 dev eth0
ip route add default via 2001:db8:1:11a0::1 dev eth0

## V4 Internet
ip link set eth1 up
ip addr add 192.168.1.1/24 dev eth1

## OpenVPN tunnel via IPv4 Internet to R2
# This is the most basic configuration of OpenVPN. No encryption, no security,
# no nothing. DO NOT USE THIS OUTSIDE THIS LABORATORY.
openvpn --dev tun --tun-ipv6 --daemon

while ! ip link show tun0 2>/dev/null
do
    echo "Waiting for OpenVPN to connect..."
    sleep 1
done

# Configure OpenVPN endpoints. Choose a distinct small prefix for the endpoints
# and use it to route the the /64 prefix to R2.
ip link set tun0 up
ip addr add fec0::1/96 dev tun0
ip route add 2001:db8:1:11a1::/64 via fec0::2 dev tun0

Общая конфигурация для второго маршрутизатора (r2):

# Enable forwarding for IPv6 (between eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1

## Internal Company IPv6 Network
# The router address is arbitrary.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::ffff/64 dev eth0

## V4 Internet
ip link set eth1 up
ip addr add 192.168.1.2/24 dev eth1

## OpenVPN tunnel via IPv4 Internet to R1
# This is the most basic configuration of OpenVPN. No encryption, no security,
# no nothing. DO NOT USE THIS OUTSIDE THIS LABORATORY.
openvpn --remote 192.168.1.1 --dev tun --tun-ipv6 --daemon

# Wait for OpenVPN...
while ! ip link show tun0 2>/dev/null
do
    echo "Waiting for OpenVPN to connect..."
    sleep 1
done

# Configure OpenVPN endpoints. See comments for R1 above.
# Note that we route ALL IPv6 traffic through the tunnel.
ip link set tun0 up
ip addr add fec0::2/96 dev tun0
ip route add default via fec0::1 dev tun0

# R1 address is in our private network (eth0, see above), but on the other
# side of the tunnel. We need a more specific route specifically for it.
# Also, make this router (R2) act as a neighbor proxy so that other
# machines on the private network can see R1 through the tunnel.
# This is a hack that would be avoided if we had a bigger prefix than
# /64, or if R1 had a host-specific address outside of the /64.
ip route add 2001:db8:1:11a1::1/128 via fec0::1 dev tun0
ip neigh add proxy 2001:db8:1:11a1::1 dev eth0

## Routing advertisement daemon
# NOTE: The standard Netkit filesystem does not have radvd, it has to be
# installed manually with `apt-get update && apt-get install radvd` in
# the model fs.
chmod 644 /etc/radvd.conf
radvd

Конфигурация для ПК, подключенных к r1 (eth0), чрезвычайно проста, благодаря radvd:

sysctl -w net.ipv6.conf.all.autoconf=1
ip link set eth0 up

Это самая важная конфигурация. Другие подробности (включая копию файла /etc/radvd.conf от r2) находятся в лабораторном пакете выше.

Попросите вашего туннельного брокера выделить /56 или /48, хотя бы другое /64. После этого вы сможете сгенерировать / 64 в этом блоке для дальнего конца ссылки. Если у вас несколько туннелей, вам понадобится отдельный / 64 для каждого туннеля.

Я ожидаю, что адреса FED1 всегда будут только на устройствах TUN. (Локальные адреса сайта устарели и не должны использоваться.) Вероятно, вам придется указать маршрутизацию для:: 0/0 на стороне Ubuntu. Используйте адрес 2001: или FED1:x: для интерфейсов Ubuntu eth0. RADV должен автоматически подобрать адрес, но я его запрограммировал.

Моя конфигурация использует мое распределение /48 для сетевых устройств и / 64 для адресов DMZ. Это облегчает настройку брандмауэра, так как они находятся в непересекающихся диапазонах.

Ваши результаты пинга - то, чего я ожидал. Вам нужно будет указать ссылку на FED1::1 в Ubuntu. Поможет изменить адрес Centos eth0 на FED1:1::1 и указать адреса как /32s или /64s. Вам нужно только знать адреса ссылок на концах туннеля. Интерфейсы eth0 должны иметь ваш 2001: (публичные адреса).

Если eth0 на Centos является вашей восходящей линией связи, он, скорее всего, будет иметь двухточечный IPv6-адрес для локального конца восходящей линии. Это должно быть выполнено настройкой туннеля 6to4, которая также должна добавить маршрут по умолчанию в Интернет.

РЕДАКТИРОВАТЬ: Предлагаемая конфигурация

Centos (Сервер / Сеть)

 ip -6 add fe81:: 1/64 dev tun0
ip -6 добавить 2001:acb:132:acb::1/64 dev eth0
ip -6 добавить маршрут (распределение new /64) через fe81::2 dev tun0 

Ubuntu (клиент через туннель)

С помощью /etc/network/interfaces

 авто tun0
iface tun0 static
    адрес fe81::2
    сетевая маска 64
    шлюз fed1:: 1

авто eth0 iface eth0 static адрес (Новый / 64 выделения)::1 сетевая маска 64

Или вручную (вы можете захотеть обработать tun0) в скрипте запуска VPN), но я бы настроил eth0 с помощью / etc / network / interfaces

ip -6 добавить fe81::2/64 dev tun0 ip -6 add (new /64)::1/64 dev eth0 ip -6 добавить маршрут по умолчанию через fe81::1 dev tun0

Настроить radvd на хостах с маршрутами ipv6 по умолчанию с использованием интерфейса eth0 (LAN). Маршрутизация tun0 выполняется вручную.

ПРЕДУПРЕЖДЕНИЕ. После того, как вы все заработаете, все ваши IPv6-компьютеры будут иметь адреса в Интернете. Убедитесь, что у вас есть хороший брандмауэр и понимаете, какой трафик вы разрешаете.

Другие вопросы по тегам