Прокси ARP между Ubuntu и Raspberry

Вопрос или проблема

У меня есть не очень новый компьютер, на который я установил 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. Данная процедура поможет вам избежать распространенных ошибок и добраться до корректного соединения. Если необходимо, рассматривайте привлечение дополнительных инструментов для мониторинга сетевого трафика.

Оцените материал
Добавить комментарий

Капча загружается...