Подключение оборудования
- Основной 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 dhcpcdUnit 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:
Установка dhcpcd:
sudo apt update
sudo apt install dhcpcd5Включите и запустите службу:
sudo systemctl enable dhcpcd
sudo systemctl start dhcpcdНастройка статического IP для eth1:
sudo nano /etc/dhcpcd.confinterface 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
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 отключён.
- Маршрутизирует трафик между интерфейсами.
- Подключён к 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- Добавьте содержимое:
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 linkls /sys/class/netИщите похожие имена: enx..., usb0, eth1, enp0s...
Проверить подключённые USB-устройства:
lsusbНайдите в списке ваш Ethernet-адаптер
Проверить системные сообщения:
dmesg | grep -i ethernetjournalctl -b | grep -i ethЕсли адаптер не определяется:
- Переподключите USB-адаптер
- Попробуйте другой USB-порт
- Проверьте другой кабель Ethernet
- Попробуйте адаптер на другом компьютере
Если адаптер виден, но под другим именем:
Создайте файл конфигурации для нового имени интерфейса (например, 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/eth1auto 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 адаптер:
Убедитесь, что система видит ваш 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/eth1auto 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