为什么连接到我的 wlan0 接口的设备无法与 eth0 设备通信?

为什么连接到我的 wlan0 接口的设备无法与 eth0 设备通信?

我正在尝试使用以下配置设置运行 Raspbian Jessie 的 Raspberry Pi:

  • DHCP 服务器(isc-dhcp-服务器)
  • WLAN 接入点 (hostapd)
  • 应用程序服务器(端口 80 上的 HTTP 服务器)

我的问题是连接到 WLAN AP 的设备无法与 Pi 上运行的网络服务器通信。连接到以太网端口的设备可以毫无问题地显示网页。

当我将笔记本电脑连接到 AP 并尝试 ping Pi ( 10.10.1.1) 时,它告诉我它已关闭。不过我确实得到了一个IP地址(例如10.10.1.17)。当使用以太网电缆连接 Pi 时,我收到一个 IP 地址,并且能够 ping 通 Pi,10.10.1.1因此使用有线连接时一切正常。

这是我的配置文件:

/etc/dhcp/dhcp.conf

ddns-update-style none;
authoritative;
log-facility local7;

subnet 10.10.1.0 netmask 255.255.255.0 {
   range 10.10.1.10 10.10.1.100;
   option routers 10.10.1.1;
   default-lease-time 3600;
   max-lease-time 3600;
   option subnet-mask 255.255.255.0;
   option broadcast-address 10.10.1.255;
   option domain-name-servers 8.8.8.8;
   option domain-name "support.muffag.ch";
}

/etc/default/isc-dhcp-服务器

INTERFACES="eth0 wlan0"

/etc/网络/接口

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
       address 10.10.1.1
       netmask 255.255.255.0


allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
        address 10.10.1.2
        netmask 255.255.255.0

/etc/hostapd/hostapd.conf

interface=wlan0
driver=rtl871xdrv
ssid=Test AP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

/etc/默认/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

我看到其他人正在谈论网桥,但我不确定如何使用类似的东西。如何确保连接到接入点的设备可以访问网络服务器?

答案1

如果您的网络服务器正在侦听任何 IP 地址(不仅仅是10.10.1.1)的端口 80,那么您可以只使用您所连接的接口的网关地址。

但是,在执行此操作之前,您首先需要修复正在使用的地址范围。您当前的配置表示要10.10.1.0-10.0.1.255给予eth0 wlan0。这不好。您需要为两个接口提供不同的 IP 地址范围或使用桥接网络。如果您想轻松地允许设备wlan0与设备进行通信eth0(就好像它们位于同一网络上一样),则需要使用网桥。

为了使用不同的地址范围,您的/etc/network/interfaces文件应如下所示:

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
       address 10.10.1.1
       netmask 255.255.255.0


allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
        address 10.10.2.1
        netmask 255.255.255.0

基本上,10.10.1.0-10.10.1.255已分配给eth0,并且10.10.2.0-10.10.2.255已分配给wlan0。您还需要更改/etc/dhcp/dhcp.conf

ddns-update-style none;
authoritative;
log-facility local7;

subnet 10.10.1.0 netmask 255.255.255.0 {
   range 10.10.1.10 10.10.1.100;
   option routers 10.10.1.1;
   default-lease-time 3600;
   max-lease-time 3600;
   option subnet-mask 255.255.255.0;
   option broadcast-address 10.10.1.255;
   option domain-name-servers 8.8.8.8;
   option domain-name "support.muffag.ch";
}

subnet 10.10.2.0 netmask 255.255.255.0 {
   range 10.10.2.10 10.10.2.100;
   option routers 10.10.2.1;
   default-lease-time 3600;
   max-lease-time 3600;
   option subnet-mask 255.255.255.0;
   option broadcast-address 10.10.2.255;
   option domain-name-servers 8.8.8.8;
   option domain-name "support.muffag.ch";
}

10.10.2.0/24添加了网络部分。

此时,您应该能够连接到网络服务器。如果您连接到eth0,则需要使用10.10.1.1;如果您已连接到wlan0,则需要使用10.10.2.1.

答案2

我怀疑您错过了配置中的一个步骤,该步骤允许数据包在接口之间转发:

sysctl -w net.ipv4.ip_forward=1

当您确认这对您有效后,请编辑/etc/sysctl.conf或添加您自己的文件以/etc/sysctl.d/使更改永久生效。

相关内容