Показать страницуСсылки сюдаODT преобразованиеPDFэкспорт ODT=>PDFНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ~~TAGCLOUD~~ {{tag>net ipv6 linux 6to4 firewall dhcp}} ====== Настройка IPv6 туннеля на Linux с маршрутизацией клиентов ====== ====== Настройка ядра ====== Взводим все параметры ядра, связанные с IPv6: <file bash .config> CONFIG_IPV6=m CONFIG_IPV6_PRIVACY=y CONFIG_IPV6_ROUTER_PREF=y CONFIG_IPV6_ROUTE_INFO=y CONFIG_IPV6_OPTIMISTIC_DAD=y CONFIG_INET6_AH=m CONFIG_INET6_ESP=m CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m CONFIG_INET6_XFRM_MODE_TRANSPORT=m CONFIG_INET6_XFRM_MODE_TUNNEL=m CONFIG_INET6_XFRM_MODE_BEET=m CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m CONFIG_IPV6_SIT=m # CONFIG_IPV6_SIT_6RD is not set CONFIG_IPV6_NDISC_NODETYPE=y CONFIG_IPV6_TUNNEL=m CONFIG_IPV6_MULTIPLE_TABLES=y CONFIG_IPV6_SUBTREES=y CONFIG_IPV6_MROUTE=y CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y CONFIG_IPV6_PIMSM_V2=y # # IPv6: Netfilter Configuration # CONFIG_NF_CONNTRACK_IPV6=m CONFIG_IP6_NF_QUEUE=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m CONFIG_IP6_NF_MATCH_FRAG=m CONFIG_IP6_NF_MATCH_OPTS=m CONFIG_IP6_NF_MATCH_HL=m CONFIG_IP6_NF_MATCH_IPV6HEADER=m CONFIG_IP6_NF_MATCH_MH=m CONFIG_IP6_NF_MATCH_RT=m CONFIG_IP6_NF_TARGET_HL=m CONFIG_IP6_NF_TARGET_LOG=m CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m </file> Если машина будет работать как IP6-маршрутизатор, в /etc/sysctl.conf необходимо разрешить проброс пакетиков: <file bash /etc/sysctl.conf> # Enables packet IPv6 forwarding net.ipv6.conf.all.forwarding = 1 </file> ====== USE-flags ====== В /etc/make.conf в список USE-флагов добавляем ipv6 и пересобираем систему: <code bash> emerge --nospinner -uDNvt --with-bdeps y world -j2 </code> ====== Настройка туннеля ====== Заходим на [[http://tunnelbroker.net|сайт Hurricane Electric]], регистрируемся, входим :) В меню "User Functions" выбираем "Create Regular Tunnel" и заполняем форму: * "IPv4 endpoint" -- указываем адрес нашей машины, которая будет держать туннель * "Which Server Is Closest to you" -- выбираем с каким сервером [[http://tunnelbroker.net|Hurricane Electric]] будет настраиваться туннель. В "Account Menu" выбираем "Click For Main Page". Тыкаем на наш свежесозданный туннель и: * вводим название туннеля (это надо, что бы отличать туннели между собой, если их будет несколько) * проверяем, что IPv4 адрес нашей стороны туннеля указан верно * тыкаем кнопку "Show Config" * по-умолчанию нам выдают только блок адресов /64, что является аналогом транспортной сетки /30 в мире IPv4, если надо иметь "локальную" сеть (a la /24 в IPv4) в строке "Routed /48", говорим, чтобы нам выдали блок адресов /48. С помощью мышки поднимаем туннель и проверяем, что удалённый конец туннеля достижим: <code bash> ping6 "то, что указано в поле Server IPv6 address" </code> Если всё заработало, прописываем наш туннель в конфиги: <file bash /etc/conf.d/net> ##################################################################### # ## 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" ) </file> Далее убиваем туннель, который был настроен мышкой, и поднимаем туннель через инитовый скрипт: <code bash> 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 </code> ====== Firewall ====== Концептуально, настройка пакетного фильтра для IPv6 ничем не отличается от того, что делается для IPv4. Необходимо только помнить, что: - вместо команды iptables надо использовать ip6tables - протокол ICMP заменяется протоколом ICMPv6, а сам протокол ICMPv6 широко используется для поддержания работы ip6-сети. Если его полностью заблокировать, можно, с высокой вероятностью, получить не работающую сеть. ====== Автонастройка сети на клиентах ====== IPv6 имеет два альтернативных способа автоматической настройки адресов на клиентских машинах: * Stateless * Stateful Независимо от того, какой вариант будет выбран, необходимо иметь работающий radvd, для анонсов маршрутизации и dhcpv6 для настройки всяческих параметров не связанных с собственно адресацией/маршрутизацией. Например, NTP-, SIP-, DNS-сервера, имя домена и т.п. ===== Stateless ===== При таком режиме работы сети информация о клиентских машинах нигде не хранится. Это возможно по следующим соображениям: - Все MAC-адреса в сети (и вообще в мире) уникальны (про дешёвые китайские поделки не вспоминаем) - На основе уникального MAC-адреса легко получается -- уникальный же -- EUI-64 адрес, который префиксуется адресом IPv6-сети. - IPv6-префикс определяется на основе Router Advertisement/Router Solicitation <file txt /etc/radvd.conf> interface eth1 { AdvSendAdvert on; AdvManagedFlag on; AdvOtherConfigFlag on; IgnoreIfMissing on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvHomeAgentFlag off; # Disable Mobile IPv6 support prefix 2001:470:d6a7::/64 { AdvOnLink on; AdvAutonomous on; # Enable stateless configuration AdvRouterAddr on; }; }; </file> <file txt /etc/dhcp/dhcpd.conf> 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 { } </file> ===== Stateful ===== При таком режиме работы информация о выданных адресах хранится на DHCP-сервере, и клиенты должны периодически подтверждать, право использования выданного им адреса. radvd по прежнему анонсирует информацию о маршрутах, но выключенный флаг AdvAutonomous указывает клиенту, что он не имеет права использовать stateless-механизм настройки адреса. <file txt /etc/radvd.conf> interface eth1 { AdvSendAdvert on; AdvManagedFlag on; AdvOtherConfigFlag on; IgnoreIfMissing on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvHomeAgentFlag off; # Disable Mobile IPv6 support prefix 2001:470:d6a7::/64 { AdvOnLink on; AdvAutonomous off; # Disable stateless configuration AdvRouterAddr on; }; }; </file> <file txt /etc/dhcp/dhcpd.conf> 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 { hardware ethernet 00:11:d8:82:d6:e0; fixed-address6 2001:470:d6a7::21; } </file> Вообще говоря, DHCPv6 вместо MAC-адреса оперирует понятием DUID, но поскольку использование MAC-адреса привычней, а dhcp-сервер позволяет, то в примере указано использование MAC-адреса. --- //**Andrew A. Sabitov 2011-03-21 23:52**// net/настройка_ipv6_на_linux.txt Последнее изменение: 2012-12-27 12:20 — Andrew A. Sabitov