Linux ipv6设置

一、IPV6简介

随着IPV4地址耗尽,运营商开始回收并推进IPV4大内网地址,基于IPV4的传统内网映射、动态域名即将失效;但同时我们也要看到,运营商的IPV6推进计划基本快要完成了,现在我们的宽带、手机流量、各大门户网站,其实都已经支持IPV6了。

IPV6地址优势和特点:

1.全局可达性和灵活性
2.网络地址聚合性更高
3.地址的多宿主特性
4.地址自动分配方式简单
5.更容易实现端到端通讯

IPV6分为:

IPV6单播地址
IPV6组播地址
IPV6任意播地址

ipv6的地址格式类似:XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX。它是128位的,一共8段,每段包含四个X,每个X是一个16进制(16=2^4)数(4位),因此一段XXXX是4*4=16位,8段一共128位。相邻字段用冒号分隔。

ipv6的IP包含三部分:

1)站点前缀:前三段(48位),通常由ISP或者区域网络注册机构分配的公共拓扑;
2)子网ID:第四段(16位),是站点的内部ID;
3)接口ID:最右侧的四段(64位),接口ID可以从MAC地址自动配置,也可手动配置。

IP示例:

2001:0db8:3c4d:0015:0000:0001:1a2f:1a2b

2001:0db8:3c4d是站点前缀,0015是子网ID,0000:0001:1a2f:1a2b是接口ID。

IPV6的简化表示法,每段中前面的0000可以省略,连续的多段0000可以省略为::,但只能出现一次。

案例:

1080:0:0:0:8:800:200c:417a -> 1080::8:800:200c:417a
Ff01:0:0:0:0:0:0:101 -> ff01::101
0:0:0:0:0:0:0:0 -> ::
0:0:0:0:0:0:0:1 -> ::1(代表ipv4中的127.0.0.1)
::ffff:10.3.69.93是支持IPV4映射过来的IPV6地址,它是在不支持IPV6的节点上用来表示IPV4节点,原ipv4地址为10.3.69.93

申请 IPv6 地址

1、在 tunnelbroker.net 上申请一个免费的 IPv6 地址。

1) 访问 tunnelbroker.net 注册一个自己的账号。

2) 创建IPV6隧道 

选择 Create Regular Tunnel 创建一个到自己公网 IP 的通道。(经本人测试,Tunnel Servers 可用 Tokyo, JP,Los Angeles, CA, US 可以配置,但实际网络环境不可用)。

输入服务器IP  然后选择 日本 点击下面的创建 ,经本人测试可用:

 

3) 找到 Example Configurations,选择操作系统对应的脚本(CentOS 7.x 选择 Linux-net-tools)

复制下来,在 linux 的控制台中执行脚本:

ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::66.220.15.43
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:4e0:d:e60::2/64
route -A inet6 add ::/0 dev sit1

注意:

  1. sit0代表你的设备
  2. 这里我的是eth0 (如果不知道可以执行 ifconfig 查看自己的设备名称 )
  3. 然后执行:

4) ping一下服务器的 IPv6 地址,看看是否工作正常(CentOS 上 IPv6 版的 ping 名为 ping6),如果通了就说明可以了:

ping6 2001:4e0:d:e60::2
PING 2001:4e0:d:e60::2(2001:4e0:d:e60::2) 56 data bytes
64 bytes from 2001:4e0:d:e60::2: icmp_seq=1 ttl=64 time=340 ms
64 bytes from 2001:4e0:d:e60::2: icmp_seq=2 ttl=64 time=348 ms
64 bytes from 2001:4e0:d:e60::2: icmp_seq=3 ttl=64 time=349 ms

2、修改 /etc/init.d/network 网卡的启动脚本, 系统重启时自动配置IPv6 tunnel

编辑脚本:

cp /etc/init.d/network /etc/init.d/network_backup
vi /etc/init.d/network

在 touch /var/lock/subsys/network 之前添加以下脚本:

# 添加 IPv6 脚本支持
ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::66.220.15.43
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:4e0:d:e60::2/64
route -A inet6 add ::/0 dev sit1
#修改结束

现在每次重启机器都可以自动分配好 IPv6 地址。

3、域名解析 ,使用 AAAA 记录设置 IPv6 

接下来就是ping6 域名了:

4、网站配置IPV6

为域名配置AAAA记录,A记录为IPV4地址,AAAA记录为IPV6地址,IP地址在我们购买VPS时会告诉我们。

为我们的web服务配置IPV6监听,比如我所使用的APPNODE面板需要单独为IPV6配置监听服务。

