Внедрение IPv6

Материал из RSU WiKi
Перейти к: навигация, поиск
Pen.pngЭта статья находится в процессе написания.
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.
Ipv6.jpg
IPv6 (Internet Protocol version 6) — новая версия протокола IP, призванная решить проблемы, с которыми столкнулась предыдущая версия (IPv4) при её использовании в интернете, за счёт использования длины адреса 128 бит вместо 32. В настоящее время протокол IPv6 уже используется в нескольких тысячах сетей по всему миру (более 9000 сетей на май 2012), но пока ещё не получил столь широкого распространения в Интернете, как IPv4. В России используется почти исключительно в тестовом режиме некоторыми операторами связи, а также регистраторами доменов для работы DNS-серверов. Протокол был разработан IETF.

После того, как адресное пространство в IPv4 закончится, два стека протоколов — IPv6 и IPv4 — будут использоваться параллельно (dual stack), с постепенным увеличением доли трафика IPv6 по сравнению с IPv4. Такая ситуация станет возможной из-за наличия огромного количества устройств, в том числе устаревших, не поддерживающих IPv6 и требующих специального преобразования для работы с устройствами, использующими только IPv6.

Содержание

Общая информация

Подсеть 2001:db8::/32 зарезервирована для примеров и документации и не должна маршрутизироваться в Интернете (вроде 192.0.2.0/24 в IPv4).

Разбиение IPv6 на подсети

At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально
Ipv6subnetting.jpg

Гуглить по фразе "ipv6 numbering plan"

Using VLAN Numbers

Some organisations have already included a location and/or use type description in their VLAN numbering plan. If this is the case, you might consider transferring these numbers directly to the IPv6 addressing system rather than using the method described above.

Static Addresses We recommend assigning static IPv6 addresses only for equipment such as routers, switches, firewalls and servers. Automatic configuration of such equipment will lead to problems in the long run. For example, if the network adaptor on a server is replaced, the SLAAC address of that server will also change, and there is a major risk that the person replacing the network adaptor will forget to modify the DNS entries for the server.

Мы получили блок 2a03:1800::/32 Согласно каким-то там рекомендациям (КАКИМ?) каждому клиенту надо выделять подсеть /64. Так же всякие автоконфигурации интерфейсов (есть такое удобство ipv6) в windows и unix тоже привыкли иметь дело c /64. Очень много ipv6-адресов помещается в подсети /64, если не ошибаюсь - 2^64, т.е. 65535*65535 (ПРОВЕРИТЬ). Пусть это не кажется расточительным.

Короче - каждому клиенту - /64.

Внутри сети /32 помещается 65536*65536 сетей /64. Нумеруем их так:

2a03:1800:x:y::

где:

  • x=0....ffff
  • y=0....ffff

в общем блока /32 хватит на всех.

Пример.

  • 2a03:1:2::/64 - подсеть
  • 2a03:1:2::1/64 - шлюз
  • 2a03:1:2::2 - клиент
  • 2a03:1:2::3 - тоже клиент:)
  • 2a03:1:2:3:4:3::10 - тоже клиент, и тоже все в той же подсети 2a03:1:2::/64
  • 2a03:1:3::/64 - другая подсеть

loopback в ipv6 будет иметь адрес с маской /128, т.е. это как /32 в ipv4.

Про IPv4, но тоже хорошо

С хабра [1]:

А теперь рассказываю как эти адреса распределяются (это не факты, это пример того, что «число IP-адресов не равно числу узлов сети):

Допустим, у HP 30 филиалов. С учётом, что число филиалов может возрасти, мы зарезервируем один бит из номера сети и пять бит из подсети для номера филиала.

Каждый филиал получает, таким образом, сеть размера /12. Такие же сети получает IT-департамент для связи с внешним миром и прочих нужд типа веб-сайтов, центральных серверов и т.д.

Внутри филиала мы разделяем сети по кампусам. Мы полагаем, что в филиале не может быть больше 16 кампусов (если так, филиалу выделяется 2 и более филиальные сети). Таким образом, кампус получает сеть /16.

Внутри кампуса сеть делится 16 сетей (маска /20). Нулевая сеть уходит на внутренние management-интерфейсы оборудования, последняя сеть резервируется для временных коммуникаций. Каждому этажу назначается своя /20, которая делится по числу помещений, полагаем, что число помещений не больше 128. Таким образом, на каждое помещение выделяется /27 (то есть всего лишь 30 IP-адресов). А что там в бухгалтерии не 30 компьютеров, а всего 4, плюс два принтера, плюс пара резервных розеток — это никого не волнует.

