问题1:WPA关联

问题1:WPA关联

所以,我有一个 FreeBSD 主机。目前,其以太网端口仅连接到以太网交换机(该网络上没有 DHCP 服务器),并且 wifi 已正确配置并正常工作。


这是/etc/rc.conf有效的:

# Ethernet
ifconfig_re0="DHCP"
ifconfig_re0_ipv6="inet6 accept_rtadv"

# WiFi
wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"

使用相应ifconfig的输出(没有环回):

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether f8:0f:41:bf:05:49
        inet6 fe80::fa0f:41ff:febf:549%re0 prefixlen 64 scopeid 0x1
        inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether b8:ee:65:4f:b9:c4
        inet 192.168.1.129 netmask 0xffffff00 broadcast 192.168.1.255
        groups: wlan
        ssid ThePromisedLan channel 6 (2437 MHz 11g ht/20) bssid b4:75:0e:9f:b4:9c
        regdomain 106 indoor ecm authmode WPA2/802.11i privacy ON
        deftxkey UNDEF TKIP 2:128-bit txpower 20 bmiss 7 scanvalid 60
        protmode CTS ampdulimit 64k ampdudensity 8 shortgi wme burst
        roaming MANUAL
        media: IEEE 802.11 Wireless Ethernet MCS mode 11ng
        status: associated
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

以及相应的netstat -r输出:

Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
0.0.0.0/8          link#1             U           re0
localhost          link#2             UH          lo0
192.168.1.0/24     link#3             U         wlan0
192.168.1.129      link#3             UHS         lo0

Internet6:
Destination        Gateway            Flags     Netif Expire
::/96              localhost          UGRS        lo0
localhost          link#2             UH          lo0
::ffff:0.0.0.0/96  localhost          UGRS        lo0
fe80::/10          localhost          UGRS        lo0
fe80::%re0/64      link#1             U           re0
fe80::fa0f:41ff:fe link#1             UHS         lo0
fe80::%lo0/64      link#2             U           lo0
fe80::1%lo0        link#2             UHS         lo0
ff02::/16          localhost          UGRS        lo0

这是/etc/rc.conf不起作用的:

但是,一旦我尝试将以太网端口更改为使用静态 IP 地址并重新启动,wifi 就会停止工作。

# Ethernet
ifconfig_re0="inet 10.10.10.1/24"

# WiFi
wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"

与相应的ifconfig输出:

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether f8:0f:41:bf:05:49
        inet 10.10.10.1 netmask 0xffffff00 broadcast 10.10.10.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
wlan0: flags=8c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether b8:ee:65:4f:b9:c4
        groups: wlan
        ssid "" channel 11 (2462 MHz 11g)
        regdomain 106 indoor ecm authmode WPA1+WPA2/802.11i privacy MIXED
        deftxkey UNDEF txpower 20 bmiss 7 scanvalid 60 protmode CTS wme burst
        roaming MANUAL bintval 0
        media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
        status: no carrier
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

以及相应的netstat -r输出:

Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
10.10.10.0/24      link#1             U           re0
10.10.10.1         link#1             UHS         lo0
localhost          link#2             UH          lo0
192.168.1.0/24     link#3             U         wlan0
192.168.1.129      link#3             UHS         lo0

Internet6:
Destination        Gateway            Flags     Netif Expire
::/96              localhost          UGRS        lo0
localhost          link#2             UH          lo0
::ffff:0.0.0.0/96  localhost          UGRS        lo0
fe80::/10          localhost          UGRS        lo0
fe80::%re0/64      link#1             U           re0
fe80::fa0f:41ff:fe link#1             UHS         lo0
fe80::%lo0/64      link#2             U           lo0
fe80::1%lo0        link#2             UHS         lo0
ff02::/16          localhost          UGRS        lo0

我认为重要的区别是,在我将接口更改为使用静态 IPwlan0后,现在的状态为“无运营商” 。re0

