Мы — долго запрягаем, быстро ездим, и сильно тормозим.



www.lissyara.su —> www.lissyara.su —> FreeBSD, named ipv6

Настройка IPv6 во FreeBSD и isc-bind

Автор: kirgudu.


Ну вот, дали блок адресов с ipv6.Теперича остается настроить фрю, что достаточно просто

[size=150]Настройка FreeBSD 8.0-STABLE, 7.2-STABLE[/size]
/etc/rc.conf

ipv6_enable="YES"
ipv6_defaultrouter="2A00:18C0:1:1::1"
ipv6_ifconfig_bce0_alias0="2a00:18c0:1:1::2eee/64"

$ ifconfig bce0
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4>
        ether 00:1c:c4:11:ff:0a
        inet6 fe80::21c:c4ff:fe11:ff0a%bce0 prefixlen 64 scopeid 0x1
        inet 111.1.1.1 netmask 0xffffffe0 broadcast 111.1.1.31
        inet6 2a00:18c0:1:1::2eee prefixlen 64
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active

Ручками:

ifconfig bce0 inet6 2a00:18c0:1:1::2eee/64
route add -inet6 default 2A00:18C0:1:1::1

[size=150]IPFW[/size]
Нужно разрешить весть icmp6 траффик, без этого ipv6 не работает, это все равно что запретить arp для ipv4 :)
allow icmp6 from any to any

Так же введено понятие me6 - грубо говоря, я с протоколом IPv6. IP6 - ipv6 протокол. Пример
allow tcp from any to { me or me6 } established

Косяк - таблицы ipv6 адреса не понимают, трабла известная, в 9-ке пофикшено.


[size=150]PF[/size]
Все работает.
Кое где придется писать proto inet или proto inet6:
pass inet proto icmp to ($ext_if) icmp-type $icmp_types no state
pass inet6 proto icmp6


[size=150]Настройка бинды (isc bind)[/size]
/etc/namedb/named.conf

options {
        allow-recursion 2a00:18c0/32;
        listen-on-v6 {  2a00:18c0:1:1::2eee;  }; //Обязательно 
        query-source-v6 2a00:18c0:1:1::2eee; // все ниже по желанию, если у вас куча интерфейсов на машине
        transfer-source-v6 2a00:18c0:1:1::2eee;
        notify-source-v6 2a00:18c0:1:1::2eee;
};

zone "provider.net" {
        type master;
        file "provider.net";
};

zone "0.c.8.1.0.0.a.2.ip6.arpa" {
        type master;
        file "ARPA.IP6.2a00-18c0-0000-0000-0000-0000-0000-0000"; //мне так удобнее
};

[size=150]Прямая зона[/size]
Ну с прямой зоной все ясно, в файл provider.net добваляем запись вида

ipv6server        IN        AAAA        2a00:18c0:1:1::2eee

[size=150]Обратная зона[/size]
А вот с обраткой чистой воды шаманство:
файл ARPA.IP6.2a00-18c0-0000-0000-0000-0000-0000-0000

@       IN      SOA     dns1.privider.net. hostmaster.provider.net.  (
                                                       1 ; Serial
                                                       3600    ; Refresh
                                                       400     ; Retry
                                                       1209600 ; Expire
                                                       3600 )  ; Minimum
               IN              NS              dns1.provider.net.
               IN              NS              dns2.provider.net.
2eee.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.1.0.0.0 IN PTR  ipv6server.provider.net.

Вид обратной записи сводится к чтению в обратном порядке полноформатной записи IPv6:
2a00:18c0:1:1::2eee == 2a00:18c0:0001:0001:0000:0000:0000:2eee ->
2eee.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.1.0.0.0.18c0.2a00 (Кто придумал???)
Соответственно два последних октета не пишем, т.к. в описании зоны уже все есть.
В кратце, нули слева можно не писать, пустые октеты пропускаем ::, но можно один раз! Т.е. если у вас 2a00:18c0:0001:0000:0001:0000:0000:2eee, то сократить можно только до 2a00:18c0:1:0:1::2eee

[size=150]Рукоблудство для обратной зоны[/size]
Для простоты создания обратной зоны для себя веду просто файл вида:
2a00:18c0:0001:0001::2eee  ipv6server.provider.net.

А вот скриптик, который это все безобразие преобразует в биндовую зону:
ipv6dns.rb

Берем каталог ZONEDIR, из каждого файлика генерим одну зону, скипаем комменты и пустые строки

#!/usr/bin/env ruby
# v.0.1 by kirgudu@kirgudu.org
require 'ipaddr'
ZONE = '.0.c.8.1.0.0.a.2.ip6.arpa'
ZONEDIR = '/etc/namedb/IPv6/'

serial = Time.now.to_i

def prnhead
        print <<EOF
$TTL 10800
;
; (REVERSE zone for 2a00.18c0::1 network)
;

@       IN      SOA     dns1.provider.net. hostmaster.provider.net.  (
                                                        #{serial} ; Serial
                                                        3600    ; Refresh
                                                        400     ; Retry
                                                        1209600 ; Expire
                                                        3600 )  ; Minimum
                IN              NS              dns1.provider.net.
                IN              NS              dns2.provider.net.

EOF
end

prnhead
Dir.new("#{ZONEDIR}").each do | zfile |
        next if zfile =~ /^\./
        lines = IO.readlines("#{ZONEDIR}/#{zfile}")
        lines.each do | line |
                next if line =~ /^\s+$/ or line =~ /^#/ or line =~ /^;/
                ip,name = line.chomp.downcase.split
                ip6 = IPAddr.new ip
                dnsadr = ip6.ip6_arpa
                dnsadr = dnsadr.gsub(ZONE,"")
                puts "#{dnsadr} IN PTR  #{name}"
        end
end

Собсно вот, будут вопросы - пишите.

PS: Пару раз, когда фре прикручивал ipv6 адреса без перезагрузки - оно ребуталось с кернель паником. что 7.2, что 8.0. Шайтан. Так что осторожнее.



размещено: 2010-03-17,
последнее обновление: 2010-03-17,
автор: kirgudu

оценить статью:


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 23 чел.
За последние 30 мин было: 118 человек
За сегодня было
9510 показов,
2811 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0456 секунд
Из них PHP: 52%; SQL: 48%; Число SQL-запросов: 28 шт.
Исходный размер: 42470; Сжатая: 10154