Это нормальный numbering plan. Именно такие сейчас пишутся (я сам такой писал) для IPv6. Когда грамотность планирования инфраструктуры и агрегация значат больше, чем консолидация.

И никто против такого numbering plan'а не возразит. Особенно те, кто по крохам резал 10/8 по куче филиалов и матерился на нехватку битов.

IPv6 DNS

At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально
Основная статья: Настройка сервера DNS
  • Прямая зона:

Просто вместо А для ipv6 пишем АААА:

www             IN      A       212.118.32.74
                IN      AAAA    2a03:1800:1:3::4

МАК-адреса и ARP'ы

At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально

В ipv6 нет ARP-запросов. Есть там что-то другое, читайте в википедии. Практически это значит, что в линуксе нет ipv6 в выводе arp. Зато есть в выводе команды

ip neighbors 

вместе с ipv4'мы арпами.

Так же я иногда привязваю ipv6 к маку статически:

/sbin/ip neigh add 2a03:1800:1:3::4 lladdr 00:16:76:D2:C1:7C nud permanent dev vlan18

Тоннели

At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально

Есть 2 вида туннелей ipv6 через ipv4:

  • 6to4 (использует блок 2002::/16)
  • Teredo (2001::/32)

оба поддерживаются windows, для teredo на юниксе есть софт miredo, для 6to4 разные фичи в ядре, типа tun6to4.

Напомню, в windows vista и windows7 по-умолчанию включен ipv6. Т.к. native ipv6 вы своим клиентам еще не дали :) то винда автоматически сконфигурила один из туннелей и получила ipv6-связность через туннель.

6to4

6to4 очень прост, к 2002: добавляется ipv4 в 16-ричном виде. Запаковывается у клиента и распаковывается где угодно на хосте с ip 192.88.99.1/24. Т.е. 192.88.99.1 - такой специальный адрес, который анонсируют многие провайдеры, кто-то глобально, кто-то только на локальных точках обмена трафиком, кто-то только своим клиентам. Хост, на котором рабтает туннель 6to4, посылает весь ipv6 трафик через ipv4 на 192.88.99.1. Если вы посмотрите свой netflow, то обнаружите, что трафик к 192.88.99.1 имеет место быть. Сделаете трейс на 192.88.99.1 и скорее всего это будет какой-то хост в европе. Т.е. кто-то из ваших клиентов даже на российские ресурсы ipv6 ходит через европу. Поэтому лучше если 192.88.99.1 будет на вашей циске, а не на чужой. Делаем так:

interface Loopback4
 description 6to4 Anycast Relay Service
 
 ip address 192.88.99.1 255.255.255.0 secondary
 ip address 212.118.33.44 255.255.255.255
 no ip redirects
 ipv6 address 2002:D476:212C::1/128
 ipv6 enable
 ipv6 mtu 1280
 no ipv6 redirects  

2002:D476:212C::1/128 - это преобразованный 212.118.33.44 из вашей сети ipv4 (D4 это 212 , 76 это 118 и т.д.)

interface Tunnel2002
 description anycast 6to4 Relay Interface
 no ip address  
 no ip redirects
 ipv6 address 2002:C058:6301::/128 anycast
 ipv6 unnumbered Loopback4
 ipv6 mtu 1280
 tunnel source Loopback4
 tunnel mode ipv6ip 6to4
 tunnel path-mtu-discovery

ipv6 route 2002::/16 Tunnel2002

теперь покрайней мере часть ваших клиентов с туннелями 6to4 будет работать чуть быстрее ;)

(Практика показала, что таким методом (cisco обрабатывает этот туннель CPU) много трафика не пропустишь, а вот консоль тупить будет. Так что use unix. Но и у юниксовых решений есть проблема с производительностью. Т.е. похоже дело в количестве пакетов. Юниксовый бокс спокойно обслуживает десяток туннелей на любых скоростях, но как только клиентов становится по-настоящему много (скажем, вы анонсировали туннельный префикс на точке обмена трафиком), то даже очень производительные сервера под юниксом начинают затыкаться. Проблема актуальна и для решений 6to4, и для teredo. Посему мы (и не только мы) анонсируем туннельные префиксы только своим клиентам.)

Teredo

Чисто виндовый протокол, который однако описан в RFC4380 и реализован в unix в софте miredo: http://www.remlab.net/miredo/

