Ubuntu 禁用IPv6或优先使用IPv6的方法笔记

为什么vps提供ipv6地址我却要禁用?因为vps自身提供的ipv4地址是属于美国原生地址,支持美区大部份媒体解锁,但ipv6却不支持相应解锁,Netflix只能看自制剧。就算在操作系统上降低ipv6的优先使用率,但是在线多媒体服务产还是会优先使用ipv6进行访问,所以干脆禁用vps的ipv6地址算了,于是就有了本文的记录:Ubuntu 禁用IPv6的方法。

禁用ipv6后,在netflix可以看第三方制造视频,第三方制作的影片无Netflix图标,爽,如下图所示:

Ubuntu 禁止加载 IPv6 模块

1、检查是否启用了 IPv6

如果启用了 IPv6,会看到以下类似 inet6 xxx 内容,如下所示:
[root@Ubuntu:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 56:00:02:8f:cf:64 brd ff:ff:ff:ff:ff:ff
inet 45.63.*.*/23 brd 45.63.11.255 scope global dynamic ens3
valid_lft 86270sec preferred_lft 86270sec
inet6 fe80::5400:2ff:**8f:**64/64 scope link
valid_lft forever preferred_lft forever

2、修改 vi /etc/sysctl.conf 文件

在最后添加以下内容
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

按esc键后输入:wq保存退出。

3、执行 sysctl -p 使设置生效,会显示以下类似内容:

[root@Ubuntu:modprobe.d]# sysctl -p
net.ipv6.conf.all.accept_ra = 2
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

以上2-3步骤也可以用以下代码替代,意思是一样的:

echo " ">>/etc/sysctl.conf
echo "# made for disabled IPv6 in $(date +%F)">>/etc/sysctl.conf
echo 'net.ipv6.conf.all.disable_ipv6 = 1'>>/etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1'>>/etc/sysctl.conf
echo 'net.ipv6.conf.lo.disable_ipv6 = 1'>>/etc/sysctl.conf
tail -5 /etc/sysctl.conf
sysctl -p
netstat -anptl

4、创建 /etc/rc.local 文件

上一步已经禁用了 IPv6,但是重启后会复原。要想重启后也禁用,则必须做这一步。

[root@Ubuntu:~]# vim /etc/rc.local

填入内容:
#!/bin/bash
# /etc/rc.local
/etc/sysctl.d
/etc/init.d/procps restart
exit 0

按esc键后输入:wq保存退出。

6、授权文件可执行:
[root@Ubuntu:~]# chmod 755 /etc/rc.local

7、验证是否生效

重启后执行 ip a 验证,类似以下后馈,无ipv6代表成功。

[root@Ubuntu:~]# reboot
...
[root@Ubuntu:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 56:00:02:8f:cf:64 brd ff:ff:ff:ff:ff:ff
inet 45.63.*.*/23 brd 45.63.*.* scope global dynamic ens3
valid_lft 86332sec preferred_lft 86332sec

文章结束,不知是不是错觉,禁止IPV6之后访速国外速度有所提升。文章底部这个DMIT推广,是少有提供原生ipv4的vps供应商,速度超好,缺点就是贵,该懂的都懂了吧。

为什么又要优先使用IPv6呢?因为国外很多网站都已支持IPv6,如果用IPv6地址进行访问会快不少。

在 /etc/gai.conf 中取消这一行配置的注释就是IPv4优先,否则是IPv6优先(默认带#)。重点:取消#注释为IPv4优先。

取消掉这个注释:

sed -i "s/#\?precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 100/" /etc/gai.conf

推荐下面这种(最推荐的是手动改)

直接加一行到最后
echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf

删掉(恢复系统默认)
sed -i "/^precedence ::ffff:0:0\/96 100/d" /etc/gai.conf
改变是即时生效的

判断,看看是IPv4还是IPv6就知道了,返回是IPv6地址就是IPv6优先了(任意一个双栈的都可以)。
curl ip.sb
curl ip.gs

Ubuntu 禁用IPv6或优先使用IPv6的方法笔记》有5个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注