我已经有近六个月无法使用星巴克的 WiFi 上网了。
Ubuntu 可以识别 Wifi 并建立连接。但是当我单击访问/接受时...它会进行一些重定向,然后什么也不做。它看起来就像挂了一样。
我怀疑这是一个 dnsmasq 问题,但我不确定。
我以前用的是 Ubuntu 16.04,现在是 17.10。当我使用旧版本时,互联网运行正常。现在不行了。
- Ubuntu 16.04 中的 dnsmasq是 2.75
- Ubuntu 17.10 中的 dnsmasq为 2.78
我试过了tcpdump
。我从中得到了超过 70 万行日志。而且我看不懂其中的大部分内容。下面是示例:
18:04:26.564268 IP 10.0.9.137.49266 > 192.190.0.106.http: Flags [.], ack 20161, win 544, options [nop,nop,TS val 1641878439 ecr 315460744], length 0
18:04:26.564273 IP 192.190.0.106.http > 10.0.9.137.49266: Flags [.], seq 20161:21601, ack 1282, win 62, options [nop,nop,TS val 315460744 ecr 1641878430], length 1440: HTTP
18:04:26.564277 IP 10.0.9.137.49266 > 192.190.0.106.http: Flags [.], ack 21601, win 567, options [nop,nop,TS val 1641878439 ecr 315460744], length 0
18:04:26.564438 IP localhost.37212 > localhost.domain: 29983+ [1au] AAAA? starbucks-east.datavalet.io. (56)
18:04:26.564473 IP localhost.35985 > localhost.domain: 10794+ [1au] AAAA? starbucks-east.datavalet.io. (56)
18:04:26.564496 IP localhost.domain > localhost.46709: 30654 0/0/1 (56)
18:04:26.564514 IP localhost.domain > localhost.44492: 24516 0/0/1 (56)
18:04:26.564519 IP localhost > localhost: ICMP localhost udp port 44492 unreachable, length 92
18:04:26.564664 IP localhost.35882 > localhost.domain: 64112+ [1au] AAAA? starbucks-east.datavalet.io. (56)
18:04:26.564690 IP localhost.32892 > localhost.domain: 14648+ [1au] AAAA? starbucks-east.datavalet.io. (56)
18:04:26.564718 IP localhost.domain > localhost.48486: 47788 0/0/1 (56)
18:04:26.564737 IP localhost.domain > localhost.40167: 14148 0/0/1 (56)
18:04:26.564741 IP localhost > localhost: ICMP localhost udp port 40167 unreachable, length 92
18:04:26.564861 IP 192.190.0.106.http > 10.0.9.137.49266: Flags [.], seq 21601:27361, ack 1282, win 62, options [nop,nop,TS val 315460744 ecr 1641878430], length 5760: HTTP
18:04:26.564868 IP 10.0.9.137.49266 > 192.190.0.106.http: Flags [.], ack 27361, win 657, options [nop,nop,TS val 1641878440 ecr 315460744], length 0
18:04:26.564940 IP localhost.56634 > localhost.domain: 33651+ [1au] AAAA? starbucks-east.datavalet.io. (56)
18:04:26.564971 IP localhost.26306 > localhost.domain: 12045+ [1au] AAAA? starbucks-east.datavalet.io. (56)
ICMP 似乎被调用了很多次。某些程序正在不同端口上执行多次 ping。
有关我的系统的详细信息:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful
这可能相关:Linux 上连接公共 WiFi 的问题 - Medium
另一个细节:有时我可以上网。但这是随机的。
答案1
这种情况之所以会发生,是因为像星巴克这样的地方会使用强制门户,除非你通过网络验证,否则不允许连接(除了一些罕见的例外情况)。对于星巴克来说,这意味着同意服务条款。
在您的网络浏览器中,您通常可以导航到任何非 HTTPS 域(例如,http://captive.apple.com/
或http://www.msftncsi.com/ncsi.txt
,它们分别是 Apple 和 Windows 使用的“强制门户”检测系统)。
在某些情况下,强制门户将还阻止发出 DNS 请求。在这种情况下,您可以直接连接到公网上不受 HTTPS 保护的任何 IP 地址。我倾向于使用91.189.91.23
,这是 Canonical 的 APT 镜像的 IP 地址。
虽然您可以更改您的 DNS,但在某些情况下这是不可取的并且会引发隐私问题 - 例如,星巴克会通过 DNS 跟踪您访问的网站。
答案2
我的朋友能够解决这个问题。
在星巴克 WIFI 设置中,转到 IPv4 配置选项卡。
关闭 DNS 自动设置。
然后在输入中添加这些名称服务器:10.0.9.1, 8.8.8.8, 8.8.4.4
10.0.9.1
其他星巴克可能有所不同。此 IP 是路由器的 IP。
更新
您可能需要修改:/etc/resolv.conf
和:
nameserver 8.8.8.8
nameserver 10.0.9.1
再次,这10.0.9.1
是 Wifi 路由器的 IP。
答案3
我按照 jnbdz 的建议做了,但它不适用于 Ubuntu 20.04。不过,我可以通过以下方式找到强制门户的 URL:
打开终端并输入:
sudo apt install net-tools
出现错误消息 E:无法获取 https:/ /sbux-portal.globalreachtech.com/?login_url=https://n438.network-auth.com/splash/login? 等。
我复制了这个 URL 并将其粘贴到浏览器中
之后,强制门户出现了,我能够在星巴克访问互联网了。