А вот кстати еще один способ подключить IPv6, без регистрации у туннельных брокеров:
Для обычных IPv4-адресов выделена специальная сеть в формате IPv6, адреса в ней имеют вид 2002:XXXX:XXXX::/48.
То есть, если у вас есть выделенный 1 IP-адрес - считайте, что вам выделена и вот такая сеть IPv6, или 65536 подсетей /64 - просто вам об этом забыли рассказать.
Технология называется 6to4, сейчас считается depricated, но по факту еще работает, и скорее всего будет работать до полной победы IPv6 над IPv4 (т.е. очень долго).
Смысл в том, что IPv6-трафик заворачивается на адрес публичного шлюза 192.88.99.1, который и занимается трансляцией протоколов туда-обратно.
Чтобы этим воспользоваться - нужно создать туннельный интерфейс определенного типа, присвоить ему свой IPv6-адрес, который рассчитывается по обычному IP, и настроить маршрутизацию.
Адрес рассчитывается по простой схеме:
2002:(1 октет)(2 октет):(3 октет)(4 октет)::/48
То есть, 12.34.56.78 превращается в 2002:0c22:384e::1/48
Маска - 48 бит, 6 байт, следовательно, вот эта часть фиксирована, остальное - на ваше усмотрение:
(2002:0c22:384e):XXXX:XXXX:XXXX:XXXX:XXXX
Правда, один номер 2002:0c22:384e:0000:0000:0000:0000:0001, он же 2002:0c22:384e::1, занят, но это не страшно. Все равно еще куча сетей 2002:0c22:384e:ХХХХ::/64
Ну а теперь - реализация всего этого. Чтобы не особо заморачиваться - вот такой скриптик:
#!/bin/sh
read -p "Enter IP: " ipv4
ipv6=$( printf "2002:%02x%02x:%02x%02x::1" $(echo $ipv4 | tr "." " "))
echo "#!/bin/sh"
echo "# $ipv4 -> $ipv6/48"
echo "sysctl net.ipv6.conf.all.forwarding=1"
echo "ip tunnel add tun6to4 mode sit remote any local $ipv4 ttl 255"
echo "ip link set dev tun6to4 up"
echo "ip addr add $ipv6/16 dev tun6to4"
echo "ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 100"
Он создает shell-скрипт, который можно просто запустить и получить свою подсеть.
Ну или прописать нужные команды в нужные конфиги, чтобы все срабатывало после перезагрузки.
Дальше - по отработанной схеме:
Если этот внешний IP на интерфейсе машины, уже включеной в LAN, и надо раздать внутрь - то выделяем подсеть, добавляем адрес из раздаваемой подсети на локальный интерфейс и запускаем raddvd:
ip -6 addr add 2002:0c22:384e:1::1/64 dev eth0
vim /etc/radvd.conf
interface eth0 {
AdvSendAdvert on;
prefix 2002:0c22:384e:1::/64 {
AdvOnLink on;
AdvAutonomous on;
};
};
/etc/init.d/raddvd restart
Если передаем куда-то по каналу, допустим, tun0, тогда так:
Выделяем подсеть для туннеля - можно не жадничать, хотя и нужно всего два адреса, ТУТ и ТАМ.
Выделяем подсеть для LAN - она будет назначаться на интерфейсах LAN
Настраиваем маршруты: на сервере - в эту подсеть, на другой стороне - по умолчанию наружу.
Шлюз в обоих случаях - адрес другой стороны туннеля.
ip -6 addr add 2002:0c22:384e:1::1/64 dev tun0
ip -6 route add 2002:0c22:384e:2::/64 via 2002:0c22:384e:1::2/64на другой стороне канала:
ip -6 addr add 2002:0c22:384e:1::2/64 dev tun0
ip -6 route add default via 2002:0c22:384e:1::1/64 metric 100
ip -6 addr add 2002:0c22:384e:2::1/64 dev eth0
vim /etc/radvd.conf
interface eth0 {
AdvSendAdvert on;
prefix 2002:0c22:384e:2::/64 {
AdvOnLink on;
AdvAutonomous on;
};
};
И вот у нас везде IPv6 адреса...
Вроде ничего сложного.
В очередной раз - не очень понятно зачем это мне надо, но раз можно, то почему бы и нет?
Если бы это сделали примерно все - давно бы перешли на IPv6...