无法登录公共开放式Wifi连接

作为一个长期使用Ubuntu(10年以上)的用户,我注意到Ubuntu与公共无线网络热点(没有WiFi安全性)之间的关系并不总是那么容易...
有时候,我能够自动重定向到一个用于登录的网页,但是我已经遇到了同样的问题一段时间了:连接到开放的WiFi网络后,浏览器没有重定向到登录页面!我刚刚升级到16.04版本,很失望地发现它并没有解决这个问题。
我尝试从网络管理器中删除连接,但这并没有改变任何事情。无论是使用哪个浏览器(Chromium,Firefox,Opera等),行为都是相同的。我在这台机器上双启动,连接到Windows上的这些网络没有问题...我真的不知道还能尝试什么...
还有其他人遇到这个问题吗?非常感谢任何帮助来排除故障(或解决)这个问题。如果您需要诊断命令输出,请告诉我。
更新:今天,我确实成功连接到其中一个WiFi网络,但是首先收到了一个警告:

enter image description here

然而,我之后尝试连接到星巴克的网络,仍然遇到了同样的问题。下面的Thaller指出了NetworkManager.conf文件可能存在的问题:有人可以贴出一个正常的文件,这样我就能看出我的文件哪里出错了吗?

听起来像是浏览器的问题,而不是Ubuntu的问题。你试过其他浏览器了吗?比如说Chrome(或者Chromium)? - You'reAGitForNotUsingGit
刚刚编辑了我的帖子:无论使用哪个浏览器,问题都存在。 - R Pennese
它能在Windows上配合那些浏览器使用吗?还是只能在IE中打开? - user589808
@CelticWarrior,是的,这些浏览器的Windows版本允许进行重定向和登录。 - R Pennese
请查看下面的答案。有些被控制的门户使用诸如ActiveX之类的东西,这是专为Windows设计的Microsoft所有权标记。如果是这种情况,登录页面可能无法正确加载或根本无法加载。 - user589808
请参阅https://unix.stackexchange.com/questions/89630/how-to-sign-into-an-open-wireless-network。 - Sridhar Ratnakumar
11个回答