Миредо может работать в режиме клиента или режиме сервера.

По умолчанию все teredo клиенты с виндов коннектятся на teredo.ipv6.microsoft.com, после чего получают ipv6 из блока 2001::/32 Этот блок анонсируют многие провайдеры от имени своих AS'ок, так же как и 192.88.99.0/24. Что происходит дальше описано в rfc4380.

IPv6 в сетевом оборудовании Procurve

Поддержка IPv6 реализована в коммутаторах серии 5400 и выше.

IPv6 в Cisco

Основная статья: Cisco
At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально

Маршрутизация

conf t
ipv6 unicast-routing

Безопасность

ipv6 access-list deny-any
 deny ipv6 any any

line vty 0 4
 ipv6 access-class deny-any in

Интерфейсы

interface Loopback6
 no ip address
 ipv6 address 2A03:1800:1:1::1/128
 ipv6 enable

interface Vlan23
 description Uplink, AS8359, Comstar-Direct (MTU)
 ip address 195.34.38.98 255.255.255.252
 ip access-group Garbage-Excl-Private in
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip flow ingress
 load-interval 60
 ipv6 address 2A02:28:1:2::23:2/112
 ipv6 enable
 hold-queue 4096 in
 hold-queue 4096 out

BGP

ipv6 route 2A03:1800::/32 Null0
ipv6 prefix-list me-v6 seq 5 permit 2A03:1800::/32

route-map to-mtu6 permit 10
 match ipv6 address prefix-list me-v6

router bgp 25308
neighbor 2A02:28:1:2::24:1 description MTUv6
address-family ipv4
 no neighbor 2A02:28:1:2::24:1 activate
address-family ipv6
 network 2A03:1800::/32
 neighbor 2A02:28:1:2::24:1 activate
 neighbor 2A02:28:1:2::24:1 send-community
 neighbor 2A02:28:1:2::24:1 soft-reconfiguration inbound
 neighbor 2A02:28:1:2::24:1 route-map to-mtu6 out

Как смотреть:

sh ip bgp ipv6 uni su
sh ip bgp ipv6 u n 2A02:28:1:2::24:1 ro
cle ip bgp ipv6 u 8359 soft out  #вместо ip нейбора указывается as-ка

IPv6 в Vyatta

Основная статья: Vyatta

Даем адреса интерфесам [2]:

set interfaces ethernet eth0 address 2001:db8:2::1/64
( set interfaces ethernet eth0 ipv6 router-advert prefix 2001:099:0013:004b::/64  [*] )
( set interfaces ethernet eth0 ipv6 router-advert other-config-flag true [**] )
commit
save

/*/ If the router interface in question is not facing your LAN (where the client computers are), you may want to put ipv6 nd suppress-ra under the interface configuration. This will disable router advertisements on that interface.

/**/ Use this if you want the router to provide other IPv6 configurations to your computers, for example IPv6 DNS addresses. If you do this, you must also set up a service such as ipv6 dhcp pool that will give out these settings.

На интерфейсе, смотрящем на клиентов в локальной сети:

set interfaces ethernet eth0 vif 181 address 2001:db8:2::1/64
set interfaces ethernet eth0 vif 181 ipv6 router-advert prefix 2001:db8:2::/64
set interfaces ethernet eth0 vif 181 ipv6 router-advert send-advert true
commit
save

Тоннельный брокер (Tunnel Broker)

В случае, если вышестоящие провайдеры не предоставляют возможность подключения по IPv6, отсутствует выделенная IPv6 AS, для проверки работоспособности инфраструктуры можно воспользоваться услугами тоннельного брокера.

IPv6 OSPF

Получаем v6 стык с провайдером, настраиваем OSPF между br и gw:

BR:

protocols {
    ospfv3 {
        area 0.0.0.0 {
            interface eth0.7
            interface lo
        }
        parameters {
            router-id 91.203.181.1
        }
        redistribute {
            connected {
            }
            static {
            }
        }
    }
}

GW:

protocols {
    ospfv3 {
        area 0.0.0.0 {
            interface eth1.7
            interface lo
        }
        parameters {
            router-id 91.203.181.2
        }
    }
}
show ipv6 route ospf6
show ipv6 ospfv3
show ipv6 ospfv3 neighbor 
show ipv6 ospfv3 neighbor detail
show ipv6 ospfv3 route
show ipv6 ospfv3 route detail
show ipv6 ospfv3 interface eth0.12
show ipv6 ospfv3 database 
show ipv6 ospfv3 area

