儘管指定了靜態 IP,但仍取得動態 IP

儘管指定了靜態 IP,但仍取得動態 IP

我有一台基於樹莓派的 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,有時充當客戶端。在某些情況下,當更改回 AP 時,它會取得 IP 錯誤,儘管所有情況下的 conf 檔案如下所示。

這是我的 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設定檔

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

ping 192.168.0.1 更改為 192.168.0.33 並獲得目標無法到達 ping 192.168.0.33 有效

eth0 沒有獲得 IP。

答案1

確保您的 eth0 和 wlan0 位於不同的 IP 位址範圍,並且您的 DHCP 伺服器僅偵聽 wlan0 裝置。另外,請確保它不包含 wlan0 MAC 位址的租用位址。

然後,確保沒有其他涉及 wlan0 的服務處於活動狀態(我正在考慮 NetworkManager、wicd 和類似服務)。此外,您需要以某種方式保證,當從「客戶端模式」切換到「AP 模式」時,不會發生競爭條件。否則,來自客戶端模式的流浪 DHCP 用戶端可能會決定將 IP 位址變更回來。

答案2

DHCP 用戶端和「AP 模式」之間存在競爭條件。這意味著我從自己的 DHCP 獲得了 IP。

我透過向 DHCP 伺服器提供我想要的靜態 IP 來修復此問題,並限制其僅限於我的 MAC 位址。

相關內容