调用AddIPAddress后的路由问题

suisuibianbian 2008-12-26 10:58:03
内网网关是172.16.0.1,
一块网卡首先通过dhcp获取了IP地址172.16.0.40,
我在代码中调用AddIPAddress又添加了一个192.168.0.12的IP,

在XP下,可以通过网关连接外网,
但是在Vista下,有时候却不能连上外网,
在Vista上连不上的时候用wireshark抓包,发现源地址用的是192.168.0.12,而不是172.16.0.40.
在删除192.168.0.12后,就可以连上外网了。

为什么XP没问题,而Vista有问题呢?
...全文
149 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
suisuibianbian 2008-12-26
  • 打赏
  • 举报
回复
没错,就是这样的,网络环境跟一般的不一样,比较复杂
Wenxy1 2008-12-26
  • 打赏
  • 举报
回复
dhcp获取的IP是10.1.3.125,网关是193.0.5.200,
DHCP服务器配置错了吧,怎么网关的IP与DHCP地址不是同一个网段?
suisuibianbian 2008-12-26
  • 打赏
  • 举报
回复
不好意思,刚写错了一点,dhcp获取的网关是193.0.5.200
suisuibianbian 2008-12-26
  • 打赏
  • 举报
回复
实际情况比我上面说的复杂一些,dhcp获取的IP是10.1.3.125,网关是193.0.5.200,
我添加的静态IP是192.168.111.203,
下面是Vista用route print的信息,

使用中的路由:
網路目的地 網路遮罩 閘道 介面 公制
0.0.0.0 0.0.0.0 193.0.5.200 10.1.3.125 286
10.1.3.125 255.255.255.255 在連結上 10.1.3.125 286
127.0.0.0 255.0.0.0 在連結上 127.0.0.1 306
127.0.0.1 255.255.255.255 在連結上 127.0.0.1 306
127.255.255.255 255.255.255.255 在連結上 127.0.0.1 306
192.168.16.0 255.255.255.0 在連結上 192.168.16.1 276
192.168.16.1 255.255.255.255 在連結上 192.168.16.1 276
192.168.16.255 255.255.255.255 在連結上 192.168.16.1 276
192.168.85.0 255.255.255.0 在連結上 192.168.85.1 276
192.168.85.1 255.255.255.255 在連結上 192.168.85.1 276
192.168.85.255 255.255.255.255 在連結上 192.168.85.1 276
192.168.111.0 255.255.255.0 在連結上 10.1.3.125 286
192.168.111.203 255.255.255.255 在連結上 10.1.3.125 286
192.168.111.255 255.255.255.255 在連結上 10.1.3.125 286
224.0.0.0 240.0.0.0 在連結上 127.0.0.1 306
224.0.0.0 240.0.0.0 在連結上 192.168.16.1 276
224.0.0.0 240.0.0.0 在連結上 192.168.85.1 276
224.0.0.0 240.0.0.0 在連結上 10.1.3.125 286
255.255.255.255 255.255.255.255 在連結上 127.0.0.1 306
255.255.255.255 255.255.255.255 在連結上 192.168.16.1 276
255.255.255.255 255.255.255.255 在連結上 192.168.85.1 276
255.255.255.255 255.255.255.255 在連結上 10.1.3.125 286
oyljerry 2008-12-26
  • 打赏
  • 举报
回复
在vista上出问题的时候做了什么设置...
Wenxy1 2008-12-26
  • 打赏
  • 举报
回复
你分别把xp, vista中的路由表贴在这里,然后一起分析。
suisuibianbian 2008-12-26
  • 打赏
  • 举报
回复
我看过路由表了,问题是根本就没问题啊,
应该会是从172.16.0.40这个IP出去的,但是在Vista上有时候却有问题
Wenxy1 2008-12-26
  • 打赏
  • 举报
回复
建议楼主用 netstat -r 或 route print打印出路由表,
思考一下IP层的选路过程就明白了,

有本经典的书:《TCP/IP详解》卷一,里面详细讲解了IP层选路(由)的过程。
Wenxy1 2008-12-26
  • 打赏
  • 举报
回复
在Vista上,不能上外网的原因是,网络数包的源IP使用192.168.0.12,那么,外网的机器在应答192.168.0.12的IP包时,应答包就会进入到192.168.0.12所属的网段里,而不会进入172.16.0.40所属的网段,因为就会连不上外网了。

实际上,这种情况是网络包能出去,但网络包进不来。

在一个网卡上设置多个IP是危险的,特别是不同网段的IP。

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