另外,我正在测试我的配置在重新启动后是否正常工作,但事实并非如此。但在更改配置并运行后我也得到了相同的结果service netif restart。最后,如果我在启用 DHCP 的情况下启动re0并切换到静态 IP,然后运行service netif restart​​,它不起作用,但重新启动或运行/etc/netstart可以。

pf被禁用。

我缺少什么?

谢谢

答案1

好消息:有用!

更好的消息:它的工作原理是预期的!!!

坏消息:你说谎!!! ;-)

或者你有几个问题...

我在评论中要求提供更多信息,但您没有解释您希望如何路由数据包。这对你来说似乎微不足道,但这个问题实际上是为了暗示一个可能的答案。

问题1:WPA关联

您必须了解 WPA 以及如何设置它,因为它有时会起作用。我们看到它的工作原理如下ifconfig

status: associated

如果 WPA 由于某种原因不起作用,您会看到:

status: no carrier

这个神奇的咒语 ( ifconfig_wlan0="WPA DHCP")/etc/rc.conf指示网络子系统运行wpa_请求者进而dhclient每当运行在wlan0.除非我们关联 (wpa_supplicant) 到无线网络,否则 DHCP (dhclient) 将无法获取 IP 地址。

您不需要重新启动所有接口。您可以指定您想要哪一个。

service netif restart wlan0

要调试它,我们需要使用正确的配置文件wpa_supplicant在调试模式下运行:-d-c

wpa_supplicant -i wlan0 -d -c /etc/wpa_supplicant.conf

如果您收到它已在运行的错误,请先关闭wlan0。您可以通过以下方式验证这一点:

ps -ax | grep wpa
ps -ax | grep dhclient

您可能会想到这样做:

service netif stop wlan0

但这将完全删除该界面。相反,只需将其关闭(这将停止 WPA 请求者和 DHCP)。

ifconfig wlan0 down

完成调试后,使用以下命令再次启用它:

ifconfig wlan0 up

另一种选择是注释掉ifconfig_wlan0="WPA DHCP"并重新启动界面(或重新启动)。然后就可以在前台运行wpa_supplicant进行调试了。

然而,我不认为你对此有任何问题,这是你的“谎言”(我们将在下面回到这一点)。但是,如果您确实遇到缓慢且不太稳定的界面问题,那么您最终可能会遇到类似的情况/etc/rc.conf

ifconfig_wlan0="-ht WPA SYNCDHCP powersave"

我在带有无线适配器的笔记本电脑上使用它iwn,否则会出现周期性的关联问题。

-ht禁用“高吞吐量 (HT)”请参阅如果配置SYNCDHCP强制启动等待 dhclient 返回。这可确保在继续之前网络已准备好。

当我们确定 WPA 正常工作时,我们就可以进城了dhclient。但我怀疑问题就出在这里。

问题2:路由

netstat -4rn向我们显示路由表。您只是声称它“不起作用”。但你没有做任何事情来说明什么不起作用以及你期望什么。然后我需要做出大量假设。

所以我的假设是:

  • 无线网络在这两种情况下都可以工作
  • 您希望能够通过无线连接到互联网。

谎言来了:在第二种情况下,你声称status: no carrier没有inetwithifconfig但然后你的netstat -r表演:

192.168.1.0/24     link#3             U         wlan0
192.168.1.129      link#3             UHS         lo0

因此,路由堆栈知道网络 192.168.1.0/24,wlan0并且您在该网络上有一个地址 (.129)。

如果我们看看网络统计(1)标志:

H    RTF_HOST      Host entry (net otherwise)   
S    RTF_STATIC    Manually added
U    RTF_UP        Route usable

我们直接被告知该路线可用。这ifconfig与没有线不匹配inet

WPA 和 DHCP 在后台异步运行。您可能发布得ifconfig太早了。有了这个路由表,你的ifconfig情况就会有所不同。跟随/var/log/messages看看会发生什么。如果service netif restart您在添加 IP 地址时使用,情况会更糟。然后这将重新启动全部网络接口。然后,您将等待 dhclient 释放地址并等待 wpa_supplicant 解除关联。然后它会再次启动 - 需要关联然后获取新地址。这可能需要相当长的时间!如果您只是为re0in设置 IP /etc/rc.conf,则只需使用 重新启动该接口service netif restart re0

