Множество устройств подключаются в сеть кабелем по сетевым интерфейсам, софт на которых работает в режиме DHCP клиента. Это весьма удобно учитывая что такой девайс можно просто подключить в сеть домашнего роутера, роутер выдаст определенный ip, и устройство получит дотуп к сети. Если роутер у вас находится далеко, и вы хотите связать ваше устройство с компьютером напрямую при помощи патчокорда, вам понадобится установить на компьютер DHCP-сервер. Как это сделать, я покажу в этой заметке на примере Arch Linux.

1) Определим как называтеся интерфейс:

ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether b8:88:e3:ac:ea:d4 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether a4:17:31:36:37:71 brd ff:ff:ff:ff:ff:ff

У меня это enp2s0f0.

2) Поднимем интерфейс и назначим ему айпи. Я назначу 192.168.2.1 (Подсеть будет 192.168.2.0).

sudo ip link set up dev enp2s0f0
sudo ip addr add 192.168.2.1/24 dev enp2s0f0 

Важно заметить, что если вы используете пакеты для управления сетью (например NetworkManager), вы должны позаботится о том, что бы они не управляли интерфейсом (отключить). В случае  NetworkManager проверить статус интерфейсов можно при помощи nmcli:

nmcli dev status
УСТРОЙСТВО  ТИП       СОСТОЯНИЕ       СОЕДИНЕНИЕ  
wlp3s0      wifi      подключено      Huawei_WLAN 
enp2s0f0    ethernet  отключено       --          
lo          loopback  без управления  -- 

Проверим назначился ли адрес:

ip addr sh dev enp2s0f0

3) Устанавливаем DHCP сервер (пакет dhcp):

sudo pacman -S dhcp

4) Настраиваем сервер, открыв файл:

sudo vim /etc/dhcpd.conf

Стираем или комментируем все что там есть, и туда вставляем:

option domain-name-servers 8.8.8.8, 8.8.4.4;
option subnet-mask 255.255.255.0;
option routers 192.168.2.1;
subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.2 192.168.2.100;
}

5) Создаем сервис systemd с возможность запускать DHCPD на конкретном интерфейсе (что бы не трогать другие интерфейсы)

sudo vim /etc/systemd/system/[email protected]

Туда пишем:

[Unit]
Description=IPv4 DHCP server on %I
Wants=network.target
After=network.target
[Service]
Type=forking
PIDFile=/run/dhcpd4.pid
ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid %I
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target

6) Запускаем сервис до перезапуска системы:

sudo systemctl start [email protected]

Если нужно запускать DHCP-сревер каждый раз при запуске системы, делаем enable сервису:

sudo systemctl enable [email protected]

Все, теперь подключенные в enp2s0f0 устройства должны получать адрес из диапазона 192.168.2.2 - 192.168.2.100, адрес шлюза 192.168.1.1 и гугловые DNS сервера 8.8.8.8 и 8.8.4.4.

Также если у вас имееться концентратор (свич) и нужно подключить несколько устройств - вы без проблем сможете осуществить это просто подключив свитч к езернет-разъему одним из обычных равноправных портов и подключая к таким же портам новые устройства - они должны будут получать новые уникальные IP из диапазона.

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