DNS同步需要一些时间,随后我们对域名进行ping测试,此时解析的已经是IPV6地址了。(注意,解析IPV6地址的前提是你的电脑也是IPV6):

正在 Ping 9sb.org [2a00:b700:2::9] 具有 32 字节的数据: 
来自 2a00:b700:2::9 的回复: 时间=134ms 
来自 2a00:b700:2::9 的回复: 时间=137ms 
来自 2a00:b700:2::9 的回复: 时间=134ms 
来自 2a00:b700:2::9 的回复: 时间=134ms

网页解析测试,按F12查看,此时网站为IPV6响应,配置完成。

5、 配置家庭宽带IPV6地址

IPV6号称可以为地球上的每一粒沙子配置IP地址,目前三大运营商的宽带和数据流量都已经配置公网IPV6了,但是很多家用路由器尚不支持IPV6,这里我以我的Padavan老毛子固件为例展示IPV6的配置。

如果使用路由器拨号,需要检查光猫是否开启了IPV6桥接,如果没有,百度一下,实在不行你就打客服嘛。

路由器设置,两步,配置完成后保存重启路由器,此时局域网内的设备都获取到了公网地址。

查看电脑IP地址:

此时ping外网地址已经通了:

正在 Ping 9sb.org [2a00:b700:2::9] 具有 32 字节的数据: 
来自 2a00:b700:2::9 的回复: 时间=134ms
来自 2a00:b700:2::9 的回复: 时间=137ms 
来自 2a00:b700:2::9 的回复: 时间=134ms 
来自 2a00:b700:2::9 的回复: 时间=134ms

进行IPV6测试,此网站可以确定我们IPV6的状态test-ipv6.com。

外网ping进来是不通的,不是说IPV6都是公网地址吗?为什么不通呢?

这里就要重点说一下,安全问题!

如果你仅仅是想要访问外部IPV6地址,那么配置到此就结束了,如果你确定你要将自己的内部网络配置为IPV6公网地址并直接暴露在互联网上,自愿承受因此带来的风险,勇士请继续看下去!

IPV6之所以不能被外网访问,是因为我们的设备还有至少三层防火墙。

第一层防火墙是电信运营商防火墙,出于安全考虑,运营商会阻断我们80、443、21等常见端口的流量,并限制UDP发包;我们是不能关闭运营商防火墙的,所以只能选择使用其他端口。

第二层防火墙是路由器内的防火墙,此防火墙默认配置为禁止外部访问,在这个默认状态下,我们的IPV6设备是安全的,等于还是处于内网之中;此防火墙可以关闭。

第三层防火墙是设备自身的防火墙,比如windows10默认就禁止了ping协议,即便是公网的机器也不能ping通;此时我们可以设置解除ping和开放端口。

关闭路由器防火墙(此时你必须明确,你已经没有内网保护了,你必须为自己的信息安全负责!)

关闭windows防火墙,或允许ping通过:

从外网ping内网设备地址,已经ping通了,此时内部设备全部为IPV6公网状态:

6、可使用以下网址测试服务器对 IPv6 的支持情况:

  1. chair6.net
  2. ipv6-test.com
  3. https://ipv6.jmu.edu.cn/

7、IPV6 DNS服务器

阿里ipv6 dns:2400:3200::1 / 2400:3200:baba::1

百度ipv6 dns:240c::6666

天地互连 ipv6 dns:240C::6666 240C::6644

谷歌 vip6 dns:2001:4860:4860::8888/2001:4860:4860::8844

二、Linux配置IPV6

开启IPV6模块

阿里云公开的 CentOS6和CentOS7 镜像将 IPv6 支持给去掉了,需要加载相关模块。

并且在内核目录下查找到一个文件:

但是不能编辑: 

1、修改 /etc/modprobe.d/disable_ipv6.conf(没有则创建),开启centos系统的IPV6功能

修改 options ipv6 disable 为 0:

cp /etc/modprobe.d/disable_ipv6.conf /etc/modprobe.d/disable_ipv6.conf_backup ##先备份原始配置

vi /etc/modprobe.d/disable_ipv6.conf

修改前:
alias net-pf-10 off
options ipv6 disable=1

修改后:
alias net-pf-10 off
options ipv6 disable=0

2、修改 /etc/sysconfig/network(没有则创建)

修改 NETWORKING_IPV6为yes:

cp /etc/sysconfig/network /etc/sysconfig/network_backup
vi /etc/sysconfig/network

修改前:
PEERNTP=no
NETWORKING_IPV6=no
GATEWAY=139.255.255.0

