Главная
   Документация
      Asterisk
      CentOS
      Debian
      Docker
      FreeBSD
      openHAB
      PostgreSQL
      Raspberry Pi
      Ubuntu
      WWW
      Разное




Главная Документация FreeBSD › FreeBSD - используем IPv6 у домру.

FreeBSD - используем IPv6 у домру.

Автор:

Статья написана 2018-11-19 17:01:45
Последние правки 2018-11-19 18:46:55

В некоторых городах (а может уже и везде) у провайдера домру есть возможность наряду с IPv4 использовать и IPv6 адреса. Как это сделать и какие при этом есть подводные камни - читайте ниже.

  • Исходные данные
    # uname -sr
    FreeBSD 11.2-RELEASE-p3
    
  • Общие настройки + ppp:

    /etc/ppp/ppp.conf
    default:
     set log Phase Chat LCP IPCP CCP tun command
     ident user-ppp VERSION
     enable dns
     enable lqr echo
     set cd 5
     set mru 1492
     set mtu 1492
     set redial 0 0
    
    domru:
     set device PPPoE:ale0
     set authname USER
     set authkey PASS
     set dial
     set login
     enable ipv6cp
    
    ale0 - название интерфейса, к которому подключен сетевой кабель домру;
    USER - имя пользователя, которое выдал домру;
    PASS - пароль, который выдал домру;


    /etc/ppp/ppp.linkup
    domru:
     ! sh -c "route add default HISADDR"
     ! sh -c "route add default HISADDR6"
     ! sh -c "route add -inet6 default -interface INTERFACE"
    

    /etc/ppp/ppp.linkdown
    domru:
     ! sh -c "route del default"
     ! sh -c "route del -inet6 default"
    

    /etc/rc.conf
    ipv6_activate_all_interfaces="YES"
    ipv6_enable="YES"
    ipv6_gateway_enable="YES"
    
    ppp_enable="YES"
    ppp_mode="ddial"
    ppp_profile="domru"
    
    Если в rc.conf не было задано параметров, начинающихся с ipv6_, то после их добавления перезагрузите компьютер.


  • IPv6 на сервере

    Горячо любимый ISC DHCP Server тут не подойдет, ибо не умеет работать поверх PPPoE-сессии. Ставим WIDE-DHCPv6 от the KAME project (при этом, ISC DHCP Server, если он у вас есть и раздает IPv4 адреса, удалять не надо).
    # cd /usr/ports/net/dhcp6
    # make install clean
    
    Настройка, файл /usr/local/etc/dhcp6c.conf
    interface tun0 {
        send ia-pd 0;
    };
    
    id-assoc pd 0 {
        prefix-interface re0 {
            sla-len 0;
            sla-id 2;
        };
    };
    
    re0 - название интерфейса, который подключен в локальную сеть;


    /etc/rc.conf
    dhcp6c_enable="YES"
    dhcp6c_interfaces="tun0"
    
    Запускаем:
    # /usr/local/etc/rc.d/dhcp6c start
    
    На этом настройка IPv6 для сервера закончена, можно проверять:
    # ifconfig re0 inet6
    re0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
            options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
            inet6 fe80::127b:44ff:fe91:c230%re0 prefixlen 64 scopeid 0x2 
            inet6 2a02:2698:824:731a:127b:44ff:fe91:c230 prefixlen 64 
            nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
    
    - искомый адрес: 2a02:2698:824:731a:127b:44ff:fe91:c230


  • IPv6 в локальной сети

    Для этого используем штатного демона rtadvd.
    /etc/rc.conf
    rtadvd_enable="YES"
    rtadvd_interfaces="re0"
    
    и снова, re0 - интерфейс, который подключен в локальную сеть.
    Запускаем:
    # /etc/rc.d/rtadvd start
    
    Теперь все устройства в нашей локальной сети, способные работать с IPv6, смогут получить IPv6 адреса.


  • Немного о грустном

    Если ваш волшебно обретенный IPv6 через некоторое время начинает вдруг отваливаться и не работать, то не спешите выбрасывать сервер. Поищите а в логах вот такие сообщения:
    tun0: Warning: lqr_RecvEcho: Got packet size 4, expecting 12 !
    ...
    tun0: Phase: deflink: ** Too many LCP ECHO packets lost **
    
    Первая строка говорит о том что lqr.magic в полученном пакете не верен.
    Вторая строка появится после пяти первых, после чего соединение будет перезапущено, IPv4 ваш сервер получит, но вот dhcp6 о перезапуске будет не в курсе и весь ваш IPv6 накроется медным тазом, до перезапуска dhcp6c.
    Вы спросите, почему так? Поиски в интернете дают нам следующий ответ: "некоторые производители устройств срут на стандарты при реализации протокола и отсюда все проблемы".
    Вы спросите, что делать? Ответ: отключить LQR, но при этом придется самостоятельно следить за соединением до провайдера, передергивать его в случае необходимости, при этом перезапуская dhcp6c.
    Вы спросите, как отключить? Закомментируйте enable lqr echo в /etc/ppp/ppp.conf и перезапустите ppp
    # /etc/rc.d/ppp restart
    

    Вечный бой. На примере кинозал.тв.
    - на момент написания этой статьи в бане РКП всего 26 IPv6 адресов, казалось бы, вот оно - освобождение от цензуры;
    - но домру фильтрует запросы по доменному имени, поэтому какой при этом резолвится ip, 4 или 6 - без разницы, показывается "фу"-страница;
    - можно забить в браузер IPv6 адрес вместо доменного имени, да, сработает, но сервер(а) кинозала прячутся за cloudflare, посему коннект на ip вместо доменного имени, невозможен (cloudflare об этом так и пишут, когда пытаешься зайти на сайт по ip);
    - приоритет использования IPv6 в данном случае не помогает, так как проще зароутить IPv4 в впн.



Связанные странички:
Получаем SSL сертификаты от Let's Encrypt.
Основы работы с FreeBSD с консоли или через подключение по ssh
Web-интерфейс для VirtualBox (FreeBSD)
TightVNC (FreeBSD)
Установке Serviio в FreeBSD
Подключение к FreeBSD при помощи ssh из Windows
Ставим samba на FreeBSD 10
memcached на FreeBSD
FreeBSD 11 и Virtualbox
FreeBSD - net-snmp