BGP IPv6

Калькулятор подсетей

В Vyatta с версии 6.4 встроен калькулятор подсетей [3]:

skath@support-steven:~$ sipcalc --v6split=/67 2601:b:4344:2d::1/64 
-[ipv6 : 2601:b:4344:2d::1/64] - 0 

[Split network] 
Network                 - 2601:000b:4344:002d:0000:0000:0000:0000 - 
                          2601:000b:4344:002d:1fff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:2000:0000:0000:0000 - 
                          2601:000b:4344:002d:3fff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:4000:0000:0000:0000 - 
                          2601:000b:4344:002d:5fff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:6000:0000:0000:0000 - 
                          2601:000b:4344:002d:7fff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:8000:0000:0000:0000 - 
                          2601:000b:4344:002d:9fff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:a000:0000:0000:0000 - 
                          2601:000b:4344:002d:bfff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:c000:0000:0000:0000 - 
                          2601:000b:4344:002d:dfff:ffff:ffff:ffff 
Network                 - 2601:000b:4344:002d:e000:0000:0000:0000 - 
                          2601:000b:4344:002d:ffff:ffff:ffff:ffff 

- 
skath@support-steven:~$ 

DHCPv6 Server

Поскольку адреса в сети v6 по-умолчанию генерируются автоматически, можно воспользоваться сервером dhcpv6 для отдачи дополнительных параметров, таких как адреса DNS, SIP и проч.

set service

dhcpv6-server {
    shared-network-name RSU {
        subnet 2a02:150:ffff::/48 {
            name-server 2a02:150:ffff:3180::129
        }
    }
}

После включения сервера DHCPv6, параметры роутера необходимо изменить следующим образом:

router-advert { 
             managed-flag false 
             other-config-flag true 
             prefix 2001:470:1F05:1135::/64 { 
             } 
         }

IPv6 в Linux

At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально


Как только на интерфейсе роутера появился ipv6 из сетки /64, клиентские компы словят себе ipv6 адрес, который генерится на основе ipv6 интерфейса роутера и MAC-адреса клиента.

Например:

eth0.2    Link encap:Ethernet  HWaddr 00:17:31:b4:8d:55  
          inet addr:172.16.10.12  Bcast:172.16.10.255  Mask:255.255.255.0
          inet6 addr: 2a03:1800:1:4:217:31ff:feb4:8d55/64 Scope:Global
          inet6 addr: fe80::217:31ff:feb4:8d55/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3222533 errors:0 dropped:0 overruns:0 frame:0
          TX packets:433391 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:534246967 (509.4 MiB)  TX bytes:145408314 (138.6 MiB)

тут fe80::217... какая-то несущественная байда, про которую более подробно сказано в википедии.

Если в компе с юниксом не включен ipv6 форвардинг, то дефолт тоже словится автоматом.

Посмотреть таблицу маршрутизации можно так:

ip -6 ro li

или

route -A inet6

Принудительно назначить какой-то ipv6 на интерфейс:

/sbin/ifconfig vlan18 inet6 add 2A03:1800:1:3::4/64 up

Если форвардинг включен, можно ручками добавить дефолт:

/sbin/route -A inet6 add default gw 2a03:1800:1:3::2

Включить форвардинг, если комп будет ipv6-роутером:

sysctl -w net.ipv6.conf.all.forwarding=1

Так же есть команды ping6 и traceroute6

SuSE / SLES

  • YaST>Network Devices>Network Settings>Global Options> Enable IPv6

Dynamic IPv6 address without DHCP6

In a network without a DHCP6 server, you should disable DHCP6. Otherwise you may experience a long delay before you get your global IPv6 address. Start YaST2, select Network Devices and start the module Network Settings. In the tab Global Options enable Activate IPv6, which is the default after installation. In the tab Overview choose (one of) the interface(s) and press Edit. Enable Dynamic IP address and choose DHCP version 4 only [4].

Установка статического IPv6 адреса

/etc/sysconfig/network/ifcfg-br0

LABEL_V6='V6'
IPADDR_V6='2a02:0150:ffff:3180:0000:0000:0000:0131'
PREFIXLEN_V6='64'

Настройка dhcp6s

Для выдачи динамических адресов и маршрутов в ipv6 используется механизм radvd, однако для указания доп. параметров, таких как адреса dns-серверов, ntp-серверов, суффикса домена и проч. необходимо использовать демон dhcp6d.

