# Переименовать сетевой интерфейс в Linux

Выполнялось на Debian 12

## Способ 1 - SystemD

Порядок действий:
1. Погасить интерфейс
2. Создать правило именования
3. Изменить сетевые настройки - указать новое имя
4. Выполнить перезагрузку - `systemctl restart systemd-udev-trigger.service`
5. Включить интерфейс

***

Имеем:

```shell
root@vm-qw-74:~# ip a sh ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:24:11:00:1b:aa brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 193.3.184.249/24 brd 193.3.184.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 fe80::be24:11ff:fe00:1baa/64 scope link 
       valid_lft forever preferred_lft forever
root@vm-qw-74:~# 
root@vm-qw-74:~# ip a sh ens19
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:24:11:1d:fa:fe brd ff:ff:ff:ff:ff:ff
    altname enp0s19
    inet 10.66.11.80/20 brd 10.66.15.255 scope global ens19
       valid_lft forever preferred_lft forever
    inet6 fe80::be24:11ff:fe1d:fafe/64 scope link 
       valid_lft forever preferred_lft forever
```

```shell
root@vm-qw-74:~# cat /etc/network/interfaces
...
allow-hotplug ens18
iface ens18 inet static
    address 193.3.184.249
    gateway 193.3.184.1


allow-hotplug ens19
iface ens19 inet static
    address 10.66.11.80/20
```

**Необходимо интерфейс `ens18` переименовать в `wan1`**

Т.к. для выполнения работ интерфейс необходимо отключать, при удалённом подключении все действия нужно выполнить одной командой в конвеере

Команда - `ip a sh ens18 | grep link/ether | awk '{print $2}'` покажет mac адрес для `ens18`

```shell
old_name=ens18
new_name=wan1
mac=$(ip a sh $old_name | grep link/ether | awk '{print $2}')

ifdown $old_name
sed  -i "s/$old_name/$new_name/" /etc/network/interfaces

cat << EOF >  /etc/systemd/network/10-$new_name.link
[Match]
MACAddress=$mac
[Link]
Name=$new_name
EOF

systemctl restart systemd-udev-trigger.service
sleep 0.5
ifup $new_name
```

_для обратного переименования, предварительно нужно удалить файл - `/etc/systemd/network/10-$new_name.link`_

## Способ 2 - Правило udev

Имеем
- старое имя - `eth0`
- mac - `02:42:ac:11:00:02`
- новое имя - `neweth0`

```shell
sudo nano /etc/udev/rules.d/70-persistent-net.rules
```

```shell
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="02:42:ac:11:00:02", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="neweth0"
```

После перезагрузки будет применено новое имя.
