Linux 关于IPV6 无法使用 wget 和 curl 的解决方案,设置 DNS ,且重启后不失效

长话短说,首先检查DNS问题

/etc/resolv.conf 

没有的话添加如下:

nameserver 8.8.8.8
nameserver 114.114.114.114

然后测试是否能 ping 通

ping -c 4 baidu.com
#正确返回如下
64 bytes from 123.125.115.110: icmp_seq=1 ttl=50 time=26.6 ms
64 bytes from 123.125.115.110: icmp_seq=3 ttl=50 time=26.4 ms
64 bytes from 123.125.115.110: icmp_seq=4 ttl=50 time=26.2 ms

然后发现 curl 和 wget 均无法使用

wget  baidu.com
#返回如下:
--2019-03-01 09:12:16--  http://baidu.com/
Auflösen des Hostnamen »baidu.com (baidu.com)«... Auflösen des Hostnamen »bfehlgeschlagen: Temporärer Fehler bei der Namensauflösung.
wget: kann die Host-Adresse »baidu.com« nicht auflösen


curl https://stackoverflow.com/
#返回如下:
curl: (6) Could not resolve host: stackoverflow.com; Unbekannter Fehler

#但是使用
curl -4 www.baidu.com 
正常返回

然后搜索查找发现是 Linux 的IPV6 原因导致

 

解决方案很多,我使用的如下:

#第一步
vi /etc/sysconfig/network
#添加内容
NETWORKING_IPV6=no

#第二步,把ipv6本地主机名解析的注释掉
vi /etc/hosts
#::1   localhost localhost6 localhost6.localdomain6

#然后重启
reboot


PS:众所周知,重启了服务器和网络之后 DNS会失效。

那么我们使用以下方案来更改 DNS :

#进入自己的网卡配置目录
cd /etc/sysconfig/network-scripts/

#查找自己的网卡地址,一般是 ifcfg-eth 格式,然后修改它

vi ifcfg-eno1 

# Generated by dracut initrd
NAME="eno1"
DEVICE="eno1"
ONBOOT="yes"
NETBOOT="yes"
UUID="c0d17f25-34d3-49c9-23e9-3ca423c96d03"
IPV6INIT="yes"
BOOTPROTO="none"
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
IPADDR="192.168.11.33"
PREFIX="29"
GATEWAY="192.169.0.1"
DNS1="127.0.0.1"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"

在底部我们加入 dns :

#以下是 google 和 cloudfalre 的免费 dns,当然你也可以修改为其他的公共 dns
PEERDNS=no
DNS1=8.8.8.8
DNS2=1.1.1.1

然后进行重启网络:

systemctl start network.service
#或者
service network restart

再次 ping 测试成功

PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=50 time=204 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=50 time=205 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=50 time=205 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=4 ttl=50 time=204 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=5 ttl=50 time=205 ms

 

你可能感兴趣的:(linux)