调用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有问题呢?
...全文
91 点赞 收藏 9
写回复
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。
回复
发动态
发帖子
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
社区公告
暂无公告