Руководство Внедритель

Подключение к Raspberry Pi через локальный IP

Подключение оборудования
  • Основной Ethernet-порт Raspberry Pi: Подключите к роутеру. Роутер выдаст Raspberry Pi IP-адрес (например, 10.20.56.100), и Raspberry Pi будет иметь доступ в интернет.
  • USB-Ethernet адаптер: Подключите его к Raspberry Pi и к компьютеру с Windows 10 через Ethernet-кабель. Этот интерфейс будет использоваться для прямого соединения между Raspberry Pi и Windows 10.

Настройка Raspberry Pi
  • Подключитесь к Raspberry Pi через SSH
  • Проверьте, что оба сетевых интерфейса активны. Выполните команду:
ip a
или
ip address
Вы увидите два интерфейса:

  • eth0 (основной Ethernet-порт, подключенный к роутеру).
  • eth1 (USB-Ethernet адаптер, подключенный к Windows 10).

Настройка статического IP для eth1 (USB-Ethernet адаптер):
sudo nano /etc/dhcpcd.conf
Добавьте в конец файла следующие строки:
# Основной интерфейс (роутер)
interface eth0
# Используйте DHCP для получения IP от роутера
# (или укажите статический IP, если нужно)

# Второй интерфейс (USB-Ethernet адаптер)
interface eth1
static ip_address=192.168.2.1/24
Сохраните изменения (Ctrl+O, затем Enter) и выйдите из редактора (Ctrl+X).


Включение IP-форвардинга
sudo nano /etc/sysctl.conf
Найдите строку #net.ipv4.ip_forward=1 и раскомментируйте её (уберите #):
net.ipv4.ip_forward=1
  • Сохраните изменения (Ctrl+O, затем Enter) и выйдите из редактора (Ctrl+X).
  • Сохраните изменения и примените настройки:
sudo sysctl -p

Настройка NAT (для доступа Windows в интернет):
Выполните следующие команды, чтобы настроить NAT на Raspberry Pi:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Чтобы сохранить правила iptables после перезагрузки, установите пакет iptables-persistent:
sudo apt install iptables-persistent
Во время установки сохраните текущие правила.

Если проблема и нет
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP gr oup default qlen 1000 link/ether 9c:eb:e8:1a:be:be brd ff:ff:ff:ff:ff:ff inet6 fe80::1d97:861a:7b46:73fb/64 scope link noprefixroute valid_lft forever preferred_lft forever
видно, что интерфейс eth1 (USB-Ethernet адаптер) не имеет IPv4-адреса, только IPv6 (inet6). Это может быть причиной того, что соединение между Raspberry Pi и Windows не работает.
Проверка интерфейса eth1
sudo ip link set eth1 up
Проверьте статус интерфейса:
ip link show eth1
Если интерфейс не активен, попробуйте переподключить USB-Ethernet адаптер.

Проверка службы dhcpcd
Убедитесь, что служба dhcpcd запущена и применяет настройки:
sudo systemctl status dhcpcd
Unit dhcpcd.service could not be found.
Ошибка Unit dhcpcd.service could not be found указывает на то, что служба dhcpcd не установлена или не настроена на вашем Raspberry Pi. Это может быть связано с тем, что в вашей системе используется другой сетевой менеджер (например, systemd-networkd или NetworkManager).

Проверка текущего сетевого менеджера
Проверьте, какой сетевой менеджер используется:
sudo systemctl list-unit-files | grep -E "network|dhcp"
Если вы видите systemd-networkd или NetworkManager, значит, они используются вместо dhcpcd.
networking.service enabled enabled
systemd-network-generator.service disabled enabled
systemd-networkd-wait-online.service disabled disabled
systemd-networkd-wait-online@.service disabled enabled
systemd-networkd.service disabled enabled
systemd-networkd.socket disabled enabled
network-online.target static -
network-pre.target static -
network.target static -
служба systemd-networkd установлена, но отключена.
Проверка текущего сетевого менеджера
sudo systemctl status networking
Если служба networking активна, значит, сеть управляется через /etc/network/interfaces.
Настройка через /etc/network/interfaces
Если networking активен, выполните следующие шаги:
sudo nano /etc/network/interfaces
Добавьте следующие строки для интерфейса eth1:
auto eth1
iface eth1 inet static
    address 192.168.2.1
    netmask 255.255.255.0
