Как включить ipv6 ubuntu

Обновлено: 06.07.2024

После нескольких недель поиска в Интернете я сдаюсь и пришел, чтобы задать этот вопрос (снова). Я проверял это и это, но моя проблема не была решена.

Итак, у меня есть компьютер с Ubuntu 16.04 и Windows 10 (dual sys) и подключение по Ethernet, которое, я уверен, имеет подключение по IPv6. Я пытался посещать сайты IPv6 в системе Windows, и это прекрасно работает. Но это не будет работать на Ubuntu, что разочаровывает.

Теперь, когда я бегу ifconfig это дает:

Поэтому я считаю, что у меня есть адрес IPv6 (fe80::10d8:ad64:c0dc:f66a). Однако, когда я пытаюсь получить доступ к веб-сайту IPv6, я просто не могу дозвониться. я изменился /etc/network/interfaces следуя некоторым ссылкам, и это выглядит как

а также /etc/NetworkManager/NetworkManager.conf , Это выглядит как

Я не уверен, что что-то напутал, так как я вспомнил, что раньше использовал IPv6. Может ли кто-нибудь помочь мне с этим вопросом? Заранее спасибо.

2 ответа

У вас нет адреса IPv6 на eth0. У вас есть только локальная ссылка fe80::10d8:ad64:c0dc:f66a/64 адрес, который не подходит для подключения за пределами вашей локальной сети.

Удалить iface eth0 inet dhcp а также iface eth0 inet6 dhcp от /etc/network/interfaces , Диспетчер сети получит адрес IPv6, если он доступен.

Если вам действительно нужно использовать ручную настройку в /etc/network/interfaces правильная настройка для IPv6 будет

так как во многих случаях DHCPv6 не используется на маршрутизаторе. Наиболее распространенной является конфигурация SLAAC.

Спасибо за ваши ответы. Позже я узнал, что на самом деле у меня не было общего соединения IPv6. Для меня единственный способ использовать IPv6- это isatap. То есть IPv6-over-IPv4.

Как уже упоминалось в моем вопросе, у меня есть интерфейс (т.е. is0 ), которая достигает этой функциональности, но я не знаю, почему она не работает. Я должен вручную отключить is0 создать новый интерфейс, подключиться к маршрутизатору isatap в моем кампусе, и все работает. Позже is0 интерфейс появится снова, но на этот раз это не имеет значения.

IPv6 открывает много возможностей и решает многие давнишние проблемы, но требует небольшой корректировки некоторых из обычных сетевых конфигураций (если ранее использовался исключительно протокол IPv4). В этом руководстве речь пойдет об инструментах IPv6, аналогичных популярным инструментам и утилитам IPv4, а также о настройке некоторых сервисов для использования IPv6.

Диагностика сети с IPv6

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

Прежде всего, чтобы просмотреть имеющиеся на данный момент настроенные IPv6-адреса сервера, используйте инструменты iproute2:

ip -6 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2400:6180:0:d0::41f/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::601:15ff:fe43:b201/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::601:15ff:fe43:b202/64 scope link
valid_lft forever preferred_lft forever

Чтобы вывести на экран таблицу маршрутизации IPv6, можно использовать netstat, набрав что-то вроде:

netstat -A inet6 -rn
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
2400:6180:0:d0::/64 :: U 256 0 1 eth0
fe80::/64 :: U 256 0 0 eth1
fe80::/64 :: U 256 0 0 eth0
::/0 2400:6180:0:d0::1 UG 1024 0 0 eth0
::/0 :: !n -1 1 90 lo
::1/128 :: Un 0 1 20 lo
2400:6180:0:d0::41f/128 :: Un 0 1 86 lo
fe80::601:15ff:fe43:b201/128 :: Un 0 1 75 lo
fe80::601:15ff:fe43:b202/128 :: Un 0 1 0 lo
ff00::/8 :: U 256 0 0 eth1
ff00::/8 :: U 256 0 0 eth0
::/0 :: !n -1 1 90 lo

Пользователи, предпочитающие iproute2, могут получить эту информацию, введя:

ip -6 route show
2400:6180:0:d0::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth1 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
default via 2400:6180:0:d0::1 dev eth0 metric 1024

Теперь, научившись получать некоторую информацию IPv6, можно ознакомиться с использованием некоторых инструментов, которые работают с IPv6.

На самом деле, часто встречающийся ping является специфичной командой IPv4. Аналогичная команда для IPv6-адресов называется ping6. Например, следующая строка будет пинговать локальный кольцевой интерфейс:

ping6 -c 3 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.022 ms
--- ::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.021/0.023/0.028/0.006 ms

Как видите, эта команда работает таким же образом, как и ping, с той лишь разницей, что для адресации используется версия протокола.

