Руководство по развертыванию IPv6-маршрутизатора

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page IPv6 router guide and the translation is 48% complete.
Outdated translations are marked like this.


This guide provides details on setting up IPv6 routing on a Gentoo Linux system.

Основные настройки ядра

Все ядра начиная с версии 2.6.0 без проблем поддерживают соединения IPv6. Новый USAGI IPv6 стек интегрирован в ядро Linux v2.6.0.

root #emerge --ask sys-kernel/gentoo-sources
ЯДРО 'make menuconfig' options
Networking support --->
  Networking options --->
    <*> The IPv6 protocol --->
## (Параметры IPv6 ниже этого элемента меню могут пригодиться для многих других приложений,
## но не требуются для базовой установки)
 
## (Этот параметр требуется только при использовании ptrtd для преобразования 6to4)
Device Drivers --->
  Network device support --->
    <*> Universal TUN/TAP device driver support

Emerge

root #emerge --ask sys-apps/iproute2
root #emerge --ask net-misc/radvd

Перед тем, как продолжить, убедитесь, что ipv6 находится в списке переменных USE в файле make.conf, чтобы пакеты, которые будут установлены позже, включали поддержку IPv6.

Additional software

Существует несколько пакетов для работы с IPv6. Большинство из них находятся в категории net-misc.

Package Description
net-misc/radvd Router advertisement daemon
net-misc/dhcpd ISC DHCP server, DHCPv4 and DHCPv6 capability
net-misc/dibbler DHCPv6 server
net-misc/ipv6calc Converts an IPv6 address to a compressed format
dev-perl/Socket6 IPv6 related part of the C socket.h defines and structure manipulators

Confirming IPv6 status

Если IPv6 работает, loopback-устройство должно показывать IPv6-адрес:

root #ip -6 addr show lo
1: lo: <LOOPBACK,UP> mtu 16436
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
    ## (Строки выше показывают, что все работает)

IPv6-маршрутизатор

Obtaining an address and prefix

dhcpcd can be used to obtain a single, host only, /128 IPv6 address for the WAN interface, and a /64 IPv6 prefix for the LAN interface.

ФАЙЛ /etc/dhcpcd.confRequest a IPv6 prefix for eth0.lan and eth0.management to be routed publicly with eth0.wan.
# Disable router solicitations for all interfaces, enable only for selected ones
noipv6rs
 
# Interface configuration for the wan vlan on the eth0 interface
interface eth0.wan
  # Enable router solicitation for this interface
  ipv6rs
  # Request a normal address usins iaid 1 for interface eth0.wan
  ia_na 1
  # Request a prefix using iaid 2 and assign it to the eth0.lan interface using sla_id 0 and prefix size of 64
  ia_pd 2 eth0.lan/0/64
См. также
Dhcpcd
Предупреждение
rfc6177 is barely seen as a recommendation by residential ISPs, Prefix Delegation may not work.

Настройка маршрутизации

Для использования системы в качестве маршрутизатора для других клиентов, которым требуется соединение через IPv6, необходима дальнейшая настройка. Нам потребуется включить переадресацию пакетов IPv6. Это можно сделать двумя способами.

root #sysctl -w net.ipv6.conf.all.forwarding=1
Предупреждение
Сценарий инициализации radvd, объясняемый в следующем разделе, включает (и отключает) переадресацию, делая следующий шаг ненужным.

Чтобы назначить клиентам адреса IPv6, в спецификации IPv6 разрешается stateless и stateful назначение IP. Stateless назначение использует процесс с названием Router Advertisement и позволяет клиентам получить IP-адрес и маршрут по умолчанию простым поднятием интерфейса. Этот способ называется "stateless" потому что не имеет записи о назначенных IP-адресах и хосте, которому они назначены. Stateful назначение обрабатывается DHCPv6. Оно называется "stateful" потому что сервер хранит состояние клиентов, запросивших и получивших IP-адреса.

Заметка
The IPv6 Stateless Address Autoconfiguration configures IP routing and connectivity, the DHCPv6 is required to assign IPv6 addresses, and provide information such as DNS servers.

Stateless-конфигурация

Stateless-конфигурация легко выполняется использованием программы Router Advertisement Daemon, или radvd:

