Настройка сети и ipv6 в Arch'e при помощи systemd

Ну вот пришло время для первой полезной записи, и она будет посвящена настройке сети в Arch Linux.
Да, я знаю, что есть годное руководство на wiki Arch'a [https://wiki.archlinux.org/index.php/Network_configuration_(Русский)], но все же я считаю, что там много лишнего, создание файлов, скриптов… зачем все это, если в systemd все давно реализовано до нас.


Начнем с того, что вам удалось установить Arch и загрузиться в установленную систему, пол дела уже сделано, теперь нам необходимо залогиниться и узнать имя или имена интерфейсов, в этом нам поможет утилита ip, введем в консоли:ip a в ответ на эту команду, на экране должно быть нечто подобное:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether e8:de:27:03:0c:ac brd ff:ff:ff:ff:ff:ff
    inet 176.114.197.113/19 brd 176.114.223.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::eade:27ff:fe04:1c8b/64 scope link 
       valid_lft forever preferred_lft forever
Теперь мы знаем как называется наш сетевой интерфейс enp0s3. Не знаю кто придумал так генерировать имена сетевым устройствам, после Debian я был в замешательстве, когда не смог найти eth0, и не долго думая запилил правило, которое будет переименовать сетевой интерфейс из enp0s3 в eth0.
/etc/udev/rules.d/70-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="e8:de:27:03:0c:ac", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Если вам тоже привычней eth0, то просто поменяйте ATTR{address} на ваш MAC адрес и после перезагрузки у вас будет православный eth0.
Так с именами разобрались приступим к настройке. В жизни не думал, что буду писать подобную заметку, но вики Arch'a меня поразила, может ее просто никто давно не редактировал или Archeводы просто любят все усложнять, в общем в systemd есть служба systemd-networkd которая занимается настройкой сетевых интерфейсов. Нам необходимо создать файл в /etc/systemd/network/ с любым именем, но расширение у него должно быть network.
/etc/systemd/network/eth0.network
[Match]
Name=eth0 #Имя нашего интерфейса

[Network]
Description="Internet interface" #Описание 
#если у нас DHCP, то нужен лишь один параметр DHCP=yes
Address=192.168.1.1 #Ip адрес 
Gateway=192.168.1.254 #Шлюз
DNS=8.8.8.8 #DNS
Основные параметры мы указали, если вам еще что-то не обходимо предлагаю с этим ознакомиться в руководстве man systemd.network [ http://www.freedesktop.org/software/systemd/man/systemd.network.html ]
Осталось только включить и запустить службу.
systemctl enable systemd-networkd.service — включает службу
systemctl start systemd-networkd.service — запускает службу
Теперь глянем ip адрес командой ip addr show eth0, на экране должно красоваться нечто подобное:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether e8:de:27:04:1c:8b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::eade:27ff:fe04:1c8b/64 scope link 
       valid_lft forever preferred_lft forever
Поздравляю, вы настроили вашу сетевую карту используя только systemd и никаких лишних скриптов.

Если у вас вдруг оказался wifi то и тут systemd нам поможет, всю схему подключение объяснять не буду, но у вас уже должен быть установлен WPA_supplicant и настроен [https://wiki.archlinux.org/index.php/WPA_supplicant_%28Русский%29]. Ну а дальше дело техники, включаем службу — systemctl enable wpa_supplicant@wlan0.service создаем линк на wpa_supplicant.conf
 ln -s /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
Создаем файл с настройками интерфейса
/etc/systemd/network/wlan0.network
[Match]
Name=wlan0
[Network]
DHCP=yes
Включаем службу systemd-networkd.service, в очередной раз поздравляю, если вы все сделали правильно, то при загрузке компьютера вы будете в "онлайне".

Ну а теперь самое интересное, IPv6.
Сейчас Роскомнадзор блокирует множество сайтов(в особенности торрент трекеры) и эти сайты, пытаются всячески обойти блокировки и предоставить пользователям свои услуги и один из этих «обходов» является ipv6, многие провайдеры в него не умеют и естественно не могут заблокировать. Единственное, что у вас должно быть это внешний(белый) ip адрес на вашем компьютере, не на роутере(там будет немножко другая настройка), а именно на вашем, да именно, за которым вы сидите. Настройка реализуется тоже припомощи systemd и надо создать всего 2 файла конфигурации.
Для начала откроем файл с конфигурацие интерфейса который смотрит в интернет и добавим строчку Tunnel=tun6to4 вот что у нас получится:
/etc/systemd/network/eth0.network
[Match]
Name=eth0 #Имя нашего интерфейса

[Network]
Description="Internet interface" #Описание 
#если у нас DHCP, то нужен лишь один параметр DHCP=yes
Address=172.253.122.17/19 #Ip адрес 
Gateway=172.253.122.1 #Шлюз
DNS=8.8.8.8 #DNS
Tunnel=tun6to4
Теперь нам необходимо создать устройство для туннеля, для этого запилим файл:
/etc/systemd/network/ipv6.netdev
[Match]

[NetDev]
Name=tun6to4
Kind=sit
MTUBytes=1480

[Tunnel]
Local=172.253.122.17
Remote=192.88.99.1
TTL=255
Осталось только сконфигурирован туннель
/etc/systemd/network/ipv6.network
[Match]
Name=tun6to4

[Network]
Address=2002:acfd:7a11::
Gateway=2002:c058:6301::1
Узнать Address адрес поможет сайт [ http://wb0.ru/ipconv.php ]


В принципе все, после перезапуска службы systemctl restart systemd-networkd.service у вас должен появиться настроенный интерфейс tun6to4@eth0

Проверить работает ли у вас ipv6 поможет команда ping6 ipv6.google.com ну или сайт [ http://test-ipv6.com/ ]

Всем удачи. Критика приветствуется.

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    Прямой эфир

    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 0
    cloudsv 21 октября 2018, 23:16
    Arch Linux Памятка по основным утилитам Linux 0
    cloudsv 01 июня 2018, 01:39
    Telegram Настройка прокси mtproto для Telegram 28
    cloudsv 22 января 2018, 21:59
    Web Локальное зеркало обновлений Dr.web 0
    cloudsv 03 октября 2017, 10:55
    Web Пароль от резервной копии Bitrix 1
    cloudsv 09 июля 2017, 23:02
    Arch Linux Let's Encrypt это легко и просто 0