以下是我发现对于强制强制门户(即公共热点WIFI连接的登录页面)有效的方法:
  1. 连接到WIFI。

  2. 打开终端并输入route命令。你应该会看到如下显示:

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    
    default         10.1.0.1        0.0.0.0         UG    600    0        0 wlo1    
    10.1.0.0        *               255.255.248.0   U     600    0        0 wlo1    
    link-local      *               255.255.0.0     U     1000   0        0 wlo1```
    
  3. 在浏览器的地址栏中输入默认网关(即10.1.0.1),你将会看到WIFI登录页面。


这是有用的信息。Ubuntu试图为某种原因连接到nmcheck.gnome.org。 - qwr
5只使用核心工具的解决方案怎么样?我没有"route"命令,并且当然也无法安装它,因为我的设备没有联网。 - william_grisaitis
5一个小建议... 我在使用路由命令时必须加上-n选项(即route -n)才能获取所需的IP地址。如果没有它,Default Gateway会显示为无法解析的域名。-n选项强制路由以数字IP地址显示结果。 - notorious.dds
6@grisaitis - 核心工具有ip,其中有选项route。用法:ip route - AaronDanielson
1所有显示出来的IP地址都无法访问。这对我没有起作用。(Ubuntu 20.04 LTS) - Kvothe
@grisaitis 你也可以尝试以下命令:more /etc/resolv.conf。我在这里找到了这个技巧:链接 - Sawta

在浏览器中输入http://nmcheck.gnome.org。(我将Ubuntu 18的“热点登录”添加到我的收藏夹中,每次点击它都会显示该地址。)这对我有效。

2这个答案被低估了。对我来说非常完美,而且非常简单 - 我只是把它添加到我的书签工具栏中,所以现在解决这个问题只需要一点击就可以了。 - Staring Frog
我在遇到问题的情况下设法找到了这个,但它并没有帮助我解决https页面的连接问题,也没有弹出登录门户。 - eebbesen
2与这个答案类似,http://icanhazip.com 的效果很好。 - Timo Huovinen

我有同样的问题,我将在我的/etc/NetworkManager/NetworkManager.conf文件中添加以下内容:
[connectivity]
uri=http://nmcheck.gnome.org/check_network_status.txt

(来源)


3这是对问题的回答吗? - George Udosen
这对我来说解决了问题!在星巴克测试,使用的是Ubuntu-Gnome 16.04。 - theV0ID
在Antergos-Gnome上对我没有起作用。 - Johan Larsson
1记得在之后使用 service network-manager restart 重新启动网络管理器。 - parsley72
我正在运行Kubuntu 22.04。添加此内容并运行“sudo systemctl restart NetworkManager.service”成功使我在连接到这些公共WiFi服务时获得登录弹出窗口。但是,我的DNS不工作,因此当我单击“登录”时,什么也不会发生。我的resolv.conf包含条目8.8.8.8和1.1.1.1。 - Keith Bennett

对我来说,
sudo dpkg-reconfigure resolvconf

完全解决了问题。希望能对你有所帮助。

12请问你能够 [编辑] 并且稍微扩展一下你的回答吗,例如通过描述命令的作用和为什么这可能会解决问题?谢谢并欢迎来到 Ask Ubuntu。 - Byte Commander
2这对我也起作用。Resolv.conf似乎是一个配置,它告诉您的浏览器/网络连接首先在哪里查找域名解析器(DNS)。这些强制门户会将您对“http://somesite.com”的请求重定向到 -> [强制登录页面]。 - emf
工作得很顺利!!! - Behnam Hedayat

Guruprasad L的博客文章对我来说的答案。

创建文件/etc/NetworkManager/conf.d/20-connectivity-debian.conf(需要root或sudo权限)。 按照Guruprasad的建议,添加以下行:
[connectivity]
uri=http://network-test.debian.org/nm
response=NetworkManager is online
interval=300
使用service network-manager restart重新启动网络管理器(再次需要sudo或root权限)。

NetworkManager在这方面有一些涉及。当您配置连通性检查(参见man NetworkManager.conf)时,它会定期尝试下载一个网站以检查是否具有互联网访问权限。这也用于检测强制门户。基于此,NetworkManager具有一个连通性状态,可能是本地(Local)、门户(Portal)或完全(Full)之一。
除此之外,NetworkManager不做任何事情。在使用gnome3时,gnome-shell会查看该连通性状态,并可能打开一个门户登录页面,即一个带有某个网站的浏览器。也许还有其他组件执行类似任务,如NetworManager的连通性检查或gnome-shell的门户登录。
最后,您也可以不使用这两者。当您处于强制门户后,您可以打开一个HTTP网站(而非HTTPS),门户将重定向您到一个登录页面。
也许您没有被重定向,是因为您试图打开一个HTTPS网站。通常,门户会完全阻止这样的尝试,因为试图重定向它将导致证书警告。

谢谢,thaller。我意识到我的NetworkManager.conf只有5行,我怀疑这不正常...我可能一直在进行所有这些版本升级,而文件保持不变。有没有办法重新生成这个文件为默认版本? - R Pennese
没有证书警告:浏览器不会自动响应,如果在地址栏中输入任何内容,它会一直思考... - R Pennese

运行route -n命令应该有一个类似以下的第一条记录:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.0.1      0.0.0.0         UG    20600  0        0 wlan0

如果您可以ping通网关(例如ping 172.31.0.1),并且如果您知道捕获门户的URL(通过手机或其他计算机连接时获取),您应该能够将这两者链接起来,以便进入登录界面。编辑您的hosts文件sudo vi /etc/hosts,并添加一个条目,如下所示:
172.31.0.1 gialto.wifi/hotspot/novotelmedellinguest

gialto.wifi/hotspot/novotelmedellinguest 替换为 wifi 登录的完整地址。

然后在桌面右上角的 wifi 设置中取消选中 "启用网络",然后重新选中它。最后,在浏览器中输入完整地址(确保以 http:// 开头,以防浏览器尝试进行搜索而不是查找)。


这可能对任何人都没有帮助,但我在Windows分区上成功使用了xfinitywifi,然后调整了MAC地址,直到它突然开始工作。 我目前无法复制它。

对于未来的搜索者,我在Ubuntu 16.04的Chromium中突然遇到了完全相同的问题,但是尝试在Firefox中导航到一个站点时,显示了网络的登录页面。


我遇到了同样的问题。网络的登录页面根本没有显示出来,登录窗口也是坏的。原因是一个悬挂的WireGuard连接。禁用了这个连接之后,一切都恢复正常了。