Сохраните файл (Ctrl+O, затем Enter) и выйдите из редактора (Ctrl+X).

Перезапуск сети:
sudo systemctl restart networking
Проверьте статус:
sudo systemctl status networking
Проверка IP-адреса:
ip address show eth1

Настройка через dhcpcd
Если dhcpcd используется (но служба не найдена), возможно, он просто не установлен. Установите его:

Установка dhcpcd:
sudo apt update
sudo apt install dhcpcd5
Включите и запустите службу:
sudo systemctl enable dhcpcd
sudo systemctl start dhcpcd
Настройка статического IP для eth1:
sudo nano /etc/dhcpcd.conf
interface eth1
static ip_address=192.168.2.1/24
Сохраните файл и перезагрузите Raspberry Pi:
sudo reboot

Настройка через systemd-networkd
Если systemd-networkd активен, выполните следующие шаги:
Создание конфигурации для eth1:
Создайте файл конфигурации для интерфейса eth1:
sudo nano /etc/systemd/network/10-eth1.network
Добавьте следующие строки:
[Match]
Name=eth1

[Network]
Address=192.168.2.1/24
Сохраните файл (Ctrl+O, затем Enter) и выйдите из редактора (Ctrl+X).

Перезапуск systemd-networkd:
sudo systemctl restart systemd-networkd
Проверьте статус:
sudo systemctl status systemd-networkd
Проверка IP-адреса:
ip address show eth1
Вы должны увидеть IPv4-адрес 192.168.2.1.

Настройка через NetworkManager
Если NetworkManager активен, выполните следующие шаги:
Установка NetworkManager (если не установлен):
Установите NetworkManager, если он отсутствует:
sudo apt update
sudo apt install network-manager
Настройка статического IP для eth1:
sudo nmtui
  • Выберите "Edit a connection" → "Add" → "Ethernet".
  • Укажите имя интерфейса (eth1) и настройте статический IP:
  • IPv4: 192.168.2.1/24
  • Шлюз: оставьте пустым.
  • DNS: 8.8.8.8.
  • Сохраните настройки и выйдите из nmtui.

Перезапуск NetworkManager:
sudo systemctl restart NetworkManager
Проверка IP-адреса:
ip address show eth1

Настройка Windows

  • На Windows настройте статический IP:
  • IP-адрес: 192.168.2.2
  • Маска подсети: 255.255.255.0
  • Шлюз: 192.168.2.1


Вариант 2

eth0 + wlan0

  • Добавить Wi-Fi (wlan0) как резервный интерфейс для доступа в интернет на Raspberry Pi.
  • Если eth0 отключён, Raspberry Pi должен автоматически переключаться на wlan0.
  • Windows должен продолжать использовать интернет через Raspberry Pi, независимо от того, какой интерфейс (eth0 или wlan0) активен
Настройка Wi-Fi на Raspberry Pi
Проверьте, что интерфейс wlan0 активен:
ip address show wlan0
Настройка метрики маршрутов
Метрика маршрутов определяет приоритет интерфейсов. Интерфейс с меньшей метрикой имеет более высокий приоритет.
Настройка метрики для eth0:
sudo nano /etc/network/interfaces.d/eth0
Добавьте строку metric:
auto eth0
iface eth0 inet dhcp
    metric 100
Здесь metric 100 означает, что eth0 будет иметь более высокий приоритет, чем wlan0
Настройка метрики для wlan0:
sudo nano /etc/network/interfaces.d/wlan0
Добавьте строку metric:
auto wlan0
iface wlan0 inet dhcp
    metric 200