Пропишем на каких интерфейсах должен работать dhcp6s:

/etc/sysconfig/network/dhcp6s

DHCP6SIF=vlan2

Настроим демон. Укажем адреса DNS-серверов:

/etc/dhcp6s.conf

#
# See dhcp6s.conf(5) man page for details.
#

#option dns_servers 2000::2 ibm.com;
option dns_servers 2a02:150:ffff:3180::129;

interface vlan2 {
    allow rapid-commit;
}

IPv6 в Windows

At work clipart.pngЭто незавершённая статья, требующая доработки.
Переписать нормально

Если в виндах не установлен протокол tcp/ip версии 6, надо это сделать. После чего винда чудесно сама ловит себе ipv6, как и линукс. Но вот если протокол был добавлен до того, как у винды повилась возможность получить native ipv6, она начинает включать всякие туннели через всякие тунельброкреы.

В XP по умолчанию ipv6 выключен.

В vista и win7 - включен, поэтому там как правило уже работает тунель. Надо избавляться:).

Как избавиться от этих автоматических наворотов в winXP:

Простой метод назначения ipv6 в XP:

ipv6 install
ipv6 if  # эта команда выведет список сетевых интерфейсов и из номера
ipv6 adu 5/2a03:1800:1:6::2  # тут 5 - номер интерфейса, которому назначается ipv6 адрес 2a03:1800:1:6::2
ipv6 rtu ::/0 5/2a03:1800:1:6::1 pub life 1800 # прописываем дефолт через 2a03:1800:1:6::1

Обычные команды винды ping и tracert спокойно работают с ipv6 адресами.

Узнать, есть ли у сайта ipv6 связность можно командой юникса host:

host www.citylan.ru
www.citylan.ru has address 212.118.32.74
www.citylan.ru has IPv6 address 2a03:1800:1:3::4

IPv6 в продуктах Apple

AirPort Extreme через Тоннельного брокера (Tunnel Broker)

Attention.pngВНИМАНИЕ!
Для работы через брокера необходим статический внешний адрес IPv4.

Регистрируемся на http://tunnelbroker.net/, получаем блок адресов IPv6 и настраиваем точку через AirPort Utility [5]:

IPv6 AirPort.png

С версии 7.6.3 необходимо заполнять все поля[6], в т.ч. "IPv6 Delegated Prefix"

Не забываем поставить галочку, запрещающую внешние соединения с нашими машинами по IPv6 [7]:

IPv6 AirPort FW.png

Проверяем работоспособность IPv6 с подключенного к AirPort компьютера:

traceroute6 -I www.facebook.com
traceroute6 to www.facebook.com (2a03:2880:2110:3f01:face:b00c::)
from 2001:470:28:12e:e0bd:3fa0:1755:26d1, 64 hops max, 16 byte packets
 1  2001:470:28:12e:ba8d:12ff:fe59:99aa  0.422 ms  0.250 ms  0.221 ms
 2  foboss-1.tunnel.tserv24.sto1.ipv6.he.net  48.810 ms  47.954 ms  47.473 ms
 3  gige-g2-20.core1.sto1.he.net  45.876 ms  44.683 ms  44.155 ms
 4  10gigabitethernet3-2.core1.ams1.he.net  70.406 ms  68.899 ms  74.791 ms
 5  br01.ams1.tfbnw.net  149.050 ms  150.308 ms  151.146 ms
 6  ae28.bb02.iad1.tfbnw.net  150.242 ms  150.506 ms  150.480 ms
 7  ae8.bb02.frc1.tfbnw.net  172.035 ms  159.396 ms  159.794 ms
 8  ae2.dr01.frc1.tfbnw.net  160.186 ms  159.897 ms  159.282 ms
 9  2620:0:1cff:dead:beee::163  160.434 ms  160.040 ms *
10  www6-slb-10-03-frc1.facebook.com  160.739 ms  159.802 ms  158.850 ms
Iapetus:~ jfoboss$

IPv6 в приложениях

IPv6 в Communigate Pro

Основная статья: Communigate Pro

IPv6 на веб-сервере Nginx

Основная статья: Nginx

In Linux by default any IPv6 TCP socket also accepts IPv4 traffic using the IPv4 to IPv6 mapped address format, i.e., ::ffff:<IPv4 adddress in dotted decimal notation>. E.g., ::ffff:192.168.0.27 maps the IPv4 address 192.168.0.27 to an IPv6 address.

