На сервере Ubuntu 18.04 не виден сайт по ipv6 адресу

На сервере Ubuntu 18.04 не виден сайт по ipv6 адресу.

https://ipv4.sklad.rus/index.php - работает

https://ipv6.sklad.rus/index.php - нет

Долго искал причину, не нашёл. Работает только в виртуальной винде. Причина может быть где угодно, спрашивайте дополнительную информацию.

Opera

This site can’t be reached

The webpage at https://ipv6.sklad.rus/index.php might be temporarily down or it may have moved permanently to a new web address.

ERR_INVALID_ARGUMENT


FireFox

пустой экран


$ nslookup ipv6.sklad.rus
Server:         192.168.0.72
Address:        192.168.0.72#53

Name:   ipv6.sklad.rus
Address: fe80::5 (сетевая сервера II)
Name:   ipv6.sklad.rus
Address: fe80::9 (сетевая сервера I)

Виртуальная винда FireFox :

работает нормально

> nslookup ipv6.sklad.rus

?? : unknown
address : 192.168.0.72 (сервер)

?? : ipv6.sklad.rus
addresses : fe80::9 (сетевая сервера I)
            fe80::5 (сетевая сервера II)

/etc/apache2/sites-available/sklad.rus.conf

<IfModule mod_ssl.c>
    NameVirtualHost *:443
    <VirtualHost *:443>
            ServerAdmin [email protected]
            ServerName sklad.rus
            ServerAlias ipv4.sklad.rus ipv6.sklad.rus
            DocumentRoot /var/www/sklad.rus/public_html

            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory  /var/www/sklad.rus/public_html>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from xxxx:xxxx:xxxx:xxxx::/64
                    allow from 192.168.0
                    allow from 192.168.1
                    allow from xxx.xxx
                    allow from xxx.xxx.xxx.xxx
                    allow from 127.0.0.1
                    allow from xxxx:xxxx:xxxx:xxxx::5
                    allow from fe80::/16
                    Require local
                    Require ip xxxx:xxxx:xxxx:xxxx::/64
                    Require ip 192.168.0
                    Require ip 192.168.1
                    Require ip xxx.xxx
                    Require ip xxx.xxx.xxx.xxx
                    Require ip 127.0.0.1
                    Require ip xxxx:xxxx:xxxx:xxxx::5
                    Require ip fe80::/16
           </Directory>
           ...

пингую

$ ping -I eth0 ipv6.sklad.rus
PING ipv6.sklad.rus(fe80::9 (fe80::9)) from fe80::948b:8c30:898f:e014%eth0 eth0: 56 data bytes
64 bytes from fe80::9%eth0 (fe80::9%eth0): icmp_seq=1 ttl=64 time=0.439 ms
64 bytes from fe80::9%eth0 (fe80::9%eth0): icmp_seq=2 ttl=64 time=0.211 ms
...

трассирую

$ sudo traceroute -i eth0 ipv6.sklad.rus
traceroute to ipv6.sklad.rus (fe80::9), 30 hops max, 80 byte packets
 1  fe80::9%eth0 (fe80::9%eth0)  0.233 ms  0.141 ms  0.097 ms

на сервере route говорит :

