Вопрос или проблема
У меня есть не совсем новый ПК, на который я установил Ubuntu 24.04 LTS. У него нет WiFi-соединения, и у меня нет проводного интернет-соединения. Поэтому я хотел бы предоставить ему доступ в интернет с помощью проводного Ethernet-соединения с Raspberry Pi, который подключается к WiFi-точке доступа. На 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). Чтобы реализовать мост, я включаю пересылку IP, раскомментировав строку
net.ipv4.ip_forward=1
в файле /etc/sysctl.conf, и я использовал parprouted следующим образом:
sudo parprouted -d eth0 wlan0
Чтобы контролировать, что происходит на интерфейсе eth0 Raspberry, я запустил
sudo tcpdump --interface eth0
Пинг с старого ПК на Raspberry проходит нормально, но когда я пытаюсь получить доступ в интернет с старого ПК (например, с помощью curl https://stackoverflow.com
), это не срабатывает, и как tcpdump, так и parprouted, похоже, указывают на то, что Raspberry не получил ничего. Вот вывод как tcpdump, так и parprouted (я просто заменил несколько IP и MAC-адресов для предосторожности):
Они зафиксировали активность из-за пинга, но ничего не записали, когда я запустил команду curl. Что я упустил? Большое спасибо.
Ответ или решение
Proxy ARP между Ubuntu и Raspberry Pi: Подробное руководство
Введение
С созданием локальных сетей и доступом в интернет посредством различных устройств, настройки подключения могут быть не всегда тривиальны. В вашем случае вы хотите воспользоваться Raspberry Pi, чтобы предоставить интернет-соединение вашему старому ПК под управлением Ubuntu 24.04 LTS. Давайте разберем, как правильно настроить Proxy ARP для этой конфигурации, а также выявим и устраним возможные ошибки.
Конфигурация сетевых интерфейсов
Для начала убедитесь, что у вас правильно настроены IP-адреса и маски подсети:
-
Raspberry Pi:
eth0
: 172.16.10.105 (статический IP), маска 255.255.255.0wlan0
: динамический IP (полученный через DHCP от WiFi)
-
Старый ПК (Ubuntu):
enp4s0
: 172.16.10.104 (статический IP), маска 255.255.255.0, шлюз 172.16.10.105
Включение IP forwarding
Вы уже правильно включили IP forwarding, изменив файл /etc/sysctl.conf
. Убедитесь, что после внесения изменения вы применили его:
sudo sysctl -p
Установка и запуск parprouted
Вы правильно используете parprouted
для настройки Proxy ARP. Однако его работа зависит от правильной конфигурации сетевых интерфейсов. Если parprouted
запущен без ошибок, убедитесь, что он настроен на правильные интерфейсы:
sudo parprouted -d eth0 wlan0
Проверка работы tcpdump
Вы использовали команду sudo tcpdump --interface eth0
, чтобы отследить пакеты. Обратите внимание, что вы должны также следить за трафиком на интерфейсе wlan0
. Это поможет вам понять, действительно ли пакеты пересылаются между интерфейсами:
sudo tcpdump --interface wlan0
Анализируя выводы, вы должны увидеть, как ваш старый ПК делает запросы, а Raspberry Pi передает их через wlan0
.
Проблемы с маршрутизацией и NAT
Если вы не видите траффика на wlan0
, возможно, проблема заключается в маршрутизации. Убедитесь, что IP-адреса правильно маршрутизируются:
- Проверьте, настроены ли правила iptables для NAT:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
- Убедитесь также, что ваш DHCP-клиент на Raspberry Pi правильно настроен и получает IP-адрес через
wlan0
.
Тестирование подключения
После всех настроек попробуйте повторно выполнить команду curl
с вашего старого ПК:
curl -I https://stackoverflow.com
Если все настроено верно, вы должны увидеть статус ответа HTTP, что указывает на успешное подключение к интернету.
Заключение
Настройка Proxy ARP между Ubuntu и Raspberry Pi может показаться сложной, но при правильной последовательности шагов она становится вполне управляемой задачей. Следуйте рекомендованным шагам, проверяйте настройки, и в случае проблем используй трафик для диагностики. Если у вас останутся вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться за поддержкой.