当你正在使用RFC 1918地址,re0并且您静态地将 10.0.0.1(通常是网关)分配给该接口,我猜这是一个未连接到其他任何东西的本地网络。它可能是。这只是一个不太常见的配置。

在第一个示例中,您将其设置为 DHCP。没有可用的服务器,因此未设置地址。如果没有地址,我们就无法将任何内容路由到该接口。然后“幸运”的是它通过其他可用的接口发送。

在第二个示例中,我假设无线网络正在工作,现在您已经定义了 2 个网络:

10.10.10.0/24
192.168.1.0/24

我非常确定您能够 ping 通这些地址:

ping 127.0.0.1
ping 10.0.0.1
ping 192.168.1.129
ping 192.168.1.1

但你还没有向我们展示你是如何测试的,所以我们只能猜测。如果其中任何一个失败,它们都会为我们提供有价值的调试信息。

如果 127.0.0.1 不起作用,则说明您的 IP 堆栈/防火墙有问题。如果 10.0.0.1 不工作,通常是防火墙(但没有 pf 或者我假设这里有 iptables)问题,因为这是我们本地网络上自己的地址。如果我们知道另一个 10.0.0.x 地址(因为我们有本地 /24),我们可以确认网络正常工作。与 192.168.1.129 相同 - 这是我们自己的地址,应该可以使用。真正有趣的是 192.168.1.1,它应该是我们无线网络上的路由器。如果有效,那么我们就知道我们也能够连接到该网络。在极少数情况下,它可以配置为不响应 ping (ICMP ECHO),但这种情况很少见。而且我的假设是这有效。

现在让我们尝试有趣的部分 - 与世界其他地方联系。根据您所展示的内容,我猜测您会得到:

$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
ping: sendto: No route to host

这将成为我们确凿的证据。我们确定可以到达 10.0.0.0/24 和 192.168.1.0/24,因为我们知道这些网络的位置。但是你的计算机如何知道将其余的发送到哪里呢?

如果我现在的假设是正确的,我们只需要知道我们想要将所有不属于已知本地网络的数据包发送到哪里。我们可以将默认路由添加到/etc/rc.conf

defaultrouter="192.168.1.1"

设置默认路由后,您会注意到路由表中列出了default如下所示的路由 ( )Destinationnetstat -4rn

如果您希望计算机充当有线网络上 10.0.0.0/24 的路由器,以便它可以通过无线访问互联网,您还需要这样做:

gateway_enable="YES"

您可以在 FreeBSD 手册中阅读有关路由的更多信息31.2。网关和路由

问题 3:你的假设

你等同netif/etc/netstart.看看里面netstart,看看它是多么简单——但它却做了多少事情。我假设您的问题与路由相关,您真正需要的是:

# service netif restart
# service routing restart

真正的教训

我花了很多时间来回答这个问题。我没有这样做,因为这是一个有趣的问题。但我想表现出努力,因为OP努力更新问题。

这个问题是一个非常典型的简单故障排除问题,我们这里有很多问题。然后我想展示我通过哪些步骤来回答这个问题。也许我很幸运并且猜对了。但我希望清楚我需要多少假设和猜测。如果问题处理得更仔细,这一切都是可以避免的。

你应该吸取的教训:

  • 不要要求人们根据您自己的假设回答问题。
  • 清楚什么有效,什么无效。清楚地说明您如何测试以及您期望的结果
  • 显示您精确的故障排除步骤。
  • 不要根据您认为相关的内容挑选设置(即/etc/rc.conf)

请注意两个不同的人如何询问更多信息。你预先提供的信息是多么少啊。并且在更新时您甚至没有提供所要求的所有内容。你花在问题上的时间越多,人们花在回答上的时间就越多。

相关内容