$ route -6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
localhost6.localdomain6/128    [::]                       U    256 1     0 lo
xxxx:xxxx:xxxx:xxxx::/64        [::]                       U    256 1     0 enp3s0
xxxx:xxxx:xxxx:xxxx::/64        [::]                       U    1024 1     0 enp2s0
xxxx:xxxx:xxxx:xxxx::/64        [::]                       U    1024 1     0 enp3s0
fe80::/64                      [::]                       U    256 2     1 enp3s0
fe80::/64                      [::]                       U    256 4   219 enp2s0
[::]/0                         fe80::6e3b:6bff:fedb:5ada  UG   1024 4  2434 enp2s0
[::]/0                         fe80::6e3b:6bff:fedb:5adc  UG   1024 4  2661 enp3s0
localhost6.localdomain6/128    [::]                       Un   0   5 21635 lo
xxxx:xxxx:xxxx:xxxx::/128       [::]                       Un   0   2     0 enp2s0
xxxx:xxxx:xxxx:xxxx::/128       [::]                       Un   0   2     0 enp3s0
xxxx:xxxx:xxxx:xxxx::5/128      [::]                       Un   0   2     0 enp3s0
xxxx:xxxx:xxxx:xxxx:523e:aaff:fe16:8646/128 [::]                       Un   0   2     0 enp3s0
xxxx:xxxx:xxxx:xxxx:ca60:ff:fe61:62c3/128 [::]                       Un   0   3  1176 enp2s0
fe80::/128                     [::]                       Un   0   2     0 enp3s0
fe80::/128                     [::]                       Un   0   2     0 enp2s0
sklad.rus/128                  [::]                       Un   0   3     1 enp3s0
sklad.rus/128                  [::]                       Un   0   5   268 enp2s0
fe80::523e:aaff:fe16:8646/128  [::]                       Un   0   4  7098 enp3s0
fe80::ca60:ff:fe61:62c3/128    [::]                       Un   0   3  4981 enp2s0
ff00::/8                       [::]                       U    256 4  6317 enp3s0
ff00::/8                       [::]                       U    256 4 54257 enp2s0
[::]/0                         [::]                       !n   -1  1     5 lo

Ответы (2 шт):

Автор решения: Vit Saha

На сервере Ubuntu 18.04 не виден сайт по ipv6 адресу.

основные моменты для проверки
1 на сервере должен быть айпи 6 адрес видимый из внешней сети
2 у регистратора ДИ должен быть прописан тот же ай пи 6 адрес что и на сервере ipv6.sklad.rus === 2001:0db8:85a3:0000:0000:8a2e:0370:7334 ( ето как пример
3 апач или нгинкс должен быть настроен на прием и разруливание ай пи 6 адресов 80 или 443 порт приводящий к ipv6.sklad.rus ==> /home/sklad/web/public_html

иногда идут проглючки и надо указать что то вида 2001:0db8:85a3:0000:0000:8a2e:0370:7334:443 вместо *:443

ето основные рекомендации ..... в любом месте может быть затык условно если идет запрос из АФРИКИ ( и там толко ай пи 4 сетки .... то ресолв по ай пи 6 ты не получиш.

→ Ссылка
Автор решения: Pak Uula

Насколько я могу судить, проблема в том, что вы используете link-local адрес. Для таких адресов не определена маршрутизация, ибо эти адреса есть в каждой локальной сети. Поэтому для взаимодействия с узлами по таким адресам необходимо явным образом указывать интерфейс, через который должны отправляться пакеты. В примере с ping вы задаёте интерфейс -I eth0. Что будет, если вы не укажете интерфейс? Скорее всего, пинг не пройдёт.

Попробуйте на клиенте прописать явную маршрутизацию для адресов сервера. Например, если клиент подключен к сети, в которой у сервера адрес fe80::9, сделать так: sudo route -6 add fe80::9 dev eth0. После этого клиент должен начать маршрутизировать адрес fe80::9

Но в общем и целом использовать link local адреса - плохая практика.

Я бы рекомендовал вам привязать доменное имя к адресу с глобальным префиксом. Насколько понимаю, такой префикс вы скрыли за иксами xxxx:xxxx:xxxx:xxxx::/64

Или же настройте себе внутренние адреса (ULA):

  • придумайте себе для сервера два префикса из пространства ULA fd00::, например fd00:a000::/48 и fd00:b000::/48
  • присвойте серверу на каждую из сетевых карт адреса из этих префиксов (на одну карту адрес fd00:a000::1, на другую - fd00:b000::1),
  • пропишите на клиенте правило маршрутизации для того префикса, к сети которого он подключен (например, fd00:a000:: -> eth0)
  • пропишите адреса сервера в DNS или /etc/hosts

После этого адрес fd00:a000::1 должен нормально маршрутизироваться на клиенте и сервер должен стать доступным.

→ Ссылка