Ipv6 туннель ipv4 linux

Настройка ядра

Если машина будет работать как IP6-маршрутизатор, в /etc/sysctl.conf необходимо разрешить проброс пакетиков:

# Enables packet IPv6 forwarding net.ipv6.conf.all.forwarding = 1

USE-flags

В /etc/make.conf в список USE-флагов добавляем ipv6 и пересобираем систему:

emerge --nospinner -uDNvt --with-bdeps y world -j2

Настройка туннеля

Заходим на сайт Hurricane Electric, регистрируемся, входим 🙂 В меню «User Functions» выбираем «Create Regular Tunnel» и заполняем форму:

«Which Server Is Closest to you» – выбираем с каким сервером Hurricane Electric будет настраиваться туннель.

В «Account Menu» выбираем «Click For Main Page». Тыкаем на наш свежесозданный туннель и:

по-умолчанию нам выдают только блок адресов /64, что является аналогом транспортной сетки /30 в мире IPv4, если надо иметь «локальную» сеть (a la /24 в IPv4) в строке «Routed /48», говорим, чтобы нам выдали блок адресов /48.

С помощью мышки поднимаем туннель и проверяем, что удалённый конец туннеля достижим:

ping6 "то, что указано в поле Server IPv6 address"

Если всё заработало, прописываем наш туннель в конфиги:

##################################################################### # ## IPv6@eth0 configuration (tunnel via hurricane electric) # ##################################################################### iptunnel_he0="mode sit remote 216.66.84.46 local 111.222.33.22 ttl 255" mtu_he0="1280" config_he0=( "2001:470:1f14:ad4::2/64" ) routes_he0=( "::/0 dev he0" )

Далее убиваем туннель, который был настроен мышкой, и поднимаем туннель через инитовый скрипт:

ip tunnel del he-ipv6 ln -sndf /etc/init.d/net.{lo,he0} /etc/init.d/net.he0 restart rc-update add net.he0 default

Firewall

Концептуально, настройка пакетного фильтра для IPv6 ничем не отличается от того, что делается для IPv4. Необходимо только помнить, что:

протокол ICMP заменяется протоколом ICMPv6, а сам протокол ICMPv6 широко используется для поддержания работы ip6-сети. Если его полностью заблокировать, можно, с высокой вероятностью, получить не работающую сеть.

Автонастройка сети на клиентах

IPv6 имеет два альтернативных способа автоматической настройки адресов на клиентских машинах:

Независимо от того, какой вариант будет выбран, необходимо иметь работающий radvd, для анонсов маршрутизации и dhcpv6 для настройки всяческих параметров не связанных с собственно адресацией/маршрутизацией. Например, NTP-, SIP-, DNS -сервера, имя домена и т.п.

Stateless

При таком режиме работы сети информация о клиентских машинах нигде не хранится. Это возможно по следующим соображениям:

На основе уникального MAC-адреса легко получается – уникальный же – EUI-64 адрес, который префиксуется адресом IPv6-сети.

default-lease-time 2592000; preferred-lifetime 604800; option dhcp-renewal-time 3600; option dhcp-rebinding-time 7200; allow leasequery; option dhcp6.name-servers 2001:470:d6a7::22, 2001:470:1f14:ad4::2; option dhcp6.domain-search «sabitov.pp.ru», «sabitov.su»; option dhcp6.preference 255; option dhcp6.info-refresh-time 21600; use-host-decl-names on; ddns-update-style none; ddns-updates off; subnet6 2001:470:d6a7::/64

Читайте также:  Послать сообщение пользователю linux

Stateful

При таком режиме работы информация о выданных адресах хранится на DHCP-сервере, и клиенты должны периодически подтверждать, право использования выданного им адреса.

radvd по прежнему анонсирует информацию о маршрутах, но выключенный флаг AdvAutonomous указывает клиенту, что он не имеет права использовать stateless-механизм настройки адреса.

default-lease-time 2592000; preferred-lifetime 604800; option dhcp-renewal-time 3600; option dhcp-rebinding-time 7200; allow leasequery; option dhcp6.name-servers 2001:470:d6a7::22, 2001:470:1f14:ad4::2; option dhcp6.domain-search «sabitov.pp.ru», «sabitov.su»; option dhcp6.preference 255; option dhcp6.info-refresh-time 21600; use-host-decl-names on; ddns-update-style none; ddns-updates off; subnet6 2001:470:d6a7::/64 < >host yew6

