ubuntu-server(8.04)で非常に奇妙なエラーが発生しました。なぜ、dhclientがネットワーク設定を設定できないのかわかりません。そもそもサーバーをインストールしたのは私ではないので、セットアップについてはよくわかりません。サーバーはファイアウォール/ゲートウェイ(カスタムiptablesスクリプト)としてのみ使用され、インターネット用、LAN用、DMZ用の3つのNICがあります。これで、ISPは設定を静的IPからdhcpを介して割り当てられた「静的」IPに変更しましたが、実際には使用できません。
残念ながら、dhcpリースが終了するとISPが接続を閉じるため、IPを静的に設定することはできません:o
これは私が得るエラーです:(そしてそれはただそこにぶら下がっています..)
root@fw:~# dhclient eth2
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFFLAGS: Permission denied
Listening on LPF/eth2/00:50:52:c1:a1:32
Sending on LPF/eth2/00:50:52:c1:a1:32
Sending on Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 8
DHCPOFFER of 2.10.56.19 from 93.87.36.42
DHCPREQUEST of 2.10.56.19 on eth2 to 255.255.255.255 port 67
DHCPACK of 2.10.56.19 from 93.87.36.42
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFNETMASK: Permission denied
SIOCSIFBRDADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCADDRT: Operation not permitted
今のところ、killall dhclient; dhclient eth2
1時間ごとに実行し、インターフェイスの静的IP設定を設定することで修正しました。これで、接続を維持するのに十分です。しかし、私の意見ではかなり醜いハックです。
http://silenzio.dk/pi/dhc.straceのスタックトレースに基づいて、最初のSIOCSIFADDR: Permission denied
エラーは、プロセス26092の実行中に行735で発生しますifconfig eth2 inet 0 up
。今root
はifconfig
何かを上げることしかできないので、fork()
/のチェーンをトレースしexec()
てUIDの変更を探しましょう。それが判明しました:
そのため、実行中の子プロセスに必要なroot権限がないため、エラーが発生します。なぜこれが起こるのですか?ソースのdebian/changelog
ファイルにはdhcp3-3.0.6.dfsg
次のように書かれています。
dhcp3 (3.0.1-2ubuntu4) breezy; urgency=low
Derooted the DHCP client:
* Added debian/patches/deroot-client.patch:
- client/dhclient.c: After initialization, dro privileges to dhcp:dhcp and
only keep CAP_NET_RAW and CAP_NET_BIND_SERVICE.
- Add a setuid wrapper call-dhclient-script to call
/etc/dhcp3/dhclient-script as root.
- Install call-dhclient-script into /lib/dhcp3-client/.
私の推測ではcall-dhclient-script
、set-UIDビットが失われているため、root権限で実行されていないはずです。(debian/dhcp3-client.postinst
ソース内のファイルによると、それはroot:dhcp
モードによって所有されている必要があります4754
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加