修改后:
PEERNTP=no
NETWORKING_IPV6=yes
GATEWAY=139.255.255.0

3、修改 /etc/sysconfig/network-scripts/ifcfg-eth0

添加 IPV6INIT 为 yes 和 IPV6_AUTOCONF 为 yes,主要是新增 IPV6ADDR 和 IPV6_DEFAULTGW 两部分, 网址根据情况配置IPV6INIT="yes"
IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy" IPV6ADDR=2001:250:4000:2000::53 IPV6_DEFAULTGW=2001:250:4000:2000::1等:

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0_backup
vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改前:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.1
NETMASK=255.255.254.0

修改后:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.1
NETMASK=255.255.254.0
IPV6INIT=yes
IPV6_AUTOCONF=yes

4、修改 /etc/sysctl.conf

修改 net.ipv6.conf.all.disable_ipv6 为 0, net.ipv6.conf.default.disable_ipv6 为 0 和 net.ipv6.conf.lo.disable_ipv6 为 0:

cp /etc/sysctl.conf /etc/sysctl.conf_backup
vi /etc/sysctl.conf

修改前:
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.conf.lo.arp_announce=2

修改后:
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv4.conf.lo.arp_announce=2

5、创建系统在启动时自动加载 IPv6 模块的脚本

创建脚本文件 ipv6.modules:

vi /etc/sysconfig/modules/ipv6.modules

!/bin/sh
if [ ! -c /proc/net/if_inet6 ] ; then
exec /sbin/insmod /lib/modules/uname -r/kernel/net/ipv6/ipv6.ko
fi

6、重启系统,加载 IPv6 模块

查看是否开启Ipv6:

lsmod | grep ipv6

果没有加载执行该命令加载:

modprobe ipv6

ifconfig查看是否有ipv6地址:

 查看 IPv6 模块:

ifconfig | grep -i inet6 #### 查看ipv6的信息,有看到输出就可以
  inet6 addr: fe80::x:x:x:x/64 Scope:Link
  inet6 addr: fe80::x:x:x:x/64 Scope:Link
  inet6 addr: x:x:x:x::2/64 Scope:Global
  inet6 addr: fe80::x:x/128 Scope:Link
  inet6 addr: ::1/128 Scope:Host

netstat –tuln查看服务监听的ip是否有ipv6格式地址: 

静态IPV6地址设置

打开/etc/sysconfig/network-scripts:

打开ifcfg-ensxxx配置静态ipv6地址:

IPV6INIT=“yes”              //是否开机启用IPV6地址
IPV6_AUTOCONFI=“no”         //是否使用IPV6地址的自动配置
IPV6ADDR=“2001:da8:8003:801:10:3:71:220”          //IPV6地址
IPV6DEFAULTGW=“2001:da8:8003:801::1%ens192”       //IPV6地址网关
IPV6_FAILURE_FATAL=no       //如果配置失败,不会关闭网口,保证IPV4的配置还能生效

配置完成后重启生效:

service network restart

配置完成后使用ssh/scp/rsync/ping命令不在需要指定网卡名。

CentOS5 IPV6配置:

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.73.1.255
HWADDR=00:0C:29:2C:16:24
IPADDR=192.73.1.45
IPV6ADDR=2021:1:14:18::45/64
IPV6_DEFAULTGW=2021:1:14:18::1
IPV6INIT=yes
IPV6_AUTOCONF=no
NETMASK=255.255.254.0
NETWORK=192.73.0.0
ONBOOT=yes
vim /etc/resolv.conf
search 0.5.4a3
nameserver 218.30.19.40
nameserver 114.114.114.114
vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=2.0.5.4a3
GATEWAY=192.73.0.1
IPV6_DEFAULTGW=2021:1:14:18::1%eht0

CentOS6 IPV6配置:

IPV6地址为2020:2500:4000:2000::88,前缀64。网关为2020:2500:4000:2000::1

vim ifcfg-ens33
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.73.1.46
GATEWAY=192.73.0.1
NETMASK=255.255.254.0
DNS1=218.30.19.40
DNS2=114.114.114.114
IPV6INIT=yes
IPV6ADDR=2021:5:6:2000::47/64
IPV6_DEFAULTGW=2021:5:6:2000::1
PREFIX=23
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
HWADDR=00:0C:29:7F:E8:55

Centos7 IPV6配置:

vim ifcfg-ens33

PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="daf72edb-d29f-453a-beca-e2396b4dbbf2"
DEVICE="ens33"
ONBOOT="yes"
IPV6ADDR=2020:2500:4000:2000::58/64
IPV6_DEFAULTGW=2020:2500:4000:2000::1/64
IPADDR=192.73.1.45
GATEWAY=192.73.0.1
NETMASK=255.255.254.0
DNS1=218.30.19.40
DNS2=114.114.114.114
IPV6_PRIVACY=no
ZONE=public

增加网关:

vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
GATEWAY=192.73.0.1
IPV6_DEFAULTGW=2021:5:6:2000::1%ens33

添加IPV6 DNS:

vim /etc/resolv.conf

# Generated by NetworkManager
search localdomain
nameserver 218.30.19.40
nameserver 114.114.114.114
nameserver 2400:3200:baba::1
nameserver 240c::6666

添加IPV6路由:

route -A inet6 add default gw 2020:2500:4000:2000::1/64 dev eth0
route -A inet6 -n
route -A inet6 del 2020:2500:4000:2000::/64

关闭防火墙:

service ip6tables stop

测试:

C:\Users\Lenovo>ping -6 fe80::14cc:7f77:da11:3ef1%9     // ping -6 目标机IPv6%本机IPv6端口
C:\Users\Lenovo>ping6  fe80::8db7:57f0:78fe:f6d2%ens33  // ping6 目标机IPv6%本机IPv6端口

访问:

http://[2020:2500:4000:2000::58]:8080/

Windows和Linux互相ping通:

windows和linux之间相互ping通,需要DNS一样都为240c::6666,并且Linux要设置IPV6地址为手动。

windows7:

2021:5:6:2000::45
64
2021:5:6:2000::1      
240c::6666
2400:3200:baba::1

Linux:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
#UUID="f2182a02-5fa2-4dba-aea3-6a16692ae005"
DEVICE=ens33
ONBOOT=yes
IPADDR=192.73.1.47
PREFIX=23
HWADDR=00:0C:29:01:14:18
GATEWAY=192.73.0.1
DNS1=218.30.19.40
DNS2=114.114.114.114
IPV6ADDR=2021:5:6:2000::47/64
IPV6_DEFAULTGW=2021:5:6:2000::1
IPV6_PRIVACY=no
DNS3=240c::6666
UUID=c96bc909-188e-ec64-3a96-6a90982b08ad

测试:

ping -6 2021:5:6:2000::47
ping6 2021:5:6:2000::45
https://[2021:5:6:2000::45]:3000/login.html

CentOS7:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=fcd4e886-2dec-4475-877e-0446fd5efeeb
DEVICE=ens33
ONBOOT=yes
IPADDR=192.73.1.47
PREFIX=23
GATEWAY=192.73.0.1
DNS1=218.30.19.40
DNS2=114.114.114.114
IPV6ADDR=2021:5:6:2000::47/64
IPV6_DEFAULTGW=2021:5:6:2000::1
DNS3=240c::6666
IPV6_PRIVACY=no     
vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 218.30.19.40
nameserver 114.114.114.114
nameserver 240c::6666

windows7:

2021:5:6:2000::49
64
2021:5:6:2000::1
240c::6666
2400:3200:baba::1

测试:

ping6 2021:5:6:2000::49
ping -6 2021:5:6:2000::47

配置临时IPV6地址

配置临时的IPV6地址,配置的地址在系统重启或者网卡重启后失效:

ifconfig eth0 inet6 add 2001:250:250:250:250:250:250:222/64 

为网卡ethX添加IPV6网关,配置的网关在系统重启或者网卡重启后失效:

route -A inet6 add default gw 2001:250:250:250::1 dev ethX

ping 一个可连通的IPV6地址:

ping6 2001:250:250:250:250:250:250:222

查看ipv6地址

cat /proc/net/if_inet6

 

三、IPV6通信

 1、ping命令

ping6/ping -6 ipv6地址%网络的网段名
ping6/ping -6 ipv6地址 -I 网络网段名

2、 ssh命令

ssh  用户名@Ipv6地址%网段名
ssh fe80::20c:29ff:feb1:bc32%ens192

3、scp命令 

scp 文件 [ipv6地址]:需要拷贝的路径
scp -r mysql-libs.zip [fe80::20c:29ff:fe47:8073%ens32]:/root

4、rsync命令

rsync –itv 文件 [ipv6地址%网段名]:拷贝路径
rsync -rtv kafka_2.11 [fe80::20c:29ff:fe47:8073%ens32]:/root/test

 

5、获取网卡名 

cat /proc/net/dev| awk '{i++;if(i>2){print $1}}'|awk -F ':' '{print $1}'|grep -v -E 'docker|flannel|lo|veth'

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/126209898