| 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! |