Linux增加双栈(增加vps IPv6地址)
Linux增加双栈(增加vps IPv6地址)
国外购买的便宜vps只有一个IPv4的公网IP,想要增加一个IPv6的IP(本文只针对购买的vps没有IPv6的地址)
IPv6可以干什么
- 解决VPS频繁Google人机验证(IP被ban)
- 解锁奈非
- .....
申请免费的IPv6隧道(Tunnelbroker)
首先申请一个免费的IPv6隧道,这里我使用的是Tunnelbroker,免费简单好用。
- 申请账号的过程非常简单,输入一些虚拟的个人信息就行,直接胡编乱填就行了,或者在虚拟外国身份站点上随机一个身份信息,填好邮箱接受邮箱验证就完事了。
- 申请IPv6隧道
在 Tunnel Details 页面可以看到创建的 IPv6 隧道的详细信息,其中 Client IPv6 Address 是申请到公网 IPv6 地址。
- 配置IPv6到vps
- 获取配置示例
在 Tunnel Details 页面有个 Example Configuration 选项卡,在这里你可以选择合适的配置示例。就比如这里有 Debian/Ubuntu 的 interfaces 配置文件示例:
只要基于 Debian 的发行版和使用 interfaces 配置文件的系统理论上都可以使用。其它不兼容的发行版则可以使用Linux-net-tools
或Linux-route2
示例手动输入命令。centos推荐使用Linux-net-tools
- 配置VPS
将 he-ipv6 配置文件添加到/etc/network/interfaces.d/
目录下。下面是一把梭命令示例,根据实际情况替换文本。
sudo tee /etc/network/interfaces.d/he-ipv6 <<EOF
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:xxx:xxxx:xxxx::2
netmask 64
endpoint 216.66.84.46
local 233.233.233.233
ttl 255
gateway 2001:xxx:xxxx:xxxx::1
EOF
TIPS: 如果是 NAT VPS 或 VPC 内网方案则需要将local字段后面的公网 IP 替换为内网 IP (获取命令:ip route get 8.8.8.8 | grep -oP 'src \K\S+')。
- 启用 IPv6 隧道
# 安装网络工具包
sudo apt update
sudo apt install net-tools iproute2 -y
# 启动`he-ipv6`网络接口
sudo ifup he-ipv6
TIPS:若提示 ifup: unknown interface he-ipv6 ,则添加source /etc/network/interfaces.d/到/etc/network/interfaces文件(一把梭命令:echo 'source /etc/network/interfaces.d/' >>/etc/network/interfaces)后重试,正常情况下无输出。
- 启用后执行 ifconfig 命令,这时应该有一个 he-ipv6 接口,类似下面这样:
he-ipv6: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1480
inet6 2001:xxx:xxxx:xxxx::2 prefixlen 64 scopeid 0x0<global>
inet6 fe80::xxxx:xxxx prefixlen 64 scopeid 0x20<link>
sit txqueuelen 1000 (IPv6-in-IPv4)
RX packets 11605 bytes 3127821 (3.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13811 bytes 2403522 (2.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 重启网络
sudo systemctl restart networking
- DNS 设置
编辑/etc/resolv.conf
文件,更改 DNS 解析服务器为支持查询 AAAA 记录的 DNS 服务器,比如 Google Public DNS。
nameserver 8.8.8.8
nameserver 8.8.4.4
禁用IPv6隧道(删除 IPv6 隧道)
# 停用隧道
sudo ifdown he-ipv6
# 删除 he-ipv6 网络接口配置文件(若没有删除重启后会自动启用)
sudo rm -f /etc/network/interfaces.d/he-ipv6
双栈优先使用IPv4配置
虽然目前很多网站或服务都已经增加IPv6,但是各家的IPv6使用上并不一定畅通。所以我们要设置一下让IPv4作为默认的连接方式。但是根据RFC3484协议Linux默认情况下IPv6优先级高于IPv4,应用程序优先使用IPv6地址。
- 如果要使用ipv4连接优先也不禁用IPv6,需要修改
gai.conf
配置文件使其生效。编辑/etc/gai.conf
文件,查找precedence ::ffff:0:0/96 100
将前面的注释 # 去掉并保存,如果前面没有 # 号表示已经更改过设置了。如果没有查找到该行直接在文件末尾添加上precedence ::ffff:0:0/96 100
注:
CentOS默认没有/etc/gai.conf
该文件,可以执行命令
cp -p /usr/share/doc/glibc-common-2.17/gai.conf /etc/
拷贝该文件后修改。修改完成保存生效。这样设置后有IPv4的话优先使用IPv4,也不影响IPv6的使用。
注:::ffff:0:0/96 为IPv4/IPv6转换地址 (IPv4-mapped IPv6 address)。
- 测试配置是否生效
curl ifconfig.me
测试IPv6是否接入成功
终端测试是否成功配置好IPv6
# 国内
ping6 www.baidu.com
# 国外
ping6 www.google.com
科学上网可以连接上配置IPv6的vps访问如下网址:IPv6测试
禁用IPv6
如果确实不需要IPv6,我们可以禁用IPv6
执行命令:
echo "1" > /proc/sys/net/ipv6/conf/all/disable_ipv6
这样就掉了禁用ipv6,如需恢复的话删除掉
/proc/sys/net/ipv6/conf/all/disable_ipv6
这个文件就可以。
参考:
优先使用IPv4原理解析
IPv6测试