Настройка:
На хосте Linux работает слегка измененная версия кода тестового примера LwiP.
PPPoS к модулю Wi-Fi uBlux W132
Модуль Wi-Fi подключен к домашней сети с доступом в интернет
Проблема:
Я не могу открыть сокет TCP для echo.u-blox.com. Ошибка всегда «Нет маршрута к хосту» . Я думаю, что проблема заключается в моем ограниченном понимании сетей! Я считаю, что LwIP, PPP и мой модуль работают правильно, но я не знаю, как открыть сокет для внешнего мира! Также возможно, что я неправильно настроил LwIP для шлюза, хотя IP-адреса и шлюз для PPP автоматически настраиваются через PPP. На самом модуле WiFi можно настроить очень мало.
Дополнительная информация: топология сети показана ниже. Я могу пропинговать 192.168.1.121 с других компьютеров в моей домашней сети, но только во время работы кода LwIP (показывает, что LwIP обрабатывает эхо-запрос). Я могу открыть сокет UDP на 172.30.0.251:23 от LwIP до модуля WiFi и использовать его для отправки AT-команд для настройки модуля. Я могу вызвать lwip_gethostbyname ("echo.u-blox.com"), чтобы получить правильный IP-адрес (195.34.89.241), чтобы DNS работал.
Linux Host
Running LWiP W132 WiFi Module Home Network Destination
172.30.0.252 <-- PPPoS --> 172.30.0.251 <> 192.168.1.121 <-- WiFi --> 192.168.1.XXX <> ext ip <-- Internet --> 195.34.89.241
Netmask Netmask
255.255.255.255 255.255.255.0
Gateway Gateway
172.30.0.251 192.168.1.1
DNS
172.30.0.251
Когда я выполняю пошаговый просмотр кода LWiP, он завершается неудачно при вызове ip_route, поскольку целевой IP-адрес не соответствует подсети и маске или IP-адресу шлюза. Я не уверен, как открыть сокет, который соответствует этим критериям, но также указан правильный адрес назначения.
Заранее спасибо, могу предоставить дополнительную информацию, если потребуется.