【问题标题】:Socket 'No route to host' error套接字“没有到主机的路由”错误
【发布时间】:2010-09-20 14:07:37
【问题描述】:

我有一个位于限制性防火墙后面的连接,它只允许通过代理 (10.10.1.100:9401) 进行 HTTP(S) 访问。我得到的 IP 地址是动态的,子网掩码是 255.255.255.255(我知道,很奇怪!)。

我尝试编写一个简单的 Python 套接字程序来连接代理以发送一些 HTTP 请求:

import socket

s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
s.connect(( "10.10.1.100", 9401 ))
s.send("GET /index.html HTTP/1.1\r\nHost: aorotos.com\r\n\r\n")
d = s.recv(1024)
print d
s.close()

连接期间出现异常(113,“No route to host”)。现在这是奇怪的部分——我可以使用这些相同的代理设置浏览网络,如果通过netstat -tna 检查当前连接的套接字,我会看到到 10.10.1.100:9401 的活动连接。

我尝试了一个简单的命令,例如export http_proxy='10.10.1.100:9401' && wget aorotos.com/index.html,但它仍然有效!如果我在 wget 中启用调试选项 (-d),我什至可以获得套接字的文件描述符。

我浏览了 wget 源代码,从我所见,它也使用了普通的连接语句,并且没有设置任何特殊的套接字选项(我稍后会更彻底地浏览它)。我在 C 中尝试过相同的代码,但它也失败了。

route提供的路由表是

Destination Gateway     Genmask     Flags   Metric Ref  Use Iface
default      *          0.0.0.0       U     0      0     0  gprs0

有谁知道可能出了什么问题?

编辑:目前我的 IP 是 10.16.82.250。这就是route 输出中的全部内容。如果您有兴趣,我的外部 IP 是 203.8.8.2。

ifconfig gprs0-

gprs0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.17.221.94  P-t-P:10.17.221.94  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP  MTU:1400  Metric:1
          RX packets:1832 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1844 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:1878364 (1.7 MiB)  TX bytes:224746 (219.4 KiB)

编辑 2: 我开始安装 tcpdump 并阅读它的手册,最后安装了 wireshark (我在我的 N900 上)只是为了从数据包转储中意识到我一直在使用端口 4901 而不是 9401 在 C 程序和蟒蛇脚本!嗬!我责怪小屏幕,好吧,我自己。

有什么办法可以用“我是个白痴”之类的东西来结束这个问题吗? :P 很抱歉占用您的时间! (我已经花了一个多星期的时间。我不敢相信我浏览了大部分 wget 的源代码!)

【问题讨论】:

  • 路由输出有点可疑,是唯一的输出还是还有更多?同样——你能给出一个 gprs0 接口的有效 IP 地址示例吗?
  • 鉴于您使用 wireshark 发现了问题,这就是 doron 的回答所建议的,接受这个回答似乎是公平的。
  • aorotos.com 似乎没有退出,这可能是您的问题吗?
  • 当时确实存在。问题原来是我写的端口号不正确。

标签: python c sockets routing


【解决方案1】:

我不确定是什么问题,但请尝试使用Wireshark。这至少可以让您了解网络级别的情况。 Wireshark 数据包日志中应该有足够的信息来诊断您的问题。

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多