- IPv6 (Русский)
- Contents
- Обнаружение соседей
- Автоконфигурация узла (SLAAC)
- Клиент
- Privacy Extensions
- dhcpcd
- NetworkManager
- systemd-networkd
- connman
- Постоянный приватный адрес
- NetworkManager
- Статический адрес
- IPv6 и PPPoE
- Делегирование префикса (DHCPv6-PD)
- dhcpcd
- WIDE-DHCPv6
- systemd-networkd
- Другие клиенты
- Отключение IPv6
- Отключение функциональности
- Другие программы
- dhcpcd
- NetworkManager
- GnuPG
- systemd-timesyncd
- systemd-networkd
- Использование IPv4 вместо IPv6
- How To Configure Static And Dynamic IP Address In Arch Linux
- Configure Static IP Address in Arch Linux
- Method 1: Configure Static IP Address in Arch Linux using netctl
- Method 2: Configure Static IP Address in Arch Linux using systemd
- Configure Dynamic IP Address In Arch Linux using Netctl
IPv6 (Русский)
В Arch Linux протокол IPv6 включён по умолчанию.
Статья Linux IPv6 HOWTO, хоть и давно не обновлялась, содержит подробную информацию об IPv6, от основ до более сложных тем. Если вы слабо знакомы с данным протоколом, то стоит сначала прочесть её.
Contents
Обнаружение соседей
Пинг по адресу многоадресной рассылки ff02::1 заставит все хосты в локальной сети ответить. При этом нужно указать сетевой интерфейс:
После этого список «соседей» по локальной сети можно вывести командой
Аналогично, если сделать пинг по адресу ff02::2 , то ответят только маршрутизаторы локальной сети.
Если добавить опцию -I ваш-глобальный-ipv6 в пинг-запрос, хосты локальной сети ответят с использованием глобальных адресов. В этом случае сетевой интерфейс можно не указывать:
Автоконфигурация узла (SLAAC)
Простейший способ получения IPv6-адреса в уже настроенной сети — автоконфигурация узла (SLAAC, Stateless address autoconfiguration). При этом адрес автоматически вычисляется на основании объявленного маршрутизатором префикса сети. Никакие дальнейшие настройки или использование специализированного ПО вроде DHCP-клиента не требуются.
Клиент
Если вы используете netctl, то нужно только добавить одну строку в файл настроек вашей проводной или беспроводной сети.
Если вы используете NetworkManager, то он автоматически включит использование IPv6-адресов, если таковые объявлены в сети.
Нужно также заметить, что для нормальной работы автоконфигурации должны быть разрешены пакеты ICMP для IPv6. Поэтому необходимо добавить разрешения для пакетов ipv6-icmp в настройки межсетевого экрана. Если вы используете брандмауэр на основе iptables, то добавьте следующее правило:
Если вы используете другой интерфейс межсетевого экрана (ufw, shorewall и т.д.), то инструкции по разрешению пакетов ipv6-icmp нужно искать в документации.
Если вы выбрали сетевой менеджер, который не поддерживает разрешение DNS с бесконтекстным (stateless) IPv6 (например, netctl), то для этох целей можно воспользоваться демоном rdnssd(8) из пакета ndisc6 .
Чтобы соответствующим образом работать с адресами IPv6 клиентских устройств вашей сети, нужно настроить демон объявлений (advertisement daemon). Для этой задачи используется входящий в официальные репозитории пакет radvd . Настройка radvd довольно проста. Добавьте следующие строки в файл /etc/radvd.conf , заменив LAN на название вашего сетевого интерфейса:
Такая настройка скажет клиентам выбрать адреса из объявленного блока /64 . Обратите внимание, что эта настройка объявляет все доступные префиксы, привязанные к сетевому интерфейсу. Если вы хотите указать конкретные префиксы, то замените ::/64 на необходимый, например, 2001:DB8::/64 . Блок настроек prefix нужно повторить для каждого указанного префикса.
Чтобы объявить DNS-сервера клиентам вашей локальной сети, можно использовать предлагаемую протоколом обнаружения соседей функциональность RDNSS. Например, добавьте следующие строки к файлу /etc/radvd.conf , чтобы объявить DNSv6-сервер Google:
Шлюз должен также разрешать трафик ipv6-icmp во всех основных цепочках межсетевого экрана. Для брэндмауэра/iptables добавьте правила:
Для других интерфейсов межсетевого экрана выполните аналогичные настройки и в конце не забудьте включить radvd.service .
Privacy Extensions
Когда устройство-клиент получает адрес посредством SLAAC, его IPv6-адрес вычисляется на основании префикса сети и MAC-адреса сетевого интерфейса. Это может иметь определённые последствия с точки зрения безопасности, поскольку MAC-адрес компьютера теперь можно узнать по IPv6-адресу. Для решения этой проблемы был разработан стандарт IPv6 Privacy Extensions (RFC 4941). В соответствии с ним ядро видоизменяет исходный адрес, генерируя вместо него временный. Такой подход используется, когда необходимо скрыть настоящий адрес при подключении к удалённому серверу.
Чтобы включить Privacy Extensions, добавьте в файл /etc/sysctl.d/40-ipv6.conf следующие строки:
Здесь nic0 . nicN — названия сетевых интерфейсов. В статье Настройка сети#Обнаружение сетевых интерфейсов описано, как узнать имена сетевых интерфейсов на вашей машине. Параметры all.use_tempaddr и default.use_tempaddr не будут применены к сетевым интерфейсам, которые уже определены в системе на момент выполнения файла настроек sysctl.
После перезагрузки Privacy Extensions будут включены.
dhcpcd
Стандартная конфигурация dhcpcd содержит опцию slaac private (RFC 7217), которая включает назначение стабильных приватных адресов вместо вычисления оных на основе аппаратных параметров. Дополнительная настройка не требуется, если, конечно, вы не хотите изменять адрес IPv6 чаще, чем в начале каждого нового подключения к сети. Если задать опцию slaac hwaddr , то будут назначаться постоянные адреса.
NetworkManager
NetworkManager использует IPv6 Privacy Extensions в соответствии с настройкой ipv6.ip6-privacy в файле NetworkManager.conf(5) или в профиле соединения. Если параметр не задан ни глобально, ни для соединения, NetworkManager будет использовать /proc/sys/net/ipv6/conf/default/use_tempaddr .
Чтобы включить IPv6 Privacy Extensions явно, добавьте следующие строки в файл NetworkManager.conf(5) :
Примените настройки и переподключитесь ко всем активным соединениям.
Чтобы включить IPv6 Privacy Extensions для отдельных соединений под управлением NetworkManager, отредактируйте соответствующий нужному соединения файл в каталоге /etc/NetworkManager/system-connections/ , добавив к разделу [ipv6] пару ключ-значение ip6-privacy=2 :
Перезагрузите соединение и подключитесь к нему снова.
systemd-networkd
Systemd-networkd тоже не учитывает настройки net.ipv6.conf.xxx.use_tempaddr в файле /etc/sysctl.d/40-ipv6.conf , если оцпия IPv6PrivacyExtensions в файле .network не установлена в значение kernel .
Тем не менее, учитываются некоторые другие опции:
connman
Добавьте следующую строку в файл службы (например, /var/lib/connman/название_службы/settings ):
Постоянный приватный адрес
Другой полезной возможностью являются описанные в RFC 7217 постоянные приватные IP-адреса (stable private addresses). Эта технология позволяет назначать интерфейсам постоянные адреса, для вычисления которых вместо MAC-адреса устройства используется специально сгенерированный ключ.
Чтобы заставить ядро сгенерировать ключ (например, для интерфейса wlan0 ), необходимо задать параметр ядра:
Выключив/включив интерфейс и выполнив ip addr show dev wlan0 вы увидите флаг stable-privacy рядом с каждым адресом IPv6. Ядро должно было создать 128-битный ключ для генерирования адресов этого интерфейса. Чтобы увидеть сам ключ, выполните команду sysctl net.ipv6.conf.wlan0.stable_secret . Чтобы ключ сохранялся после перезагрузок и был постоянным, нужно добавить в файл /etc/sysctl.d/40-ipv6.conf следующие строки:
NetworkManager
Описанные выше настройки не работают для NetworkManager, но он использует постоянные приватные адреса по умолчанию [1],[2].
Статический адрес
Иногда использование статического адреса может быть применено в качестве одной из мер обеспечения безопасности. Например, если ваш локальный маршрутизатор использует обнаружение соседей (Neighbor Discovery) или radvd (RFC 2461), вашему интерфейсу будет автоматически присвоен адрес, который содержит часть MAC-адреса сетевого интерфейса (используя SLAAC). Это может быть не слишком хорошо для безопасности, так как позволяет без труда отслеживать систему даже если часть IPv6-адреса сменилась.
Чтобы присвоить статический IP-адрес при помощи netctl, используйте шаблон профиля /etc/netctl/examples/ethernet-static . Следующие строки особенно важны:
IPv6 и PPPoE
Стандартный инструмент для PPPoE, pppd , позволяет использовать IPv6 в PPPoE, если это поддерживается вашим провайдером и модемом. Добавьте одну строку в файл /etc/ppp/options :
Если вы используете netctl для PPPoE, тогда вместо этого добавьте следующую строку в файл настроек netctl:
Делегирование префикса (DHCPv6-PD)
Делегирование префикса (prefix delegation) — широко распространённая технология развёртывания IPv6, используемая многими интернет-провайдерами. Представляет собой метод назначения сетевого префикса пользователю (например, локальной сети). Маршрутизатор может быть настроен на привязку разных сетевых префиксов к различным подсетям. Провайдер выдаёт префикс с помощью DHCPv6 (обычно это префикс /56 или /64 ), а dhcp-клиент назначает префикс локальной сети. В случае простого шлюза с двумя интерфейсами клиент обычно получает адрес через WAN-интерфейс (или псевдоинтерфейс вроде ppp) и на его основании присваивает IPv6-префикс интерфейсу, обращённому к локальной сети.
Клиент DHCPv6 принимает входящие соединения на UDP-порт 546. Чтобы настроить доступ к этому порту в межсетевом экране nftables, в файле /etc/nftables.conf добавьте следующее правило в цепочку input:
dhcpcd
dhcpcd помимо поддержки dhcp для IPv4 также предлагает полноценную реализацию протокола DHCPv6 (включая DHCPv6-PD). Если вы используете dhcpcd , отредактируйте файл /etc/dhcpcd.conf . Скорее всего, вы уже используете dhcpcd для IPv4, поэтому просто обновите существующую конфигурацию.
Эта конфигурация запросит префикс на WAN-интерфейсе ( WAN ) и делегирует его внутреннему интерфейсу ( LAN ). Если вдруг с диапазоном /64 возникнут проблемы, то нужно использовать вторую инструкцию ia_pd , которая в примере выше закомментирована. Кроме того, приведённая конфигурация также отключит вызовы маршрутизатора (router solicitation) для всех интерфейсов, кроме WAN.
WIDE-DHCPv6
WIDE-DHCPv6 — свободная реализация протокола DHCP для IPv6 (DHCPv6), первоначально разработанная проектом KAME. Установите его с пакетом wide-dhcpv6 AUR .
Если вы используете wide-dhcpv6 , отредактируйте файл /etc/wide-dhcpv6/dhcp6c.conf , заменив WAN и LAN названиями соответвующих интерфейсов:
Клиент wide-dhcpv6 можно запустить/включить с помощью файла юнита systemd dhcp6c@interface.service , где interface — название интерфейса в файле настроек, т.е. например для интерфейса «WAN» используйте dhcp6c@WAN.service .
systemd-networkd
Настройте внешний (wan) и внутренний (lan) интерфейсы. Это включит DHCPv6-PD для интерфейса с запущенным DHCPv6-клиентом. Делегированные префиксы предоставляются посредством IPv6 Router Advertisement во внутренней (локальной) сети.
Другие клиенты
dhclient также может запрашивать сетевой префикс, но для присваивания этого префикса или его части нужно использовать специальный скрипт. Пример программы: https://github.com/jaymzh/v6-gw-scripts/blob/master/dhclient-ipv6.
Отключение IPv6
Отключение функциональности
Параметр ядра ipv6.disable=1 отключает весь стек IPv6, что в большинстве случаев помогает добиться желаемого результата. О параметрах ядра см. Kernel parameters.
Другой параметр, ipv6.disable_ipv6=1 , оставит стек IPv6 работающим, но адреса IPv6 не будут присваиваться сетевым интерфейсам.
Также вы можете отключить присвоение адреса IPv6 конкретным сетевым интерфейсам, добавив следующие строки в файл настроек sysctl /etc/sysctl.d/40-ipv6.conf :
Перезапустите юнит systemd-sysctl.service , чтобы изменения вступили в силу.
Необходимо перечислить здесь все сетевые интерфейсы, для которых требуется отключение IPv6, так как опция all.disable_ipv6 не будет применена к сетевым интерфейсам, которые уже включены на момент выполнения инструкций из файла настроек.
Другие программы
Отключение IPv6 в ядре не предотвращает другие программы от попытки использования версии IPv6. В большинстве случаев это не приводит к проблемам, однако, если они все-таки появляются, вам остается лишь искать в man-страницах или на просторах сети способ отключить эту функциональность.
dhcpcd
Например, dhcpcd будет продолжать пытаться запрашивать настройки сети у маршрутизаторов IPv6 (т.н. Router solicitation). Чтобы отключить это, добавьте следующие строки в файл /etc/dhcpcd.conf :
NetworkManager
Чтобы отключить IPv6 в NetworkManager, вызовите контекстное меню значка статуса сети и перейдите в Edit Connections > Wired > Network name > Edit > IPv6 Settings > Method, затем выберите Method как Ignore/Disabled.
Чтобы определить, как systemd должен запускать службу ntpd, необходимо внести изменения в файл ntpd.service .
Это создаст drop-in сниппет, который будет запускаться вместо стандартного ntpd.service . Флаг -4 отключает использование IPv6 демоном ntp. Поместите следующее в drop-in сниппет:
Здесь сначала очищается значение ExecStart , а затем устанавливается новая команда.
GnuPG
Отключите IPv6 в настройка dirmngr:
После этого перезапустите пользовательскую службу dirmngr.service .
Добавьте следующие строки в файл sshd_config , чтобы убедиться, что sshd использует IPv4-адрес:
После этого перезапустите службу sshd.service .
systemd-timesyncd
Иногда systemd-timesyncd пытается отправлять запросы IPv6-серверу времени, даже если IPv6 отключён. Это может привести к тому, что системные часы не будут обновляться, а в журнале появятся сообщения об ошибках следующего вида:
Команда systemctl status systemd-timesyncd в пункте «Status» выведет IPv6-адрес целевого сервера:
Как видно из FS#59806, по протоколу IPv6 работают «2.»-сервера ntp.org. Чтобы запретить подключение к ним, удалите в файле /etc/systemd/timesyncd.conf записи 2.arch.pool.ntp.org и 2.pool.ntp.org из параметров NTP and FallbackNTP соответственно.
systemd-networkd
networkd позволяет отключить IPv6 для отдельного интерфейса. Когда в разделе [Network] сетевого юнита указан параметр LinkLocalAddressing=ipv4 или LinkLocalAddressing=no , networkd не будет настраивать IPv6 на соответствующих сетевых интерфейсах.
Следует однако отметить, что даже при использовании указанных выше опций networkd всё еще будет ожидать получения «объявлений маршрутизатора» (router advertisements, RA), если IPv6 не был отключён глобально для всей системы. Если трафик IPv6 не будет доходить до интерфейса (например, из-за настроек sysctl или ip6tables), то интерфейс останется в состоянии настройки и потенциально может стать причиной превышения времени ожидания (timeout) для служб, требующих полной настройки сети. Чтобы этого избежать, добавьте опцию IPv6AcceptRA=no в раздел [Network] .
Использование IPv4 вместо IPv6
The factual accuracy of this article or section is disputed.
Источник
How To Configure Static And Dynamic IP Address In Arch Linux
This brief tutorial describes how to configure static and dynamic IP address in Arch Linux and its derivatives like Manjaro Linux. First, we will see how to configure static IP address.
Configure Static IP Address in Arch Linux
We can configure static IP address in two methods. We will see both.
Method 1: Configure Static IP Address in Arch Linux using netctl
Netctl is a command-line utility that can be used to introspect and control the state of the systemd services for the network profile manager.
As you might already know, the sample network configuration files will be stored under /etc/netctl/examples/ location in Arch Linux.
Sample output:
As you see in the above output, ethernet-static and ethernet-dhcp files are the sample Ethernet profiles. You will also see the wireless network profiles in that location as well.
First let us find our network card name. To do so, run:
Sample output:
As you see in the above output, my network card name is enp0s3.
Now, Copy the sample network card profile from /etc/netctl/examples/ directory to /etc/netctl/ directory as shown below.
Replace enp0s3 with your network card name.
Now, edit the network config file:
Enter your IP address, Netmask, gateway, and DNS server details as shown below.
You must replace eth0 with your actual network card name (i.e enp0s3 in our case) in the above configuration file. Save and close the file.
Enable the network card to start automatically on every reboot with command:
Finally, start the network profile as shown below.
Stop and disable dhcp service.
Restart your system to take effect the changes.
Now, verify the static IP address using command:
Sample output would be:
As you see in the above output, static IP address (192.168.1.102) has been assigned to the network card.
Method 2: Configure Static IP Address in Arch Linux using systemd
systemd is a system and service manager for Linux operating systems. Let us now see how to configure static IP address using systemd.
Create a network profile like below.
Replace enp0s3 with your network card’s name. And, add the following lines.
Save and close the file.
Next, you need to disable netctl. To find out what is enabled that is netctl related, run the following command:
Once you identify all netctl related stuff, disable all of them. I had the following service enabled in my system, so I disabled it as shown below.
And, remove netctl package from your Arch Linux using command:
Also, Don’t forget to stop and disable dhcp service.
Then, enable and start systemd-networkd service as shown below:
Reboot your system. And, check if IP address is correctly assigned using command:
You know now how to configure static IP address. Next, we will see how to assign dynamic ip address to a network card.
Configure Dynamic IP Address In Arch Linux using Netctl
First, Install netctl if it is not installed already.
Copy ethernet-dhcp profile from /etc/netctl/examples/ directory to /etc/netctl/ directory as shown below.
Edit /etc/netctl/enp0s3 file:
Replace eth0 with your actual network interface name i.e enp0s3.
Save and close the file.
Enable and start dhcpcd service:
Reboot your system. Verify IP address using the following command:
Источник