很多ISP都支持同时拨通两条ADSL的PPPoE连接。
1. 情况描述,假定拨通后两条连接后,路由表如下(请看红色部分):
==========================================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.2 8475
0.0.0.0 0.0.0.0 在链路上 124.90.129.124 4251
0.0.0.0 0.0.0.0 在链路上 124.90.129.127 26
124.90.129.124 255.255.255.255 在链路上 124.90.129.124 4506
124.90.129.127 255.255.255.255 在链路上 124.90.129.127 281
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 8756
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 8756
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 8756
192.168.1.0 255.255.255.0 在链路上 192.168.1.2 8731
192.168.1.2 255.255.255.255 在链路上 192.168.1.2 8731
192.168.1.255 255.255.255.255 在链路上 192.168.1.2 8731
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 8756
224.0.0.0 240.0.0.0 在链路上 192.168.1.2 8733
224.0.0.0 240.0.0.0 在链路上 124.90.129.124 4252
224.0.0.0 240.0.0.0 在链路上 124.90.129.127 26
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 8756
255.255.255.255 255.255.255.255 在链路上 192.168.1.2 8731
255.255.255.255 255.255.255.255 在链路上 124.90.129.124 4506
255.255.255.255 255.255.255.255 在链路上 124.90.129.127 281
==========================================================================
从表中可以看出,先拨通的124.90.129.124的跃点数为4251,而后拨通的124.90.129.127的跃点数为26,所以所有的数据流量都走了后面这条。
2. 假设有如下伪代码:
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(s, "124.90.129.124");
connect(s, "www.yonsm.net");
即,连接某个地址前,先绑定之前拨通的IP地址。此时,connect将返回-1,WSAGetLastError返回WSAENETUNREACH=10051=“Network is unreachable。为什么?
3. 在XP下,如果把两条链接的路由表的跃点数都修改为1,则上面的代码能正常连接。为什么?
4. 在VISTA下,无法使用API或者命令去修改跃点数(METRIC)为更小的值(即不能比原来更小),这是官方文档有说明的(MSDN可以查证:http://support.microsoft.com/kb/947216/en-us)。
请问,要怎么样才能在VISTA下使上面的伪代码能连接成功呢?(如果把两个路由项的METRIC都设置为更大的相同值,比如都改成9999,上面的代码也不能正常连接。已验证失败。)
有没有高手来解释一下?
1. 情况描述,假定拨通后两条连接后,路由表如下(请看红色部分):
==========================================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.2 8475
0.0.0.0 0.0.0.0 在链路上 124.90.129.124 4251
0.0.0.0 0.0.0.0 在链路上 124.90.129.127 26
124.90.129.124 255.255.255.255 在链路上 124.90.129.124 4506
124.90.129.127 255.255.255.255 在链路上 124.90.129.127 281
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 8756
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 8756
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 8756
192.168.1.0 255.255.255.0 在链路上 192.168.1.2 8731
192.168.1.2 255.255.255.255 在链路上 192.168.1.2 8731
192.168.1.255 255.255.255.255 在链路上 192.168.1.2 8731
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 8756
224.0.0.0 240.0.0.0 在链路上 192.168.1.2 8733
224.0.0.0 240.0.0.0 在链路上 124.90.129.124 4252
224.0.0.0 240.0.0.0 在链路上 124.90.129.127 26
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 8756
255.255.255.255 255.255.255.255 在链路上 192.168.1.2 8731
255.255.255.255 255.255.255.255 在链路上 124.90.129.124 4506
255.255.255.255 255.255.255.255 在链路上 124.90.129.127 281
==========================================================================
从表中可以看出,先拨通的124.90.129.124的跃点数为4251,而后拨通的124.90.129.127的跃点数为26,所以所有的数据流量都走了后面这条。
2. 假设有如下伪代码:
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(s, "124.90.129.124");
connect(s, "www.yonsm.net");
即,连接某个地址前,先绑定之前拨通的IP地址。此时,connect将返回-1,WSAGetLastError返回WSAENETUNREACH=10051=“Network is unreachable。为什么?
3. 在XP下,如果把两条链接的路由表的跃点数都修改为1,则上面的代码能正常连接。为什么?
4. 在VISTA下,无法使用API或者命令去修改跃点数(METRIC)为更小的值(即不能比原来更小),这是官方文档有说明的(MSDN可以查证:http://support.microsoft.com/kb/947216/en-us)。
请问,要怎么样才能在VISTA下使上面的伪代码能连接成功呢?(如果把两个路由项的METRIC都设置为更大的相同值,比如都改成9999,上面的代码也不能正常连接。已验证失败。)
有没有高手来解释一下?
Recuva 1.32.444
WM5/6 PPC 一键安装软


2009/11/28 23:02 | by 




方法A
http://i3.6.cn/cvbnm/a7/83/e4/e8fc41458bbb67d31d25195e1e870b50.jpg
如图设置你的pppoe拨号连接,连接成功后pppoe不会自动添加 default路由,有你自己添加二条即可.添加每个接口的default路由
route ADD 0.0.0.0 MASK 0.0.0.0 %1 METRIC 10 IF %2
route ADD 0.0.0.0 MASK 0.0.0.0 %1 METRIC 10 IF %2
%2指在接口列表的数字(route PRINT显示),%1指这个接口的网关ip(连接属性里有显示)
方法B:
pppoe连接使用默认属性,二条都拨号成功后先删除default路由再添加,添加方法同上.
所以一个目标一般就是给一个路由,给了一个低metric的估计也用不上
ROUTE ADD 222.32.0.0 MASK 255.255.0.0 192.168.88.1 METRIC 15
然后用路由表的形式(ip地址) 指定线路.