问:明明是香港、美国服务器,为什么还不能访问dockerHUB,安装docker镜像总是失败?
相关服务:香港服务器租用

答:这种问题主要发生在回国优化线路上,比如香港、美国的BGP优化线路、精品线路等。
我们之前也发生过这种情况,所以写了这篇文章作为笔记。
事情是这样的,原来ip还没有过移动联通电信的白名单,所以走的国际线路,访问一切海外东西都没问题,突然过白以后,进入了优化线路,很多用户就没办法安装docker的东西了。
经过好一番研究,原来回国优化线路,即便访问海外也是通过回国线路访问的,只不过就是没有拦截而已,这就造成了一个后果就是原来的海外的dns可能无法访问,比如谷歌的8.8.8.8,微软的114.114.114.114。而你出现这种问题,八成dns用的8.8.8.8、114.114.114.114,不信你的ubuntu系统执行这个命令看看dns是不是我说的
ubuntu系统
#老版本
systemd-resolve --status
#新版本也可以这个
resolvectl status
centos系统
cat /etc/resolv.conf
解决方案:
修改dns为国内可以访问的更好的dns。目前推荐的dns有以下:
| 服务商 | IPv4地址 | 特点 |
|---|---|---|
| Cloudflare DNS | 1.1.1.1 | 注重隐私和速度,全球节点多,适合国际访问 |
| IBM Quad9 DNS | 9.9.9.9 | 具备安全特性,能自动屏蔽恶意网站 |
| OpenDNS | 208.67.222.222 | 提供内容过滤等附加功能 |
我这里推荐cf的dns为第一位,IBM的补位,还有一个名额的话,比如ubuntu等系统可以设置3个dns的,第3个推荐谷歌的8.8.8.8
具体操作步骤
ubuntu22/24系统修改dns方法(全局替换)
注意:该方法永久生效,不会开关机就重置dns了
1、打开文件
/etc/systemd/resolved.conf
2、修改内容
将里面的[Resolve]下面的全部内容替换为下面的,不用担心出问题,因为它本身就是前面带#全部注释,没有用处的。
[Resolve]
DNS=1.1.1.1 9.9.9.9
FallbackDNS=8.8.8.8
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=yes
#DNSStubListener=yes
3、重启服务
保存修改后,重启systemd-resolved服务。
sudo systemctl restart systemd-resolved
centos7.9/8stream等全部通用修改dns
1、打开网卡配置文件
# 查看网卡名称
ip addr
# 查看配置文件(通常位于 /etc/sysconfig/network-scripts/)
ls /etc/sysconfig/network-scripts/ifcfg-*
2、编辑网卡配置文件
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens192 # 替换为您的网卡名
3、修改或添加以下内容
# 确保有以下配置
BOOTPROTO=none # 或者 static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.1.100 # 您的服务器IP
PREFIX=24
GATEWAY=192.168.1.1 # 您的网关
DNS1=1.1.1.1
DNS2=9.9.9.9
DNS3=8.8.8.8
4、重启网络服务
sudo systemctl restart NetworkManager
# 或者
sudo nmcli connection reload