Здесь metric 200 означает, что wlan0 будет использоваться, если eth0 недоступен
Перезапуск сети:
sudo systemctl restart networking

Проверка маршрутов
ip route
Вы должны увидеть что-то вроде:
default via 10.20.1.55 dev eth0 metric 100
default via 10.20.1.120 dev wlan0 metric 200
Это означает, что eth0 имеет более высокий приоритет.

Настройка NAT для обоих интерфейсов

Настройка NAT для eth0:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Настройка NAT для wlan0:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Сохранение правил iptables:
Установите пакет iptables-persistent:
sudo apt install iptables-persistent
Сохраните текущие правила:
sudo netfilter-persistent save

Итог
Raspberry Pi:
  • Использует eth0 как основной интерфейс для доступа в интернет.
  • Автоматически переключается на wlan0, если eth0 отключён.
  • Маршрутизирует трафик между интерфейсами.
Windows 10:
  • Подключён к Raspberry Pi через eth1 (IP: 192.168.2.2).
  • Получает доступ в интернет через Raspberry Pi, независимо от того, какой интерфейс используется.

Нет подключения
eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:e0:4c:68:05:31 brd ff:ff:ff:ff:ff:ff
Проблема в том, что интерфейс eth1 находится в состоянии DOWN (выключен).
Включение интерфейса eth1
sudo ip link set eth1 up
sudo ip addr add 192.168.2.1/24 dev eth1
Проверка состояния
ip link show eth1
Должно появиться state UP
Постоянная настройка
sudo nano /etc/network/interfaces.d/eth1
  1. Добавьте содержимое:
auto eth1
iface eth1 inet static
    address 192.168.2.1
    netmask 255.255.255.0
Сохраните изменения (Ctrl+O, затем Enter) и выйдите из редактора (Ctrl+X).
Перезапустите сеть:
sudo systemctl restart networking

Проверка ошибки
journalctl -xeu networking.service
Посмотрите последние строки - там будет указана конкретная причина ошибки.
Временное решение (ручное включение)
sudo ip link set eth1 up
sudo ip addr add 192.168.2.1/24 dev eth1


Альтернативные способы настройки

Вариант A: Через dhcpcd
sudo nano /etc/dhcpcd.conf
Добавьте в конец:
interface eth1
static ip_address=192.168.2.1/24
Перезапустите:
sudo systemctl restart dhcpcd

Вариант B: Через NetworkManager
sudo nmcli con add type ethernet ifname eth1 ip4 192.168.2.1/24
sudo nmcli con up eth1
Проверка работы
ip addr show eth1
ping 192.168.2.2

