Вопрос или проблема
У меня есть не очень новый компьютер, на который я установил Ubuntu 24.04 LTS. У него нет WiFi-соединения, и у меня нет проводного интернет-соединения. Поэтому я хотел бы предоставить ему доступ в интернет через Raspberry Pi, который может подключаться к точке доступа WiFi. Я подключу ПК к Raspberry с помощью Ethernet.
На Raspberry установлен Raspberry Pi OS Bookworm, и он получает IP-адрес динамически на интерфейсе wlan0
. Вместо этого на его Ethernet- интерфейсе eth0
я установил статический IP 172.16.10.105
и маску подсети 255.255.255.0
.
С другой стороны, Ethernet-интерфейс enp4s0
на старом ПК настроен со статическим IP 172.16.10.104
, маской подсети 255.255.255.0
и шлюзом 172.16.10.105
(это IP интерфейса eth0
Raspberry). Интерфейс eth0
Raspberry и enp4s0
ПК с Ubuntu соединены с помощью Ethernet-кабеля.
Чтобы реализовать мост для совместного использования доступа в интернет, на Raspberry я включил пересылку IP, убрав комментарий у строки
net.ipv4.ip_forward=1
в файле /etc/sysctl.conf
, и я использовал parprouted
следующим образом:
sudo parprouted -d eth0 wlan0
Чтобы отслеживать, что происходит на интерфейсе eth0
Raspberry, я запустил:
sudo tcpdump --interface eth0
Ping со старого ПК до Raspberry работает нормально, но когда я пытаюсь выйти в интернет со старого ПК (например, с помощью curl https://stackoverflow.com
), это не удается, и как tcpdump
, так и parprouted
кажутся указывающими на то, что Raspberry ничего не получил. Вот вывод обоих tcpdump
и parprouted
(я просто заменил несколько IP и MAC-адресов для предосторожности):
Они записали активность из-за ping, но ничего не записали, когда я запустил команду curl. Что я упустил? Большое спасибо.
Ответ или решение
Вопрос о Proxy ARP между Ubuntu и Raspberry Pi: Решение проблемы с интернет-доступом
Ваше стремление обеспечить старый ПК под управлением Ubuntu 24.04 LTS доступом в Интернет через Raspberry Pi – это вполне возможная задача. Давайте подробно рассмотрим конфигурацию и возможные ошибки, которые могут препятствовать полноценному функционированию вашего сетевого моста.
1. Основные настройки сети
Как вы описали, Raspberry Pi подключается к Wi-Fi сети через интерфейс wlan0
, получает динамический IP-адрес и обеспечивает соединение через Ethernet интерфейс eth0
, используя статический IP-адрес 172.16.10.105
с маской подсети 255.255.255.0
. На старом ПК с Ubuntu интерфейс enp4s0
настроен с IP-адресом 172.16.10.104
и тем же диапазоном подсети.
2. Включение IP-ретрансляции
Вы правильно включили IP-ретрансляцию, изменив параметр в файле /etc/sysctl.conf
. Это необходимый шаг для маршрутизации трафика с одного интерфейса Raspberry Pi к другому.
3. Настройка Proxy ARP с использованием parprouted
Использование parprouted
– это уместный подход для реализации Proxy ARP, однако необходимо учитывать несколько моментов:
- Убедитесь, что
parprouted
запущен без ошибок и корректно настроен наeth0
иwlan0
. - По умолчанию
parprouted
ожидает ARP-запросы на интерфейсе, для которого он был запущен. Если чередуется DHCP или если ARP-запросы приходят в неправильном виде, это может стать причиной их потери.
4. Диагностика проблем с сетью
С учетом предоставленных вами информации о статусе соединений, выполните следующие шаги для диагностики:
- Проверка ARP-таблицы: На старом ПК выполните команду
arp -n
для проверки, правильно ли отображаются IP-адреса и MAC-адреса в таблице ARP. Если адреса не совпадают, это означает, что ARP-запросы не обрабатываются корректно. - Сетевой трафик: Используйте команду
tcpdump
на обеих машинах для захвата пакетов. На Raspberry Pi запуститеsudo tcpdump -i wlan0 icmp
и на старом ПКsudo tcpdump -i enp4s0
. Проследите, появляются ли пакеты ICMP или другой трафик.
5. Настройки маршрутизации на старом ПК
Проверьте настройки маршрутизации на старом ПК с помощью команды ip route
. Убедитесь, что маршрут по умолчанию направлен на IP-адрес Raspberry Pi:
default via 172.16.10.105 dev enp4s0
Если маршрут неправильно настроен, добавьте его с помощью:
sudo ip route add default via 172.16.10.105
6. Обходные решения
- Firewall: Проверьте настройки брандмауэра на Raspberry Pi. Возможно, он блокирует трафик от интерфейса
eth0
кwlan0
. Если активенiptables
, попробуйте временно его отключить для теста:
sudo iptables -F
- DNS: Если
curl
не может установить соединение, проверьте, корректно ли настроены DNS-серверы на старом ПК. Добавьте временно публичный DNS, например, Google DNS:
sudo nano /etc/resolv.conf
Добавьте строку:
nameserver 8.8.8.8
Заключение
Если wszystkie вышеперечисленные шаги выполнены, и проблема с доступом в Интернет сохраняется, возможно, стоит рассмотреть различные альтернативные методы подключения и пересмотреть настройки parprouted
. Данная процедура поможет вам избежать распространенных ошибок и добраться до корректного соединения. Если необходимо, рассматривайте привлечение дополнительных инструментов для мониторинга сетевого трафика.