
アクセス ポイントとして機能する Raspberry 上の Linux マシンがあります。
Linux raspberrypi 3.18.7-v7+ #755 SMP PREEMPT Thu Feb 12 17:20:48 GMT 2015 armv7l GNU/Linux
また、DHCP サーバーもインストールしています。/etc/network/interfaces で静的 IP アドレスを定義しましたが、起動するたびに、静的 IP ではなく DHCP サーバーからの IP が取得されます。この動作は一貫しておらず、静的 IP が取得されることもあります。
これは、スクリプトのパラメータに基づいて、AP として機能する場合もあれば、クライアントとして機能する場合もあるプロジェクトの一部のモジュールです。すべてのケースで conf ファイルが以下のようになっているにもかかわらず、AP に戻すと IP が間違ってしまう場合があります。
これは私のhostapd.confです
interface=wlan0
driver=rtl871xdrv
ssid=my ssid
hw_mode=g
channel=6
auth_algs=1
ieee80211n=1
これは私のインターフェースファイルです
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0
dhcpd.conf
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.50;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "domain";
}
ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 74:da:38:26:9f:d6
inet addr:192.168.0.33 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:129 errors:0 dropped:5369 overruns:0 frame:0
TX packets:0 errors:0 dropped:726 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:65760423 (62.7 MiB) TX bytes:12737873 (12.1 MiB)
ifquery wlan0
address: 192.168.0.1
netmask: 255.255.255.0
broadcast: 192.168.0.255
192.168.0.1へのpingが192.168.0.33に変更され、宛先に到達できなくなりました。192.168.0.33へのpingは機能します。
eth0 は IP を取得できませんでした。
答え1
eth0 と wlan0 が異なる IP アドレス範囲にあり、DHCP サーバーが wlan0 デバイスのみをリッスンしていることを確認してください。また、wlan0 MAC アドレスのリースのアドレスが含まれていないことを確認してください。
次に、wlan0 に関係する他のサービスがアクティブでないことを確認します (NetworkManager、wicd などのサービスが考えられます)。また、「クライアント モード」から「AP モード」に切り替えるときに競合状態が発生しないことを何らかの方法で保証する必要があります。そうしないと、クライアント モードから外れた DHCP クライアントが IP アドレスを元に戻してしまう可能性があります。
答え2
DHCP クライアントと「AP モード」の間に競合状態が発生しました。つまり、自分の DHCP から IP を取得したことになります。
私は、MAC アドレスのみに制限するという制約を付けて、必要な静的 IP を DHCP サーバーに提供することでこの問題を解決しました。