Вообще говоря, DHCPv6 вместо MAC-адреса оперирует понятием DUID, но поскольку использование MAC-адреса привычней, а dhcp-сервер позволяет, то в примере указано использование MAC-адреса.

Andrew A. Sabitov 2011-03-21 23:52

Источник

Сами себе туннельный брокер IPv6 с помощью openvpn и 6to4

Вы хотите чтобы Ваши устройства (Windows\Linux\Android\iOS) начали использовать IPv6, но Ваш провайдер его еще не предоставляет? У Вас есть собственный сервер\VDS\просто компьютер с линуксом и постоянным прямым IPv4 (НЕ IPv6) адресом или даже свой openvpn сервер? Тогда возможно эта статья Вам поможет.
Она не для маститых сетевых гуру, я просто собрал в одном месте набор указаний с целью распространения IPv6 среди масс. Хотя буду благодарен всем маститым гуру, которые меня раскритикуют в комментах и укажут на ошибки. Так как пишу я пост практически сразу после того, как система заработала. Все может быть бесконечно далеко от идеала.

Побудил меня настроить подобную систему мой новый планшет, который на стоковой (других пока что нет) прошивке не хочет получать IPv6 от wifi-роутера, не говоря уже о невозможности использовать IPv6, работая через 3G.

  1. Хост с linux и прямым, статическим IP адресом (подойдет любой выделеный или виртуальный сервер). У меня VPS на Xen с gentoo и собственным ядром. Однако я считаю, что ничего нестандартного не использую, поэтому должно работать и на популярных бинарных дистрибутивах.
  2. Установленный на сервере пакет iproute2. Проверка через «ip —version».
  3. openvpn сервер. Версия openvpn — должна быть >= 2.3, крайне желательно 2.3.2 или новее.
  4. openvpn клиент. Существуют версии под linux, windows, os x, android (1, 2) и iOS. Требования к версии такие же как у сервера.
Настраиваем IPv6 на сервере через 6to4.

Для облегчения перехода на IPv6 создана технология 6to4: каждому IPv4 адресу в соответствует подсеть /48 IPv6-адресов. Подробнее.
Предположим, IP Вашего сервера: 208.64.121.161 (взял IP test.com). Идем на 6to4.version6.net/?lang=en_GB, вбиваем IP, например, 208.64.121.161. Получаем следующие настройки:

Your IPv4 address is 208.64.121.161
Your 6to4 address is 2002:d040:79a1::2080:6412:1161
6to4 gateway address is 192.88.99.1

Нам нужен только выделенный жирным кусок. Это наша /48 IPv6 подсеть. У Вас две группы после 2002 в адресе должны быть другими! В них закодирован Ваш IPv4.

Читайте также:  Linux mint посмотреть оборудование

Придумываем себе адрес в этой подсети. Для простоты можно использовать ::2 (почему-то замечены глюки при использовании ::1, может кто расскажет почему, а может мне показалось), то есть 2002:d040:79a1::2.

Создаем туннель (заменяя IPv4 на Ваш адрес):
ip tunnel add tun6to4 mode sit remote any local 208.64.121.161 ttl 64
Поднимаем интерфейс:
ip link set dev tun6to4 up
Задаем интерфейсу IPv6 адрес, который придумали раньше:
ip -6 addr add 2002:d040:79a1::2/128 dev tun6to4
Задаем маршрут по умолчанию (192.88.99.1 — общий маршрутизатор для 6to4, не меняем его!):
ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
После этого наш сервер должен получить возможность работать по IPv6. Проверяем:
ping6 2001:ad0::1

В генте я это все сохранил, добавив в /etc/conf.d/net следующие строчки (создав линк net.lo->net.tun6to4 и не забыв сделать rc-update add net.tun6to4 default):

iptunnel_tun6to4=«mode sit remote any local 208.64.121.161 ttl 64»
config_tun6to4=«2002:d040:79a1::2»
routes_tun6to4=«2000::/3 via ::192.88.99.1 dev tun6to4 metric 1»
rc_net_tun6to4_need=«net.eth0»

Если пинги идут, значит этап 1 пройден. Если не идут, думаем, проверяем везде ли мы заменили то, что надо заменить на наши данные. Если ничего не помогает подробно рассказываем что делали (с указанием IP сервера) в комментах, попробую помочь. В личку не помогаю.

Настраиваем openvpn для работы с IPv6