tracepath6 ::1
1?: [LOCALHOST] 0.045ms pmtu 65536
1: ip6-localhost 0.189ms reached
1: ip6-localhost 0.110ms reached
Resume: pmtu 65536 hops 1 back 64

Чтобы контролировать входящий трафик, как правило, используется программа tcpdump. Эта утилита может отфильтровывать IPv6-трафик с помощью выражения ip6 or proto ipv6, введенного после опций.

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

tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6

Проверка информации DNS

С помощью типичных инструментов IPv6 можно быстро проверить информацию о доменах. Главное отличие от IPv4 состоит в том, что нужно запрашивать записи AAAA ((IPv6 address record), которые используются в IPv6 вместо записей А (в IPv4).

Чтобы получить запись об IPv6-адресе домена, можно просто запросить запись AAAA. С помощью команды host это делается следующим образом:

Подобный результат можно получить при помощи команды dig:

Как видите, работая с IPv6-адресами, можно легко проверить, правильно ли разрешается DNS.

Сетевые сервисы IPv6

Большинство общих сетевых сервисов могут обрабатывать трафик IPv6. Иногда они нуждаются в специальных флагах или синтаксисе, а в некоторых случаях они имеют альтернативную версию, разработанную специально для IPv6.

Настройка SSH

В SSH можно настроить демона на прослушивание IPv6-адресов. Это делается в конфигурационном файле, который можно открыть так:

sudo nano /etc/ssh/sshd_config

Директива ListenAddress указывает, к какому адресу должен привязываться демон SSH. Для адресов IPv4 это выглядит так:

То есть, демон прослушивает IPv4-адрес 111.111.111.111 на порту 22. В случае с IPv6-адресами сам адрес нужно взять в квадратные скобки:

Это скажет демону SSH слушать адрес 1341:8954:a389:33:ba33::1 на порту 22. Чтобы сказать демону слушать все доступные адреса IPv6, наберите:

Не забывайте перезагрузить демона после внесения изменений.

sudo service ssh restart

Если на стороне клиента демон, к которому нужно подключиться, настроен на прослушивание адресов IPv4 и IPv6, клиента можно заставить использовать IPv6 только с помощью флага -6, вот так:

Настройка веб-сервера

Как и SSH-демон, веб-сервер должен быть настроен на прослушивание адресов IPv6.

Чтобы Apache отвечал на запросы определенных IPv6-адресов, используйте синтаксис:

Это скажет серверу прослушивать указанный адрес на порту 80. Для большей гибкости эту строку можно скомбинировать с адресами IPv4; это делается так:

Listen 111.111.111.111:80
Listen [1341:8954:a389:33:ba33::1]:80

При необходимости слушать соединения на порт 80 на всех интерфейсах во всех протоколах можно использовать просто:

Указать адрес IPv6 можно также на уровне виртуального хоста. Как видите, здесь можно настроить virtualhost для IPv6- и IPv4-адреса:

<VirtualHost 111.111.111.111:80, [1341:8954:a389:33:ba33::1]:80>
. . .
</VirtualHost>

Не забудьте перезагрузить сервис для активации внесенных изменений.

sudo service apache2 restart

Пользователи, предпочитающие использовать в качестве веб-сервера Nginx, могут выполнить подобную конфигурацию. За прослушивание адресов отвечает директива listen; чтоб прослушивать трафик IPv6:

На самом деле, в Linux трафик IPv4 тоже будет прослушиваться на порту 80, потому что запросы IPv4 автоматически преобразовываются в адрес IPv6. Потому не нужно указывать адреса IPv6 и IPv4 отдельно следующим образом:

listen [1341:8954:a389:33:ba33::1]:80;
listen 111.111.111.111:80;

Это приведет к ошибке, сообщающей, что порт уже привязан к другому сервису. Чтобы использовать отдельные директивы, отключите эту функцию с помощью sysctl:

sysctl -w net.ipv6.bindv6only=1

Чтобы эта строка автоматически выполнялась при загрузке, добавьте ее в /etc/sysctl.conf:

sudo nano /etc/sysctl.conf
. . .
net.ipv6.bindv6only=1

После этого можно использовать отдельные директивы для IPv4 и IPv6, добавив флаг ipv6only=on к директиве, прослушивающей IPv6:

listen [1341:8954:a389:33:ba33::1]:80 ipv6only=on;
listen 111.111.111.111:80;

Опять же, нужно перезапустить Nginx для активации новых настроек:

sudo service nginx restart

Настройки брандмауэра

К счастью, пользователи, привыкшие настраивать правила брандмауэра при помощи фронт-эндов netfilter (например, iptables), могут использовать аналогичный инструмент, который называется ip6tables.

Чтобы узнать, как настроить iptables в Ubuntu, читайте данную статью.

Для управления правилами фильтрации пакетов IPv6 можно просто заменить команду на ip6tables. Например, в список правил IPv6 можно ввести:

sudo ip6tables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

При использовании на сервере инструмента ufw все уже готово! Дело в том, что ufw настраивает сразу оба стека, если не указано иное. Возможно, придется добавить некоторые правила для конкретных адресов IPv6, но использовать другой инструмент не понадобится.

Чтобы узнать больше об использовании ufw, читайте данное руководство.

Настройка TCP-оболочек

При использовании TCP-оболочек для управления доступом к серверу через файлы /etc/hosts.allow и /etc/hosts.deny просто используйте синтаксис IPv6, чтобы соответствовать определенным правилам.

Например, можно разрешить подключаться по SSH только адресам IPv4 и IPv6; для этого внесите в файл /etc/hosts.allow следующее:

sudo nano /etc/hosts.allow
. . .
sshd: 111.111.0.0/255.255.254.0, [1341:8954:a389:33::]/64

Как видите, адаптировать текущие правила оболочки TCP очень легко.

Итоги

Конечно, для рационального использования ресурсов IPv6 часто приходится изучать сетевые сервисы по отдельности, чтобы узнать о необходимости каких-либо дополнительных изменений в конфигурациях. Тем не менее, теперь работать с IPv6, используя основные утилиты и сервисы, будет более комфортно.

Как отключить IPv6 в Debian / Ubuntu

Вы ищете способ отключить IPv6 в Debian / Ubuntu? В этой статье я расскажу вам, как именно это сделать и почему вам стоит рассмотреть этот вариант. Я также покажу вам, как отключить или снова включить IPv6, если вы передумаете.

Что такое IPv6 и почему вы хотите отключить IPv6 в Debian / Ubuntu?

Хотя цель состоит в том, чтобы заменить IPv4 на IPv6, предстоит пройти еще долгий путь. Менее 30% сайтов в Интернете предоставляют пользователям возможность подключения по протоколу IPv6. IPv6 также может время от времени вызывать проблемы с некоторыми приложениями.

Поскольку VPN предоставляют глобальные услуги, тот факт, что IPv6 использует адреса с глобальной маршрутизацией (однозначно назначенные) и что есть (все еще) интернет-провайдеры, которые не предлагают поддержку IPv6, смещает эту функцию вниз в их списке приоритетов. Таким образом, они могут сосредоточиться на самом важном для пользователей VPN: безопасности.

В то же время настройки основных сетевых правил недостаточно. Вы должны уделять настройке IPv6 такой же уровень внимания, как и IPv4. Это может оказаться довольно сложной задачей (а также поддерживать). С IPv6 возникает ряд проблем, отличных от проблем IPv4 (на многие из которых можно ссылаться в Интернете, учитывая возраст этого протокола), что дает вашей системе еще один уровень сложности.

Также было замечено, что отключение IPv6 в некоторых случаях помогает повысить скорость Wi-Fi в Ubuntu.

Отключить IPv6 в Debian / Ubuntu [только для опытных пользователей]

В этом разделе я расскажу, как отключить протокол IPv6 на вашем компьютере с Ubuntu. Откройте терминал (по умолчанию: CTRL + ALT + T) и приступим к делу!

Примечание. Для большинства команд, которые вы собираетесь вводить в терминале, вам потребуются привилегии root ( sudo ).

Предупреждение! Если вы обычный пользователь Linux на настольном компьютере и предпочитаете стабильную работающую систему, избегайте этого руководства. Это для опытных пользователей, которые знают, что делают и почему.

1. Отключите IPv6 с помощью Sysctl.

Прежде всего, вам необходимо убедиться, что в вашей системе включен IPv6. Проверьте свой IP-адрес в Ubuntu с помощью этой команды:

Вы должны увидеть IPv6-адрес, если он включен (имя вашей интернет-карты может быть другим):

Как отключить IPv6 в Debian / Ubuntu

Вы видели команду sysctl в учебнике по перезапуску сети в Ubuntu . Мы собираемся использовать его и здесь. Чтобы отключить IPv6, вам нужно ввести всего 3 команды:

Вы можете проверить, сработало ли это, используя:

Вы не должны увидеть записи IPv6:

Как отключить IPv6 в Debian / Ubuntu

Однако это только временно отключает IPv6 . При следующей загрузке системы IPv6 снова будет включен.

Я буду использовать vim для редактирования файла, но вы можете использовать любой редактор, который вам нравится. Убедитесь, что у вас есть права администратора (используйте sudo ):

Как отключить IPv6 в Debian / Ubuntu

Добавьте в файл следующие строки:

Чтобы настройки вступили в силу, используйте:

Выглядит это так:

Все параметры будут записны в /etc/sysctl.conf

Если IPv6 все еще включен после перезагрузки, вы должны создать (с правами root) файл /etc/rc.local и заполнить его:

Теперь используйте команду chmod, чтобы сделать файл исполняемым:

Это будет вручную читать (во время загрузки) параметры ядра из вашего файла конфигурации sysctl.

2. Отключите IPv6 с помощью GRUB.

Как отключить IPv6 в Debian / Ubuntu

Теперь вам нужно изменить GRUB_CMDLINE_LINUX_DEFAULT и GRUB_CMDLINE_LINUX, чтобы отключить IPv6 при загрузке:

Сохраните файл и запустите команду update-grub:

Теперь настройки должны сохраняться при перезагрузке.

Повторное включение IPv6 в Debian / Ubuntu

Чтобы снова включить IPv6, вам придется отменить внесенные вами изменения. Чтобы включить IPv6 до перезагрузки, введите:

В противном случае, если вы изменили /etc/sysctl.conf, вы можете либо удалить добавленные вами строки, либо изменить их на:

При желании вы можете перезагрузить эти значения:

Вы должны снова увидеть IPv6-адрес:

Как отключить IPv6 в Debian / Ubuntu

При желании вы можете удалить /etc/rc.local :

Если вы изменили параметры ядра в / etc / default / grub , удалите добавленные параметры:

А теперь сделайте:

Заключение

В этом руководстве я предоставил вам способы отключения IPv6 в Linux, а также дал вам представление о том, что такое IPv6 и почему вы хотели бы его отключить.

Вам помогла данная статья? Получилось отключить IPv6 в ОС Линукс? Дайте нам знать в комментариях!


Преимущества IPv6

Чем же IPv6 лучше своего предшественника? Кроме того, что мы избавляемся от проблем в IPv4-адресацией, у нас теперь есть:

Основным недостатком IPv6 можно назвать длинные адреса в шестнадцатеричном виде. Четыре фрагмента адреса IPv4, разделённые точками, легки для запоминания, а вот восемь кусков шестнадцатиричных чисел запомнить куда труднее.

Моя система поддерживает IPv6?

Как узнать, включена ли поддержка IPv6 в вашем Linux? Очень просто:

Пинг IPv6

Если вам нужно выполнить пинг IPv6-системы, вам понадобится утилита ping6. Следующая команда отправляет два пакета к localhost:

Исследование сети

Хотите узнать, есть ли кто-то в вашей сети, кто имеет поддержку IPv6? Легко!

После того, как ваш хост обменялся данными с другими хостами по IPv6, адреса последних попадут в таблицу окружения (neighbor table) IPv6 (это что-то вроде ARP-таблицы). Содержимое neighbor table вы можете просмотреть при помощи утилиты ip:

Использование сетевых имён

fe80::20b:6aff:feef:7e8d fatfreddy
fe80::221:97ff:feed:ef01 phineas
fe80::3f1:4baf:a7dd:ba4f franklin

$ ping6 -I eth0 phineas
PING phineas(phineas) from fe80::221:97ff:feed:ef01 eth0: 56 data bytes
64 bytes from phineas: icmp_seq=1 ttl=64 time=17.3 ms

SSH и SCP

SSH и SCP умеют работать c IPv6. Внимание, при передаче параметров этим утилитам из командной строки, имеются определённые синтаксические особенности, так что будьте внимательны! Если у вас настроено корректное разрешение имён IPv6-хостов, то разницы при вызове утилит вообще никакой. Вы таким же образом можете подключаться к удалённой оболочке:

А вот в случае использования IPv6-адресов всё чуток сложнее. Установка SSH-сессии:

И опять же, если вы используете link-local адрес, то вы должны указать имя интерфейса с которого будете осуществлять подключение. Как показано выше, делается это путём добавления знака процента и имени интерфейса. Вызов scp имеет ещё более дурацкий синтаксис:

IPv6-адрес вместе именем интерфейса необходимо заключать в квадратные скобки, а квадратные скобки в свою очередь экранировать, чтобы оболочка не узрела в них спецсимволов.

Какой у меня IPv6-адрес?

Команда 'ifconfig -a' выводит информацию обо всех сетевых интерфейсах, находящихся в системе: как о физических, так и о виртуальных. Получив информацию по конкретному интерфейсу вы можете воспользоваться grep, чтобы отфильтровать информацию об IPv6-адресе интерфейса:

Интернет

Так же, как и в случае с IPv4, ваш провайдер должен выделить вам блок адресов IPv6. Адреса из этого блока являются глобальными адресами, находящимися в диапазоне 2000::/3. Давайте в качестве эксперимента попробуем присвоить какому-нибудь сетевому интерфейсу адрес из этого диапазона:

Читайте также: