インタフェースファイルは次のとおりです。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.130
netmask 250.255.255.0
gateway 192.168.0.254
ご覧のとおり、ネットマスクのアドレスが少し間違っています。 (255ではなく250)問題は、次のコードを使用して現在のIPアドレスとネットマスクを取得するときです。
ioctl(iSock, SIOCGIFADDR, &stIFReq);
ioctl(iSock, SIOCGIFNETMASK, &stIFReq);
それいつも返品」72,0,67,33"(Hex:0x48004321)両方のioctl関数に当てはまります。これがエラーコードの種類かバグなのか疑問に思っています。ネットマスク/ IPアドレスに対してどのようなチェックが行われるのか、アドレスが判断されるのか知りたいのですが、無効ifup
ですifup
。とみなされます。
追加情報:
Linux バージョン 2.6.35.3
ビジーボックスv1.18.5
[ifup]はスクリプトではなく、システムのCプログラムです。
ベストアンサー1
システムを確認してください。ほとんどはifup
シェルスクリプトなので、ソースからスパイクをチェックすると、システムが何をしているのかを考えることができます。次のコマンドを使用してスクリプトの場所を確認できます。
$ type -a ifup
ifup is /sbin/ifup
Feodra/Red Hat ディストリビューション
/sbin/ifup
このシェルスクリプトライブラリを含む私のシステム(Fedora 14)からこのファイルから「マスク」を取得する/etc/sysconfig/network-scripts/network-functions
場合:grep
$ grep -i mask /etc/sysconfig/network-scripts/network-functions
if [ -z "${NETMASK}" ]; then
eval $(/bin/ipcalc --netmask ${IPADDR})
eval $(/bin/ipcalc --prefix ${IPADDR} ${NETMASK})
eval $(/bin/ipcalc --broadcast ${IPADDR} ${NETMASK})
eval $(/bin/ipcalc --network ${IPADDR} ${NETMASK})
このツールipcalc
は、ネットワーク構成の「計算」を実行する実行可能ファイルです。
コマンドラインから実行することもできます。
$ /bin/ipcalc --netmask 192.168.1.1
NETMASK=255.255.255.0
$ /bin/ipcalc --prefix 192.168.1.1 255.255.255.0
PREFIX=24
Debian/Ubuntu
このipcalc
ツールはDebian / Ubuntuとは少し異なりますが、機能は似ています。
$ ipcalc 192.168.1.1
Address: 192.168.1.1 11000000.10101000.00000001. 00000001
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.1.0/24 11000000.10101000.00000001. 00000000
HostMin: 192.168.1.1 11000000.10101000.00000001. 00000001
HostMax: 192.168.1.254 11000000.10101000.00000001. 11111110
Broadcast: 192.168.1.255 11000000.10101000.00000001. 11111111
Hosts/Net: 254 Class C, Private Internet
あなたの構成
Fedora:
$ /bin/ipcalc --netmask 192.168.0.130
NETMASK=255.255.255.0
$ /bin/ipcalc --prefix 192.168.0.130 250.255.255.0
PREFIX=24
Ubuntu:
$ ipcalc 192.168.0.130
Address: 192.168.0.130 11000000.10101000.00000000. 10000010
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000
HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001
HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111
Hosts/Net: 254 Class C, Private Internet
したがって、最も可能性が高いのは、設定がどこかに誤った値を設定していることです。追加のデバッグのためにip
。
はい
$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:19:d1:e8:4c:95 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.3/24 brd 192.168.1.255 scope global eth0
inet6 fe80::219:d1ff:fee8:4c95/64 scope link
valid_lft forever preferred_lft forever