Если проблема сохраняется
Проверьте имя интерфейса - возможно, оно изменилось:
ip link
Убедитесь, что нет конфликтов в:
/etc/network/interfaces
/etc/network/interfaces.d/*

Полное отключение networking
sudo systemctl disable networking
sudo systemctl stop networking
И используйте только dhcpcd.


Проверить список всех сетевых интерфейсов:

ip link
ls /sys/class/net
Ищите похожие имена: enx..., usb0, eth1, enp0s...
Проверить подключённые USB-устройства:
lsusb
Найдите в списке ваш Ethernet-адаптер
Проверить системные сообщения:
dmesg | grep -i ethernet
journalctl -b | grep -i eth
Если адаптер не определяется:

  1. Переподключите USB-адаптер
  2. Попробуйте другой USB-порт
  3. Проверьте другой кабель Ethernet
  4. Попробуйте адаптер на другом компьютере

Если адаптер виден, но под другим именем:
Создайте файл конфигурации для нового имени интерфейса (например, enx00e04c680531):
sudo nano /etc/network/interfaces.d/enx00e04c680531
С содержимым:
auto enx00e04c680531
iface enx00e04c680531 inet static
    address 192.168.2.1
    netmask 255.255.255.0

Альтернативное решение (если интерфейс не появляется):
Обновите систему:
sudo apt update && sudo apt upgrade
│ Newer kernel available │
│ │
│ The currently running kernel version is 6.6.51+rpt-rpi-v8 which is not the expected kernel │
│ version 6.6.74+rpt-rpi-v8. │
│ │
│ Restarting the system to load the new kernel will not be handled automatically, so you │
│ should consider rebooting.
Обнаружено, что у вас устаревшая версия ядра (6.6.51), тогда как доступна новая (6.6.74). Это может быть причиной проблем с определением сетевого интерфейса eth1. Давайте решим проблему комплексно:
Обновление системы и ядра
sudo apt update
sudo apt full-upgrade -y
sudo reboot
После перезагрузки проверьте версию ядра:
uname -a
Проверка интерфейсов после обновления
ip link
Теперь должны отображаться все сетевые интерфейсы, включая ваш USB-Ethernet адаптер (может называться eth1, enx... или usb0).
Если интерфейс по-прежнему не отображается
Для USB-Ethernet адаптеров:
Определите модель адаптера:
lsusb
Установите соответствующие драйверы:
# Для адаптеров Realtek
sudo apt install r8152-dkms

# Для адаптеров ASIX
sudo apt install ax88179_178a-dkms

Если драйверы не помогают, попробуйте вручную загрузить модуль ядра:
sudo modprobe cdc_ether
sudo modprobe r8152
sudo modprobe asix
После появления интерфейса создайте конфигурационный файл:
sudo nano /etc/network/interfaces.d/eth1
auto eth1
iface eth1 inet static
    address 192.168.2.1
    netmask 255.255.255.0
Перезапуск сетевых служб
sudo systemctl restart networking
Перезагрузите систему

Проверка
ip addr show eth1
ping 192.168.2.2


Проверьте после перезагрузки:
ip link
Попробуйте другой USB-Ethernet адаптер (желательно с чипами ASIX или Realtek).

Проверка USB-адаптера

Убедитесь, что система видит ваш USB-Ethernet адаптер:
lsusb -tv
~ lsusb -tv
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
ID 1d6b:0003 Linux Foundation 3.0 root hub
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
ID 0bda:8151 Realtek Semiconductor Corp. RTL8151 Adapteon Business Mobile Networks BV
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
ID 2109:3431 VIA Labs, Inc. Hub
USB-Ethernet адаптер (Realtek RTL8151) подключен, но система его не распознала как eth1
Установка драйверов для Realtek RTL8151
sudo apt update
sudo apt install r8152-dkms
sudo modprobe r8152
Проверка появившегося интерфейса
ip -c link show
Теперь должен появиться новый интерфейс (обычно enx... с MAC-адресом адаптера)
Постоянное переименование в eth1
sudo nano /etc/udev/rules.d/10-rename-network.rules
Добавьте (подставив MAC-адрес из вывода ip link):
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:05:31", NAME="eth1"
Настройка статического IP для eth1
sudo nano /etc/network/interfaces.d/eth1
auto eth1
iface eth1 inet static
    address 192.168.2.1
    netmask 255.255.255.0
Применение изменений
sudo udevadm control --reload-rules
sudo systemctl restart networking
➜ ~ sudo apt update
sudo apt install r8152-dkms
sudo modprobe r8152
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Get:4 https://download.docker.com/linux/debian bookworm InRelease [43.3 kB]
Hit:5 http://archive.raspberrypi.com/debian bookworm InRelease
Fetched 43.3 kB in 2s (26.6 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package r8152-dkms
Похоже, пакет r8152-dkms недоступен в стандартных репозиториях Debian Bookworm. Давайте решим проблему с драйвером для вашего Realtek RTL8151 адаптера альтернативными способами:
Установка драйвера из исходников
sudo apt update
sudo apt install -y dkms git build-essential
git clone https://github.com/awilliam/realtek-r8152.git
cd realtek-r8152
sudo make dkms-install
Проверка загрузки модуля
sudo modprobe r8152
lsmod | grep r8152
Проверка появившегося интерфейса
ip -c link show