When you enable the address [::]:80, binding port 80 using IPv6, in the listen directive, in Linux, by default, the IPv4 port 80 is also enabled. Meaning that nginx listens for both IPv4 and IPv6 incoming traffic. Therefore if you erroneously specify also a IPv4 address you'll get an already bind address error when reloading nginx configuration.

In Linux the separation of the IPv6 and IPv4 stacks is controlled through the runtime parameter: net.ipv6.bindv6only which has the value 0 by default.

listen 80 default_server; ## listen for ipv4
listen [::]:80 default_server ipv6only=on; ## listen for ipv6
netstat -tulpna | grep nginx

You should set "ipv6only" option only in one server with "default_server" flag [8]:

server {
listen 80;
listen [::]:80 default_server ipv6only=on;
server_name domain1.com;
...
}

server {
listen 80;
listen [::]:80;
server_name domain2.com;
...
}

IPv6 на прокси-сервере Squid

Основная статья: Настройка proxy-сервера

IPv6 поддерживается в версии 3.1 и выше [9].

Если IPv6 работает хуже/медленнее v4 (тоннель и проч.) настраиваем сквид предпочитать v4 (с версии 3.1.16) [10]:

#  TAG: dns_v4_first
#       With the IPv6 Internet being as fast or faster than IPv4 Internet
#       for most networks Squid prefers to contact websites over IPv6.
#
#       This option reverses the order of preference to make Squid contact
#       dual-stack websites over IPv4 first. Squid will still perform both
#       IPv6 and IPv4 DNS lookups before connecting.
#
#       WARNING:
#         This option will restrict the situations under which IPv6
#         connectivity is used (and tested). Hiding network problems
#         which would otherwise be detected and warned about.
#Default:
# dns_v4_first off
dns_v4_first on

When these lines contain an IPv4 address or a hostname with only IPv4 addresses Squid will only open on those IPv4 you configured. You can add new port lines for IPv6 using [ipv6]:port, add AAAA records to the hostname in DNS, or use only a port.

Appendixes

A: Публичные IPv6 DNS-сервера

OpenDNS [11]:

  • 2620:0:ccc::2
  • 2620:0:ccd::2

Google [12]:

  • 2001:4860:4860::8888
  • 2001:4860:4860::8844

B: Тоннельные брокеры (Tunnel Brokers)

C: IPv6 regexp

The regex for IPv6 below differs from those others in that it handles all the cases specified by RFC4291, section 2.2, "Text Representation of Addresses", and in particular, it offers the ability to recognize an IPv4 dotted quad address at the end [13].

/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/

The regex matches the following IPv6 address forms. Note that these are all the same address:

  • fe80:0000:0000:0000:0204:61ff:fe9d:f156 // full form of IPv6
  • fe80:0:0:0:204:61ff:fe9d:f156 // drop leading zeroes
  • fe80::204:61ff:fe9d:f156 // collapse multiple zeroes to :: in the IPv6 address
  • fe80:0000:0000:0000:0204:61ff:254.157.241.86 // IPv4 dotted quad at the end
  • fe80:0:0:0:0204:61ff:254.157.241.86 // drop leading zeroes, IPv4 dotted quad at the end
  • fe80::204:61ff:254.157.241.86 // dotted quad at the end, multiple zeroes collapsed

In addition, the regular expression matches these IPv6 forms:

  •  ::1 // localhost
  • fe80:: // link-local prefix
  • 2001:: // global unicast prefix

Примечания

  1. http://habrahabr.ru/post/151518/#comments
  2. https://sites.google.com/site/6filesb/home/blog/ipv6basicsaddressingahostandstaticrouting
  3. http://www.vyatta.org/forum/viewtopic.php?p=144176
  4. http://en.opensuse.org/SDB:Native_IPv6
  5. HOW TO Configure IPv6 On Your Home Network Using an Apple AirPort or Time Capsule and Tunnelbroker.net
  6. AirPort base station: IPv6 Tunnel Error after installing firmware 7.6.3 in router/NAT mode
  7. New Airport Extreme could expose Macs via IPv6
  8. http://forum.nginx.org/read.php?2,154862,154884#msg-154884
  9. http://wiki.squid-cache.org/Features/IPv6
  10. http://www.squid-cache.org/Doc/config/dns_v4_first/
  11. Does OpenDNS Provide IPv6 DNS Services?
  12. Using Google Public DNS
  13. http://forums.intermapper.com/viewtopic.php?t=452

См. также

Ссылки

http://blog.ipv6go.ru
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты