我在东芝 Satellite NB 和其上的 Ubuntu 12.04 上遇到了一个奇怪的问题。这个系统已经运行了几个月,但从上周开始我遇到了一个奇怪的问题。
我让 NB 进入睡眠/休眠状态 > 唤醒 > Wifi/LAN 再次连接到网络 > 分配 IP > 无互联网。唤醒后,我只能 ping 通本地 IP,例如网关 IP 192.168.1.1 或本地网络中的其他 PC,但无法 ping 通服务器,例如 8.8.8.8 或其他公共 IP。唯一的解决方案是重新启动系统。之后互联网就可以正常工作了。分配的 IP 相同。
我确信一周前它能正常工作。我怀疑我在 16.7 星期三安装的一些最新更新。最近几天我没有进行任何重大的软件更改。我如何列出我安装的所有最新更新?我可以回滚以测试“上次工作状态”吗?
至于调查,我做了一些交叉测试,结果如下:
- 在进入睡眠状态之前禁用网络并在唤醒后启用>同样的事情
- 连接到 WiFi 或 LAN 电缆 > 两者相同
- 仅禁用网络而不休眠 > 启用网络 > 同样的事情
- sudo service networking restart > 与第 3 点相同
- 在 /etc/pm/sleep.d/ 中使用不同的命令制作自定义脚本,以在睡眠|休眠时停止网络并在唤醒时启动 > 与 3 相同。
- sudo modprobe -r iwlwifi > 然后 modprobe iwlwifi > 相同
- 在第二个分区上启动 Windows 7 > 连接到 wifi > 睡眠 > 唤醒 > 互联网工作
- 比较 sleep 前后的 ifconfig > 相同
本地局域网居然能工作,这太荒谬了。如果网络内核模块“死机”,我就不会 ping 任何东西,或者根本就无法连接到网络,对吧?在 Windows 上,我会尝试做类似的事情
ipconfig -release / -renew / -flushdns
Ubuntu 中有类似的功能吗?
肯定需要重启某些东西才能使其正常工作,因为完全重启系统会有所帮助,但我无法确定是什么。也许有人可以帮忙?
我在 askubuntu 上找到了另一个有完全相同问题的帖子,但是没有人回答。奇怪的是,那里也有一颗卫星。 https://askubuntu.com/questions/454370/12-04-wireless-is-connected-but-is-not- functional-after-suspend
答案1
我应该感到难过......
在深入研究了其他类似的帖子后,我发现有人建议我尝试使用 traceroute。这就是我的问题所在。重新启动后,我使用 traceroute google.com 进行了跟踪,我清楚地识别出 GW 之后的第一个 IP 是我家的 ISP(我现在在国外)的 IP,我很快发现,我已“自动”连接到我的 VPN,这是我一周前设置的。whatsmyip.org 证实了这一点。
至于 OpenVPN 自动连接 /etc/openvpn/xyz.conf 中找到的每个条目,我感到非常惊讶,因为我已通过网络管理器对其进行了配置,并且那里的“自动连接”复选框未选中!但 /etc/default/openvpn 却说不同。
# Start only these VPNs automatically via init script.
# Allowed values are "all", "none" or space separated list of
# names of the VPNs. If empty, "all" is assumed.
# The VPN name refers to the VPN configutation file name.
# i.e. "home" would be /etc/openvpn/home.conf
#
#AUTOSTART="all"
#AUTOSTART="none"
#AUTOSTART="home office"
..argh.. 对于其他 Ubuntu 用户来说,此配置文件与网络管理器设置之间肯定存在混淆的可能性。
好的。解决方案。
取消注释
AUTOSTART="none"
然后重启
我认为当系统连接到 vpn 并进入睡眠/休眠状态时,它不会正确断开连接并在恢复后重新连接。相反,连接变成了死胡同。这可能是导致“无互联网”的原因。现在 SUSPEND 和 RESUME > internet 可以正常工作!
答案2
你可以尝试一下
sudo systemctl restart network-manager.service
如果有效,您可以添加脚本
/etc/systemd/system/wifi-resume.service
作为
#/etc/systemd/system/wifi-resume.service
#sudo systemctl enable wifi-resume.service
[Unit]
Description=Restart networkmanager at resume
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service
[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
在 3 月 17 日更新 ubuntu 16.04 LTS 后,这对我有用