После перехода с древней Ubuntu на последний билд 20.04, после установки, встал вопрос — «Как тут сеть редактировать?». Оказалось все просто. Тут я оставлю себе напоминалку о том, как это сделать.
Настраивать сеть будем c помощью утилиты Netplan. [Netplan — впервые появилась в Ubuntu 17.10 для облегчения управления сетевыми настройками. Netplan хранит параметры сетевых интерфейсов в формате YAML, конфигурация в формате YAML в свою очередь поддерживается сетевыми рендерами NetworkManager и systemd-networkd.
Для того чтобы посмотреть все сетевые интерфейсы введите команду:
sudo ip a
Выдаст что-то на подобии этого:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 54:80:28:4f:db:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global enp2s0f0
valid_lft forever preferred_lft forever
inet6 fe80::5680:28ff:fe4f:db46/64 scope link
valid_lft forever preferred_lft forever
3: enp2s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 54:80:28:4f:db:47 brd ff:ff:ff:ff:ff:f
Видим интерфейс «enp2s0f0» с IP-адресом — 192.168.1.2. Если у вас другое название интерфейса, то в конфигурациях не забудьте поменять его.
Прописывать конфигурацию интерфейсов будем в файле /etc/netplan/50-cloud-init.yaml, с помощью редактора nano, я так понимаю файл может называться по разному у разных пользователей [К примеру 01-netcfg.yaml], но сразу же после установки файл с расширением .yaml в этой папке один. Поэтому для того чтобы приступить к редактированию файла лучше воспользоваться универсальной командой.
sudo nano /etc/netplan/*.yaml
Самые распространенные параметры в файле /etc/netplan/*.yaml
Для начала разберемся какие самые распространенные параметры в этом файле могут быть.
network:
renderer: networkd — Выбор сетевого рендера. Выбран networkd
ethernets: — Блок с настройками сетевых интерфейсов.
enp2s0f0: — Имя первого сетевого интерфейса.
addresses: [192.168.1.2/24] — Статический IP-адрес сетевого интерфейса/Маска сети. На данный момент указан IPv4, можно также через запятую указать IPv6(пишется в кавычках) — [192.168.3.13/24,“2001:1::1/64”] gateway4: 192.168.1.1 — Указание основного шлюза для IPv4.
gateway6: «2001:4::1»— Указание основного шлюза для IPv6.(пишется в кавычках)
dhcp4: yes/no — или true/false — включить/выключить получение сетевых настроек по DHCP для IPv4.
dhcp6: yes/no — или true/false — включить/выключить получение сетевых настроек по DHCP для IPv6.
macaddress: 52.54.00.6d.3c.59 — указание MAC-адреса.
nameservers: — Блок с настройками DNS.
addresses: [8.8.8.8,8.8.4.4] — IP-адреса DNS-серверов, можно несколько через запятую.
ens2s0f1: — Имя второго сетевого интерфейса.
addresses: [10.1.0.5/24]
version: 2Пример конфига:
network: version: 2 ethernets: enp2s0f0: addresses: -192.168.1.2/24 dhcp4: false gateway4: 192.168.1.1 nameservers: addresses: - 192.168.1.254 - 192.168.1.1 - 8.8.8.8 search: - local enp2s0f1: addresses: - 192.168.1.3/24 dhcp4: false gateway4: 192.168.1.254 nameservers: addresses: - 192.168.0.1 - 192.168.0.3 - 8.8.8.8 search: - workdomain
После того, как вы внесли все изменения в файл конфигурации, неплохо было бы его проверить. Введем в консоль следующую комманду:
sudo netplan try
Ваши изменения будут приняты на 150 секунд. За это время их можно будет проверить. Или изменить. В общем — выдаст следующий текст:
Warning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 150 seconds
Если не нажать Enter, то все изменения сбросятся автоматом через некоторое время.
Если с настройками все в порядке, то вводим следующую комманду, для сохранения изменений.
sudo netplan apply
И все. Настройка завершена.
PS: Нашёл на просторах сети пример конфигурации, которая использует большинство доступных функций:
network:
version: 2
# if specified, can only realistically have that value, as networkd cannot
# render wifi/3G.
renderer: NetworkManager
ethernets:
# opaque ID for physical interfaces, only referred to by other stanzas
wlp3s0:
match:
macaddress: 00:11:22:33:44:55
wakeonlan: true
dhcp4: true
addresses:
- 192.168.14.2/24
- 192.168.14.3/24
- "2001:1::1/64"
gateway4: 192.168.14.1
gateway6: "2001:1::2"
nameservers:
search: [foo.local, bar.local]
addresses: [8.8.8.8]
routes: - to:
0.0.0.0/0
via: 11.0.0.1
table: 70
on-link: true
metric: 3
routing-policy:
- to: 10.0.0.0/8
from: 192.168.14.2/24
table: 70
priority: 100
- to: 20.0.0.0/8
from: 192.168.14.3/24
table: 70
priority: 50
# only networkd can render on-link routes and routing policies
renderer: networkd
lom:
match:
driver: ixgbe
# you are responsible for setting tight enough match rules
# that only match one device if you use set-name
set-name: lom1
dhcp6: true
switchports:
# all cards on second PCI bus unconfigured by
# themselves, will be added to br0 below
# note: globbing is not supported by NetworkManager
match:
name: enp2*
mtu: 1280
wifis:
all-wlans:
# useful on a system where you know there is
#only ever going to be one device
match: {}
access-points:
"Joe's home":
# mode defaults to "infrastructure" (client)
password: "s3kr1t"
# this creates an AP on wlp1s0 using hostapd
# no match rules, thus the ID is the interface name
wlp1s0:
access-points:
"guest":
mode: ap
# no WPA config implies default of open
bridges:
# the key name is the name for virtual (created) interfaces
# no match: and set-name: allowed
br0:
# IDs of the components; switchports expands into multiple
interfaces interfaces: [wlp1s0, switchports]
dhcp4: true