LwIP 无主机路由

LwIP No Route To Host

设置: Linux host 运行 LwiP 测试示例代码的一个稍微修改的版本。 PPPoS 转 uBlux W132 Wifi 模块 Wifi 模块连接到具有互联网访问权限的家庭网络

问题: 我无法打开到 echo.u-blox.com 的 TCP 套接字。错误总是 "No Route To Host"。我认为问题是我对网络的理解有限!我相信 LwIP、PPP 和我的模块工作正常,但我不知道如何向外界打开套接字!也有可能我没有为网关正确配置 LwIP,尽管 PPP 的 IP 地址和网关是通过 PPP 自动配置的。 WiFi模块本身可以配置的很少。

更多信息:网络拓扑如下所示。我可以从我家庭网络上的其他 PC ping 192.168.1.121,但只有在 LwIP 代码为 运行 时(显示 LwIP 正在处理 ping)。我可以打开一个从 LwIP 到 172.30.0.251:23 的 UDP 套接字到 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 地址不匹配。我不确定如何打开满足这些条件但指定了正确目标地址的套接字。

在此先感谢,如果需要,我可以提供更多信息。

我似乎已经解决了我自己的问题。我需要手动将我的 PPP 接口设置为默认网络接口。我不太明白为什么,但会研究代码找出答案!

提示来自标题为 "further netif management" 的部分中的 this page