Как настроить openvpn писано до меня не раз. В том числе тут. Юзайте поиск. Я на всякий случай привожу свои конфиги, вырезав приватные данные.

port censored
proto udp
dev tun
ca vpn1/ca.crt
cert vpn1/server.crt
key vpn1/server.key
dh vpn1/dh2048.pem
server 10.censored 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 60
comp-lzo adaptive
user nobody
group nobody
persist-key
persist-tun
fast-io
status openvpn-status.log

max-clients 30
tls-auth vpn1/ta.key 0
chroot /var/chroot/openvpn

cipher AES-256-CBC
auth SHA512
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA

local censored
client-to-client
ping-timer-rem
management localhost 7505
client-config-dir ccd

remote censored censored
resolv-retry infinite
nobind

cipher AES-256-CBC
auth SHA512
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA

verify-x509-name ‘C=RU, ST=RU, L=censored’

Для раздачи IPv6 через openvpn придумываем номер /64 подсети. Это любое число от 0 до FFFF. Например, 5. То есть в моем случае /64 подсеть будет выглядеть целиком так: 2002:d040:79a1:5. Добавляем в openvpn.conf на сервере строчку:
server-ipv6 2002:d040:79a1:5::/64
В принципе в этой строчке и заключается вся настройка openvpn для IPv6. Осталось только указать openvpn-серверу, чтоб он сообщал клиентам маршрут по умолчанию для IPv6. Вы можете это делать либо глобально в серверном openvpn.conf либо в ccd файле для каждого клиента с помощью строчки:
push «route-ipv6 2000::/3»
Так же необходимо указать клиентам IPv6 DNS-сервер. Я использую свой, Вы можете воспользоваться гугловским. В серверном openvpn.conf или в ccd:
push «dhcp-option DNS 2001:4860:4860::8888»

Читайте также:  Astra linux узнать свой ip

(Пере)запускаем сервер.
В конфиге клиента ничего менять не надо. Подключаемся к серверу и должны получить IPv6 адрес. На клиенте смотрим:
ip -6 addr list
Видим что-то типа:

Аналогично смотрим IPv6 адрес tun-интерфейса на сервере, скорее всего он будет заканчиваться на ::1 (2002:d040:79a1:5::1).
Пробуем пинговать с клиента на сервер и обратно. Если пингуется, осталось совсем немного.

Пробуем пинговать с клиента гугловский DNS:
ping6 2001:4860:4860::8888
не пингуется, так как IPv6 переадресацию надо разрешать аналогично IPv4. Разрешаем:
sysctl -w net.ipv6.conf.all.forwarding=1
И сохраняем в /etc/sysctl.conf строчку:
net.ipv6.conf.all.forwarding = 1

Должны пойти пинги с клиента до гугла и вообще появиться возможность использовать IPv6 с клиента. Например, попробуйте в броузере открыть ipv6.google.com.

Все? Ни в коем случае!

Прелестью IPv6 является то, что все адреса прямые. Поэтому все ваши openvpn-клиенты будут полностью доступны из большого, опасного интерента. Поэтому не забудьте настроить фаервол на сервере (для IPv6 используется ip6tables). Как минимум я сразу вписал следующее:
Прикрываем сам сервер:

ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -p tcp -m conntrack —ctstate NEW -m tcp! —tcp-flags FIN,SYN,RST,ACK SYN -j DROP
ip6tables -A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp -m icmp6 —icmpv6-type 128 -j ACCEPT
ip6tables -A INPUT -j DROP

Прикрываем клиентов openvpn (так же прописывается на сервере!)

ip6tables -A FORWARD -p tcp -m conntrack —ctstate NEW -m tcp! —tcp-flags FIN,SYN,RST,ACK SYN -j DROP
ip6tables -A FORWARD -p ipv6-icmp -m icmp6 —icmpv6-type 128 -j ACCEPT
ip6tables -A FORWARD -i tun0 -j ACCEPT
ip6tables -A FORWARD -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -j DROP

Ну вот вроде и все. Мой Galaxy Tab 3 10.1 обрел возможность выхода в IPv6. Кстати, если кто знает как на нем включить возможность прямой работы с IPv6 через WiFi (у меня роутер раздает через radvd, все в том числе телефон с cyanogenmod адреса получают, а планшет со стоковой прошивкой нет 🙁 ) — расскажите, пожалуйста, буду очень благодарен.

Шлите ошибки в приват, всем хорошей пятницы и выходных.

Источник

Оцените статью
Adblock
detector