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

OpenVPN IPV6 туннель Radvd

У меня интересный вопрос по поводу 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 в качестве второго «маршрутизатора» 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.

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

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

Ура

Ваш вопрос действительно меня зацепил, так как я могу использовать то же решение в другой сети, которой я управляю. Я экспериментировал с этим, и это действительно возможно! (Я просто люблю 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

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

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

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

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

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

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

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

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

ip -6 add fe81::1/64 dev tun0
ip -6 add 2001:acb:132:acb::1/64 dev eth0
ip -6 add route (new /64 allocation) via fe81::2 dev tun0

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

Через /etc/network/interfaces

auto tun0
iface tun0 static
    address fe81::2
    netmask 64
    gateway fed1::1

auto eth0 iface eth0 статический адрес (новое / 64 распределение) :: 1 маска сети 64

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

ip -6 add fe81::2/64 dev tun0 ip -6 add (new /64)::1/64 dev eth0 ip -6 add route default via fe81::1 dev tun0

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

ВНИМАНИЕ: Как только вы это заработаете, все ваши компьютеры IPv6 будут иметь маршрутизируемые интернет-адреса. Убедитесь, что у вас хороший брандмауэр и вы понимаете, какой трафик вы разрешаете.