尽管指定了静态 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。

这是项目的一部分模块,根据脚本中的参数,它有时作为 AP 运行,有时作为客户端运行。在某些情况下,当更改回 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配置文件

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 地址。

相关内容