После установки radvd, необходимо создать файл /etc/radvd/radvd.conf, хранящий информацию о том из какой подсети нужно назначать IP. Здесь приведен пример файла radvd.conf, использующий префикс, назначенный нашим сервисом туннелей.

КОД Пример radvd.conf
interface eth1
{
        ## (Отправка advertisement-сообщений другим хостам)
        AdvSendAdvert on;
        ## (Фрагментация нежелательна (tm))
        AdvLinkMTU 1280;
        MaxRtrAdvInterval 300;
        ## (Префикс подсети IPv6 назначенный нашим PoP)
        prefix 2001:470:1F00:296::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};
Предупреждение
Проверьте, что интерфейс в первой строчке указан правильно, чтобы отправлять advertisement маршрутизатора в интранет, а не интернет-провайдеру!
Совет
Further information is available in man radvd.conf.

Stateful-конфигурация

Предупреждение
Dibbler project is concluded.

Для включения stateful-конфигурации, требуется установить и настроить net-misc/dibbler.

root #emerge --ask dibbler

Настройте dibbler-клиент, отредактировав /etc/dibbler/client.conf.

КОД Пример конфигурации клиента dibbler
iface ppp0 {
	rapid-commit yes
	pd
	option dns-server
}
</pre>

Теперь запустите клиент dibbler и настройте его на запуск при загрузке.

root #/etc/init.d/dibbler-client start
root #rc-update add dibbler-client default

Service

OpenRC

To start radvd and start it on boot:

root #/etc/init.d/radvd start
root #rc-update add radvd default

Настройка DNS

IPv6 и DNS

Также как DNS использует для IPv4 записи A, аналогично используются AAAA записи для IPv6. (это потому что IPv4 имеет адресное пространство 2^32, в то время как IPv6 имеет адресное пространство 2^128). Для обратных запросов DNS, стандарт INT устарел, но все еще широко поддерживается. ARPA является самым новым стандартом. Поддержка формата ARPA описывается далее в этом руководстве.

Настройка BIND

Последние версии BIND включают поддержку IPv6. Для прочтения этого раздела требуется минимальное знание о конфигурации и использовании BIND. Предполагается, что BIND не запущен в chroot. Если это предположение ошибочно, просто добавьте префикс chroot к большинству частей следующего раздела.

Сначала добавьте записи для файлов "прямой" (forward) и "обратной" (reverse) зоны DNS в /etc/bind/named.conf.

ФАЙЛ /etc/bind/named.confЗаписи named.conf
## (Мы разрешаем bind слушать IPv6-адреса.
## Использование 'any' является единственным способом это выполнить для версий bind ранее 9.3)
options {
    [...]
    listen-on-v6 { any; }
    [...]
};
## (Этот раздел предусматривает прямой DNS для домена 'ipv6-rules.com':)
zone "ipv6-rules.com" IN {
    type master;
    file "pri/ipv6-rules.com";
};
## (Данный формат обратного DNS является "побитовым." Это выполняется взятием префикса IPv6,
## переставлением чисел в обратном порядке и размещением точки между каждым числом)
zone "6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa" {
        type master;
        file "pri/rev-ipv6-rules.com.arpa";
};

Теперь ко всех узлам необходимо добавить файлы зоны и записи.

ФАЙЛ /etc/bind/pri/ipv6-rules.com
$TTL    2h
@       IN      SOA     ipv6-rules.com. webmaster.ipv6-rules.com.  (
                                2003052501 ; Serial
                                28800      ; Refresh
                                14400      ; Retry
                                3600000    ; Expire
                                86400 )    ; Minimum
                NS      ns1.ipv6-rules.com
 
IN      AAAA    2001:470:1f00:296::1 ; address for ipv6-rules.com
host1   IN      AAAA    2001:470:1f00:296::2 ; address for host1.ipv6-rules.com
host2   IN      AAAA    2001:470:1f00:296::3:3 ; address for host2.ipv6-rules.com
ФАЙЛ /etc/bind/pri/ipv6-rules.com.arpa
$TTL 3d ; Default TTL (bind 8 needs this, bind 9 ignores it)
@       IN SOA ipv6-rules.com. webmaster.ipv6-rules.com. (
                        2003052501      ; Serial number (YYYYMMdd)
                        24h             ; Refresh time
                        30m             ; Retry time
                        2d              ; Expire time
                        3d )            ; Default TTL
        IN      NS     ns1.ipv6-rules.com.
