• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

设置不标准子网的问题

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网
大家好,

    在HP-UX 1.1中设置ip地址和子网掩码时, 产生了错误.
    使用的命令为: ifconfig lan0 218.1.131.8 netmask 255.255.255.240
    
    但是系统提示: "ifconfig: ioctl (SIOCSIFNETMASK ): bad value" 错误.

    但是如果设置为255.255.255.0这样的标准C类地址的话就能成功, 请高手指教何处出现问题. 

谢谢

[color=red:9f213a3e45]加入精华,将原标题“设置ip地址的问题”改为新的标题
--William[/color:9f213a3e45]

 williamCU 回复于:2004-03-02 15:04:09
8=    00001000
240=11110000
2项 and 的结果为 全0
你看这样能行吗?

 3ground 回复于:2004-03-02 15:25:20
子网掩码不是这样算的吧?
应该是先取反再AND才对。

 l1388 回复于:2004-03-03 10:19:48
ip地址错误,应该是218.1.131.9 netmask 255.255.255.240

 williamCU 回复于:2004-03-03 10:36:05
sorry,我说错了,不是and。计算结果后四位是1000,应该可以的。
ndd -get /dev/ip ip_check_subnet_addr结果如何?
如果结果是1的话,必须改为0,才可以使用这种ip地址。
方法:
ndd -set /dev/ip ip_check_subnet_addr 0

如果要永久有效,必须将该参数的设置放在/etc/rc.config.d/nddconf中。
具体可参考nddconf文件中的注释。

 中国军刀 回复于:2004-03-03 13:24:16
各位,我觉得地址是没有错误的,以掩码240结尾可以将C类子网划分为16个子网,每个子网包括16个地址,除去一个网络地址,除去一个广播地址,还应当有14个地址可用。从0开始分别为0-15,16-31......,这样看来该地址应当是没有任何问题的。
至于为什么会产生地址错误,我个人看是因为3ground兄使用的版本不支持可变长掩码导致的。升级版本应当可以解决。

 williamCU 回复于:2004-03-03 13:40:16
用和楼主同样的ip和netmask做过试验了。
问题就出现在ip_check_subnet_addr 的设置上。

 tc 回复于:2004-03-03 18:36:52
:?:

 li_haigang 回复于:2004-03-03 23:25:31
可我们这里的机器设置的ip地址是*.*.*.88     255.255.255.240而且我是用ndd -get /dev/ip ip_check_subnet_addr的结果仍为1,这是怎么回事呢?

 tc 回复于:2004-03-04 09:07:34
IP错误了~

 williamCU 回复于:2004-03-04 13:00:33
[quote:5bad5dd78e="li_haigang"]可我们这里的机器设置的ip地址是*.*.*.88     255.255.255.240而且我是用ndd -get /dev/ip ip_check_subnet_addr的结果仍为1,这是怎么回事呢?[/quote:5bad5dd78e]

判断子网是否非标准,不仅要看子网掩码,也要看ip地址的网络部分。


TCP/IP有一套标准,什么样的子网是否标准,有一套算法。不是简单的看掩码就行的。

 tc 回复于:2004-03-04 13:23:45
楼主,你说得情况偶算了一下,如果你使用255.255.255.240作为子网掩码,那么子网ID占用4个为,网络ID占用4个ID,并且,子网0000,1111是不可用的,子网中0000,1111也是不可用的。
218.1.131中的8是在第一个不可用的子网中,所以设置的时候会出现错误。

 3ground 回复于:2004-03-04 15:24:26
先多谢各位的鼎力相助。这个问题已经解决了,是老外解决的。但是具体的解决过程老外不肯说。:(

老外对我们的解释与楼上tc兄所说的一样,好像有个RFC协议描述了这种特殊情况(可能是RFC500,但也可能不是这个RFC)。

再次对大家的热情帮助表示感谢!

 3ground 回复于:2004-03-04 15:28:53
哦,忘了说了,最后使用的ip地址和子网掩码都没有改变,只是老外改变了HP-UX中的某个设置。唉,可惜他不肯说。

 williamCU 回复于:2004-03-04 15:36:31
看来你只相信老外。。。
可惜老外并不相信你,因为他不肯告诉你答案。。

你可以做个试验:

第一步,
先ndd   -set   /dev/ip   ip_check_subnet_addr 1
然后ifconfig lan0 218.1.131.8 netmask 255.255.255.240 up
不出所料的话,系统一定会提示: "ifconfig: ioctl (SIOCSIFNETMASK ): bad value" 错误. 

第二步
ndd   -set   /dev/ip   ip_check_subnet_addr 0


第三步
再次运行:ifconfig lan0 218.1.131.8 netmask 255.255.255.240 up

结果一定是OK

 williamCU 回复于:2004-03-04 16:21:05
我的主机上只有 一块网卡,由于我是远程上去的,为了不影响现有的主机。
我采用了在一块网卡上绑2个IP地址的方法来做试验:

a2:/#ndd -get /dev/ip ip_check_subnet_addr              
1
a2:/#ifconfig lan1:1 218.1.131.8 netmask 255.255.255.240
ifconfig: ioctl (SIOCSIFNETMASK): bad value
a2:/#ndd -set /dev/ip ip_check_subnet_addr 0            
a2:/#ndd -get /dev/ip ip_check_subnet_addr              
0
a2:/#ifconfig lan1:1 218.1.131.8 netmask 255.255.255.240
a2:/#netstat -in
Name           Mtu Network            Address                 Ipkts      Opkts
lan1:1        1500 218.1.131.0        218.1.131.8               148          4
lan1          1500 15.30.104.0        15.30.104.42          1327650     157405
lo0           4136 127.0.0.0          127.0.0.1              187364     187364
a2:/#ping 218.1.131.0
PING 218.1.131.0: 64 byte packets
64 bytes from 218.1.131.8: icmp_seq=0. time=1. ms
64 bytes from 218.1.131.8: icmp_seq=1. time=0. ms

----218.1.131.0 PING Statistics----
2 packets transmitted, 2 packets received, 0% packet loss
round-trip (ms)  min/avg/max = 0/0/1
a2:/#

 3ground 回复于:2004-03-04 16:39:34
我是相信williamCU的, 不过在你告诉我那个方法以前老外已经解决了。而且那是个现场问题,现场人员不愿意再做试验了。

再次对williamCU的无私帮助表示感谢。

 nebula2000 回复于:2004-03-04 17:09:57
williamCU   说的很有道理.
确实是 ip_check_subnet_addr 在起作用.

 tc 回复于:2004-03-05 10:14:13
那些老外以为这是什么东东,晕,还保密~

 wang3 回复于:2004-03-05 11:15:14
用不着这样保密吗?老外难道就NB

 li_haigang 回复于:2004-03-05 13:28:44
[quote:74f60f4613="williamCU"]

TCP/IP有一套标准,什么样的子网是否标准,?.........[/quote:74f60f4613]

能否简单的介绍一下呢?

 williamCU 回复于:2004-03-05 14:11:40
如果你真的有兴趣的话,你可以看一下RFC的文档。
http://www.rfc.net
看一下RFC1878 和RFC1122的定义
这2个RFC文档对IP子网有不同的定义。
HP的参数设置不同的值,对应不同的RFC协议标准。

 li_haigang 回复于:2004-03-05 14:22:02
williamCU,
3Q!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网