(Arch) Linux + GNOME安装完成后在国内无法连接到网络解决方案

(Arch) Linux + GNOME安装完成后在国内无法连接到网络解决方案

问题描述

由于我的个人电脑和工作电脑都是在境外配置并通过archinstall进行安装的,所以在脚本安装时选用的地区并非中国大陆,这样的电脑在带回国内使用时都遭遇了不小在网络环境配置方面的困难,无法做到无缝衔接使用。

现在简短说下具体情况:

  • 两台电脑都是联想,分别是Thinkbook和Legion拯救者
  • 桌面环境都是GNOME45
  • 网络配置工具都是GNOME自带的 NetworkManager

具体的网络故障描述:

  • 连接国内的WLAN后,首先无法通过 GNOME NetworkManager 的 connectivity test,导致tray中的WIFI图标上有个问号。
  • 无法访问任何网站,ping 也ping不通

思路分析

首先这个GNOME NetworkManager 的 connectivity test 既然都说连接有问题了,我们不如就从最直观的问题入手,把这个未通过的connectivity check给弄过了,如果这样就能解决了,那最好。

如果解决不了网络问题就继续debugging,大致可能的问题主要还是DNS,某项系统服务需要通过systemctl启用/禁用,等等。

动手解决

Connectivity Check

  • 谷歌一下找到了一篇讨论这个GNOME功能的帖子: 求助:Fedora 37 连接小米 Redmi AX6S 路由器的无线网后网络连接状态显示”问号“是什么情况?
  • 按照帖子中的建议,很轻松的就解决了NetworkManager这里的问题,具体步骤如下:
    • 先查看一下connectivity check这里使用的uri

      ~$ NetworkManager --print-config 
      # NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity.conf)
      
      [main]
      # plugins=keyfile
      # rc-manager=symlink
      # migrate-ifcfg-rh=false
      # auth-polkit=true
      # dhcp=internal
      # iwd-config-path=
      configure-and-quit=no
      
      [connectivity]
      uri=http://ping.archlinux.org/nm-check.txt
      
      [logging]
      # backend=journal
      # audit=true
      
      [device]
      # wifi.backend=wpa_supplicant
      
      # no-auto-default file "/var/lib/NetworkManager/no-auto-default.state"
      
    • /etc/NetworkManager/conf.d 中创建一个 20-connectivity.conf 配置文件。文件内容如下:

      [connectivity]
      enabled=true
      uri=http://nmcheck.gnome.org/check_network_status.txt
      response=NetworkManager is online
      interval=3000
      

      即用GNOME官方提供的的一个uri,和各个linux分支没什么关系了,很幸运这个uri在国内可以被ping通(至少我在的省份是可以的)

    • 重启一下基本上就能看到问号消失了。很可惜,正如教程贴主发现的问题一样:

      至此,网络连接状态显示问号的问题得以解决。但导致这个问题的根本原因在于我所在网络连接不到 Fedora 的一些 WEB 服务器,系统中其他需要连接到 Fedora 服务器的功能也还依然是访问不到,例如 DNF 安装、升级等操作时出现的网络连接失败问题。

      所以我只能继续查其他问题了

修改DNS配置

  • Arch的resolv.conf文件储存在/etc/resolv.conf ,其他distro应该也大差不差。
    ~$ cat /etc/resolv.conf                                                                              
    # Generated by NetworkManager
    search 
    nameserver 
    nameserver 
    nameserver 
    # NOTE: the libc resolver may not support more than 3 nameservers.
    # The nameservers listed below may not be recognized.
    
  • 因为隐私问题我把我的DNS配置文件中的nameserver地址删除了,但是你们应该可以看到自己的。我在我的resolv.conf中发现了一个很陌生的ip地址,果断换成国内的一些公共DNS,比如 nameserver 119.29.29.29
  • 用你习惯的editor,把在国外用的DNS注释掉,在最下面加一下国内用的DNS:
    cat /etc/resolv.conf
    # Generated by NetworkManager
    search 
    #nameserver 
    #nameserver 
    #nameserver 
    nameserver 119.29.29.29	
    
  • 最后重启一下电脑,果然网络成功连接了,看来就是国外的DNS服务配置了,但是到了国内访问不到。

控制一下变量

  • 为了确定到底是DNS的问题还是NetworkManager的锅,我决定控制变量实验一波。
  • 目前可以确定,即便NetworkManager的connectivity check通过了,如果DNS被卡了那还是上不去,但是NetworkManager的用的uri到底对国内网络访问有没有影响呢?
  • 测试方法很简单,我把/etc/NetworkManager/conf.d/20-connectivity.conf 直接删了,那么就会走NetworkManager中由各个distro自己设置的默认的uri,arch的是 http://ping.archlinux.org/nm-check.txt, Fedora是 http://fedoraproject.org/static/hotspot.txt
  • 结果立马就无法上网了,我也很纳闷,不过原因是找到了,既有NetworkManager的锅,也有DNS国内访问不到的原因。

准备再次离境

主要有两个针对以上操作的小建议:

  • 到了国外不需要对NetworkManager的connectivity check使用的uri进行再次变更,所以就留着修改过的uri别动了。
  • 国内使用的DNS地址就加以注释一下吧,继续把之前在国外使用的几个nameserver取消注释:
    cat /etc/resolv.conf  
    # Generated by NetworkManager
    search 
    nameserver 
    nameserver 
    nameserver 
    #nameserver 119.29.29.29	
    

有什么问题可以在评论区留言,我不定期会抽空上线查看。
该教程未经本人允许请勿转载到其他平台,多谢 😃

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值