; IPv6 PTR entries
$ORIGIN 6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa.
 
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     ipv6-rules.com.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host1.ipv6-rules.com.
3.0.0.0.3.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host2.ipv6-rules.com.

Настройка DJBDNS

Для пакета net-dns/djbdns существует несколько патчей от независимых разработчиков, позволяющих выполнять определение IPv6-имён. DJBDNS может быть установлен с этими патчами, если в список USE-флагов добавлен ipv6.

Предупреждение
Не все типы записей поддерживаются этими патчами. В частности, записи NS и MX не поддерживаются.
root #emerge --ask net-dns/djbdns

После установки djbdns, его нужно настроить, запустив команду tinydns-setup и ответив на несколько вопросов о том, к каким адресам нужно осуществлять привязку, куда устанавливать tinydns, и т. д.

root #tinydns-setup

Предполагая, что tinydns установлен в /var/tinydns, отредактируем /var/tinydns/root/data. Этот файл содержит все данные, необходимые tinydns для обработки DNS для делегирования IPv6.

КОД Образец файла данных
## (*.ipv6-rules.com авторитативно обрабатываются 192.168.0.1)
.ipv6-rules.com:192.168.0.1:a:259200
## (Авторитативный обратный DNS для 2001:470:1f00:296::/64)
.6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa:192.168.0.1:a
## (Укажите IP-адреса для хостов host1 и host2)
6host1.ipv6-rules.com:200104701f0002960000000000000001:86400
6host2.ipv6-rules.com:200104701f0002960000000000000002:86400
## (Направьте www на host1)
3www.ipv6-rules.com:200104701f0002960000000000000002:86400

Для строк с префиксом 6 будут созданы обе записи: AAAA и PTR. Для строк с префиксом 3 будет создана только запись AAAA. Помимо редактирования файла data вручную, можно использовать скрипт add-host6 и add-alias6 для добавления новых записей. После внесения изменений в файл data, необходимо запустить make из /var/tinydns/root. В результате будет создан файл /var/tinydns/root/data.cfb, который будет использоваться tinydns в качестве источника информации для DNS-запросов.

IPv6-клиенты

Использование radvd

Клиенты этого маршрутизатора должны подключаться к сети через IPv6. При использовании radvd, настройка хостов должна быть такой же легкой, как и включение интерфейса. (Это, возможно, уже сделано init-скриптом net.ethX).

root #ip link set eth0 up
root #ip addr show eth0
1: eth0: <BROADCAST,MULTICAST,UP> mtu 1400 qdisc pfifo_fast qlen 1000
    link/ether 00:01:03:2f:27:89 brd ff:ff:ff:ff:ff:ff
    inet6 2001:470:1f00:296:209:6bff:fe06:b7b4/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::209:6bff:fe06:b7b4/64 scope link
       valid_lft forever preferred_lft forever
    inet6 ff02::1/128 scope global
       valid_lft forever preferred_lft forever

Если это не работает, убедитесь, что брандмауэр IPv6 позволяет прохождение ICMPv6 пакетов:

root #ip6tables -A INPUT -p icmpv6 -j ACCEPT

Troubleshooting

Package is missing IPv6 support

Packages will typically emerge with the ipv6 USE flag, but if IPv6 is not working on a specific program, checking that it is built with that is a good first step.

Заметка
There is no issue adding USE="ipv6" to /etc/portage/make.conf, but this is often unnecessary.
Заметка
Некоторые пакеты (ошибочно) обнаруживают поддержку IPv6 автоматически и, следовательно, не имеют USE-флага ipv6. Таким образом, не все пакеты, которые должны поддерживать IPv6, будут поддерживать его, если они скомпилированы на ядре без поддержкой IPv6.

See Also

Внешние источники

В сети имеется большое количество отличных ресурсов по IPv6.

На IRC, можно попробовать канал #ipv6 (webchat) на сервере Libera.Chat. К серверам Libera.Chat можно подсоединиться, используя клиент с поддержкой IPv6, установив соединение к irc.ipv6.libera.chat.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Peter Johanson, Jorge Paulo, Camille Huot, Pasi Valminen, , Markos Chandras (Hwoarang)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.