大家好,
在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/