##物理口
###client端设置:

######1、sysctl 修改内核参数,使能接口ipv6,是能全局ipv6转发,使能接口 accept_ra。

# 是能接口ipv6,默认 disable
net.ipv6.conf.eth2.disable_ipv6 = 0
# 允许接口接受ra报文,Obtain IPv6 address on wan interface by Stateless autoconfiguration (SLAAC)
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.eth2.accept_ra = 2
net.ipv6.conf.eth2.autoconf = 1
# 测试需要,不使用临时地址
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0

######2、修改/etc/sysconfig/network

NETWORKING_IPV6=yes

######3、修改 /etc/sysconfig/network-scripts/ifcfg-eth2(可以不做持久化)

DEVICE=eth2
ONBOOT=yes
NETBOOT=yes
NM_CONTROLLED=no
PEERDNS=yes
#BOOTPROTO=dhcp # 打开这个可以同时获取ipv4和ipv6地址
BOOTPROTO=dhcp6  # 打开这个只会获取ipv6的地址
DHCPV6C=yes
IPV6INIT=yes
IPV6_AUTOCONFIG=yes

######4、dhclient 的使用.
需要使用dhcp分配地址或域名等配置是需要使用dhclient,否者不需要,如slaac方式获取地址又静态配置dns等other infomation的情况,不需要任何dhcp的协商,只需要打开RA接受开关即可。
PPPoE的情况下,dhclient 作用在ppp口上即可,其他类似。

编码 测试
接受地址和other infomation dhclient -6 eth2 --no-pid -nw dhclient -6 eth2 --no-pid -v
不接受地址,只接受other infomation。如静态配置ipv6地址,只需要dns地址等时候 dhclient -6 -S eth2 --no-pid -nw dhclient -6 -S eth2 --no-pid -v

server端 dnsmasq配置

######1、配置/etc/sysconfig/network

NETWORKING_IPV6=yes

######2、内核参数,使能接口ipv6

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.eth2.disable_ipv6 = 0

######3、dnsmasq配置
无论是Autoconf、dhcp stateless、dhcpstateful都需要用到RA消息,告诉client能过提供的能力,RA报文由dnsmasq根据配置文件构造。RA消息报文可以包含的一些flag,这些flag会反应在dnsmasq的配置上,决定client端地址分配的方式:

IPv6 Router Advertisement (RA) messages can contain the following flags:* M (“Managed address configuration”) – indicates that IPv6 addresses are available via DHCPv6. This is also referred to as Stateful DHCP.
* O (“Other configuration”) – no IPv6 address, but other configuration information like DNS etc. are available via DHCPv6. This is also referred to as Stateless DHCP.
* A (“Autonomous Address Configuration”) – indicates that the prefix present with the flag can be used for SLAAC (StateLess Auto Address Configuration).

M flag表示Server能过分配ipv6地址和其他配置(如dns等),O标记表示只分配其他配置, 所以M和O同时设置O实际上没啥用。A表示让Client通过发过去的Prefix自己生成地址。A和M同时设置时,Client会生成两个地址。

dnsmasq的flag标记设置在 dhcp-range配置项中。
i) dhcp-range 无ra配置(dhcpv6 statefull)
默认情况下,enable-ra之后的默认行为解释如下:

# Do router advertisements for all subnets where we're doing DHCPv6
# Unless overridden by ra-stateless, ra-names, et al, the router
# advertisements will have the M and O bits set, so that the clients
# get addresses and configuration from DHCPv6, and the A bit reset, so the
# clients don't use SLAAC addresses.

理解为 RA设置了M 和 O flag,未设置A flag,ipv6地址和参数都是由dhcp从地址池中分配。

测试效果:
可以看到client从地址池中分到了一个ipv6地址。
注: M和O标记出发的dhcp协商需要client端触发dhcp SOLICIT申请地址,如通过 dhclient -6 -v eth2。

# dnsmasq.conf
interface=eth2
# ipv4
dhcp-range=eth2,20.3.3.100,20.3.3.200,86400
dhcp-option=eth2,3,20.3.3.1
dhcp-option=eth2,1,255.255.255.0
dhcp-option=eth2,6,114.114.114.114# set M O flag,reset A flag
dhcp-range=fd00::22, fd00::44, 64, 1h
enable-ra
ra-param=eth2,10                // ra 发送间隔
# client:
# ip addr ls dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:f4:6b:67 brd ff:ff:ff:ff:ff:ffinet6 fd00::23/64 scope global dynamicvalid_lft 3596sec preferred_lft 3596secinet6 fe80::a00:27ff:fef4:6b67/64 scope linkvalid_lft forever preferred_lft forever

ii) ra-only (slaac)
Do Router Advertisements, BUT NOT DHCP for this subnet.
可以理解为,RA设置了A flag,没有M和O flag,效果应该是一个纯粹的 SLAAC地址分配方式。

测试效果:
可以看到client端自动获取到一个前缀 是fd00:: 的SLAAC地址(前缀+EUI-64)。

# dnsmasq.conf
interface=eth2
# ipv4
dhcp-range=eth2,20.3.3.100,20.3.3.200,86400
dhcp-option=eth2,3,20.3.3.1
dhcp-option=eth2,1,255.255.255.0
dhcp-option=eth2,6,114.114.114.114# no M or O flags; only A flag
dhcp-range=fd00::, ra-only
enable-ra
client:
# ip addr ls dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:f4:6b:67 brd ff:ff:ff:ff:ff:ffinet6 fd00::a00:27ff:fef4:6b67/64 scope global mngtmpaddr dynamicvalid_lft 3440sec preferred_lft 3440secinet6 fe80::a00:27ff:fef4:6b67/64 scope linkvalid_lft forever preferred_lft forever

iii) ra-stateless (dhcpv6 stateless)
解释如下

# Do Router Advertisements and stateless DHCP for this subnet. Clients will
# not get addresses from DHCP, but they will get other configuration information.
# They will use SLAAC for addresses.

理解为设置了 O、A flag,未设置M flag。
`
测试效果:
通过slaac设置ipv6地址,通过dhcp设置了dns。

# dnsmasq.conf
interface=eth2
# ipv4
dhcp-range=eth2,20.3.3.100,20.3.3.200,86400
dhcp-option=eth2,3,20.3.3.1
dhcp-option=eth2,1,255.255.255.0
dhcp-option=eth2,6,114.114.114.114# ipv6
# n only O and A flags; no M flag
dhcp-range=fd00::, ra-stateless
enable-ra
# 支持分配 dns-server
dhcp-option=option6:dns-server,[240c::6666],[240c::6644]
client:
# ip addr ls dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:f4:6b:67 brd ff:ff:ff:ff:ff:ffinet6 fd00::a00:27ff:fef4:6b67/64 scope global mngtmpaddr dynamicvalid_lft 3440sec preferred_lft 3440secinet6 fe80::a00:27ff:fef4:6b67/64 scope linkvalid_lft forever preferred_lft forever# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 240c::6666
nameserver 240c::6644

iv) slaac
理解为设置了M、A flag,未设置O flag。
也就是说接口会得到两个ipv6地址,其中一个slaac地址,一个dhcp地址。
测试效果:
通过slaac设置ipv6地址,通过dhcp设置了dns。

# dnsmasq.conf
interface=eth2
# ipv4
dhcp-range=eth2,20.3.3.100,20.3.3.200,86400
dhcp-option=eth2,3,20.3.3.1
dhcp-option=eth2,1,255.255.255.0
dhcp-option=eth2,6,114.114.114.114# ipv6
# n only O and A flags; no M flag
dhcp-range=fd00::22, fd00::44, slaac
enable-ra
# 支持分配 dns-server
dhcp-option=option6:dns-server,[240c::6666],[240c::6644]
client:
# ip addr ls dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:f4:6b:67 brd ff:ff:ff:ff:ff:ffinet6 fd00::23/64 scope global dynamicvalid_lft 3595sec preferred_lft 3595secinet6 fd00::a00:27ff:fef4:6b67/64 scope global mngtmpaddr dynamicvalid_lft 3588sec preferred_lft 3588secinet6 fe80::a00:27ff:fef4:6b67/64 scope linkvalid_lft forever preferred_lft forever# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 240c::6666
nameserver 240c::6644

总结:

配置 flag
default set O and M flag, reset A flag
ra-only set A, reset M and O
slaac if a DHCPv6 range is specified then M and A flags; else only A flag
ra-stateless set O and A, reset M
ra-names set A, reset M and O

pppoe ipv6

###client
使用eth3拨入pppoe server。
配置ppp0接收ra配置。

net.ipv6.conf.ppp0.accept_ra = 2

配置支持ipv6cp协商

# cat /etc/ppp/options
lock
+ipv6 ipv6cp-use-ipaddr

配置认证用户名密码

# cd /etc/ppp
# cat pap-secrets
# Secrets for authentication using PAP
# client    server  secret          IP addresses
"sheng"   *   "sheng"
# cat chap-secrets
# Secrets for authentication using CHAP
# client    server  secret          IP addresses
"sheng"   *   "sheng"

测试:
i) pppoe-setup命令设置好pppoe基本信息,之后会生成ppp0接口配置文件:

# cat  /etc/sysconfig/network-scripts/ifcfg-ppp0
USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp0
DEVICE=ppp0
TYPE=xDSL
ONBOOT=no
PIDFILE=/var/run/pppoe-adsl.pid
FIREWALL=NONE
PING=.
PPPOE_TIMEOUT=80
LCP_FAILURE=3
LCP_INTERVAL=20
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=60
DEFROUTE=yes
SYNCHRONOUS=no
ETH=eth3
PROVIDER=DSLppp0
USER=sheng
PEERDNS=yes
DEMAND=no

ii) pppoe-stop ; pppoe-start 命令完成拨号和下线。
默认会得到一个link local地址和一个slaac地址。
流程简单描述为,ppp完成ipv6cp协商后两边得到不重复的interface id,用来生成两边的link local地址,然后client然后发起RS请求,pppoe-server端回RA,client端根据RA的prefix等信息生成slaac地址。
结果如下:

# ip addr
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:c2:27:6c brd ff:ff:ff:ff:ff:ff
31: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3link/pppinet 192.168.5.219 peer 192.168.5.100/32 scope global ppp0valid_lft forever preferred_lft foreverinet6 2020:db8:2:0:e52f:7cf9:b3b3:2184/64 scope global mngtmpaddr dynamicvalid_lft 86395sec preferred_lft 14395secinet6 fe80::e52f:7cf9:b3b3:2184/10 scope linkvalid_lft forever preferred_lft forever

如果需要想dhcp申请ipv6地址。
测试: dhclient -6 -v ppp0

# ip addr
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:c2:27:6c brd ff:ff:ff:ff:ff:ffinet6 fe80::9526:8dca:25b8:a2c8/64 scope linkvalid_lft forever preferred_lft forever
31: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3link/pppinet 192.168.5.219 peer 192.168.5.100/32 scope global ppp0valid_lft forever preferred_lft foreverinet6 2020:db8:2::12/64 scope global dynamicvalid_lft 3749sec preferred_lft 2749secinet6 2020:db8:2:0:e52f:7cf9:b3b3:2184/64 scope global mngtmpaddr dynamicvalid_lft 86396sec preferred_lft 14396secinet6 fe80::e52f:7cf9:b3b3:2184/10 scope linkvalid_lft forever preferred_lft forever
# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 2001:db8:2::dead:beef
nameserver 2001:db8:2::cafe:babe

附pppoe-server配置:
太多了,参考 https://www.dazhuanlan.com/an__he/topics/1005802 吧。
完全按照上面的做有问题,有几个地方在调试过程中改了一下,最终ok。
i) /etc/ppp/options 不能增加 " ipv6 ,"配置,否则申请不到地址。删掉就ok了。

[root@localhost ~]# cat /etc/ppp/options
#lock
local
#ipv6 ,

ii) radvd监听的接口我改成了ppp0

# cat /etc/radvd.conf
interface ppp0                #接你拨号上网的网卡名称
{AdvSendAdvert on;           #启用路由器公告(RA)功能MinRtrAdvInterval 5;       #每隔30-100秒间隔发送公告消息MaxRtrAdvInterval 10;AdvManagedFlag on;         # M值AdvOtherConfigFlag on;      # O值prefix 2020:db8:2::/64      #发送的前缀信息{AdvOnLink on;AdvAutonomous on;       #公告的前缀可用来自动位置配置AdvRouterAddr on;};
};

f
iii) kea的配置文件,interface配置也改成了ppp0。

"Dhcp6": {// Add names of your network interfaces to listen on."interfaces-config": {// You typically want to put specific interface names here, e.g. eth0// but you can also specify unicast addresses (e.g. eth0/2001:db8::1) if// you want your server to handle unicast traffic in addition to// multicast. (DHCPv6 is a multicast based protocol)."interfaces": ["enp0s10", "ppp0", "*" ]},
......"subnet6": [{
"subnet": "2020:db8:2::/64",
......
"interface":"ppp0"......

dnsmasq-ipv6测试相关推荐

  1. IOS的IPV6测试

    公司里的iOS审核过程,遇到AppStore审核测试过程IPV6测试不通过. 如果IPV6测试通过,审核通过的几率会大有提升.只有在IPv6环境下运行成功,才能保证我们的App万无一失的通过审核并上线 ...

  2. 本地 Mac 搭建 IPv6 测试环境

    http://blog.csdn.net/potato512/article/details/51680203 搭建 IPv6 测试环境说白了就是用 Mac 做一个热点,然后用 iPhone 连接这个 ...

  3. 重庆宽带公网IPv6测试

    重庆在今年已经全面部署IPv6,不论是手机基站业务还是宽带有线业务都可以从运营商那里获取到公网IPv6地址. 这里我着重测试有线宽带IPv6业务.手机基站业务可以访问http://test-ipv6. ...

  4. android ipv6测试,android ipv6网络下测试app运行状态测试

    这个问题我足足研究了两天,才有了一点思路,现在我把我的心路历程写下来,给大家分享下23. 1.什么是ipv6,自己百度 2,它和ipv4的区别,也是没啥用自己搜 3.app怎么适配ipv6. 首先访问 ...

  5. 本地如何搭建IPv6环境测试你的APP

    IPv6的简介 IPv4 和 IPv6的区别就是 IP 地址前者是 .(dot)分割,后者是以 :(冒号)分割的(更多详细信息自行搜索). PS:在使用 IPv6 的热点时候,记得手机开 飞行模式 哦 ...

  6. 网站开启 IPv6 访问,测试是否支持 IPV6

    一.分配 IPv6 地址 如果你的服务器支持 IPv6 ,但是在创建的时候没有添加 IPv6 地址,请先添加后再操作. 不同服务器厂商添加方法可能不一样,可咨询客服. 根据IPv6 规范,必须要有两个 ...

  7. VLC测试IPv4 IGMP/IPv6 MLD协议

    1 简述 VLC既可以充当流客户端,又可以充当流服务器,并且可以跨平台使用,是一款开源.免费的软件,基于GNU GPL许可证. 2 搭建组播服务器 第一步:运行程序后选择"媒体  串流&qu ...

  8. IPV4、IPV6地址正则HTA测试工具

    1.IPV4地址 网际协议版本4(Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本. ...

  9. [SDX12]隐藏显示dnsmasq的版本号信息,使其使用nmap无法扫描到版本信息方法实现

    安装nmap 获取vulscan漏洞库 git clone https://github.com/scipag/vulscan scipag_vulscan 安装nmap sudo apt-get i ...

  10. (DNS)dnsmasq部署DNS

    转自:https://www.hi-linux.com/posts/30947.html Dnsmasq提供DNS缓存和DHCP服务.Tftp服务功能.作为域名解析服务器(DNS),Dnsmasq可以 ...

最新文章

  1. 【数字信号处理】序列傅里叶变换 ( 傅里叶变换物理意义 | 反应信号在整个数字角频率上的能量分布 )
  2. JVM调优:GC标记清除回收算法
  3. 用FRP,内网端口映射到外网,记录
  4. 小程序入门学习08--云开发01
  5. GitHub上IOS开源项目
  6. Python网络数据采集1(译者:哈雷)
  7. 惊艳的成长计划表刷屏!武大首位 94 年博士入职华为,年薪达 201 万
  8. 读书笔记-计算机视觉
  9. C++实现 1432. 棋盘挑战
  10. 系统业务逻辑书籍_企业应该如何建立自己的分销系统和分销团队
  11. android 镂空字体下载,Android——自定义镂空掩饰控件
  12. c语言程序设计呼克佑第二版课后答案,《程序设计技术》实验大纲-呼克佑
  13. 大数据软件应用举例商圈分析城市管理
  14. ioctl -构造命令编号 _IO,_IOW,_IOR,_IOWR
  15. JSP中连接数据库时的一些心得体会
  16. windows 远程桌面连接 用户账户限制
  17. MySQL执行过程及执行顺序
  18. IPMItool: IPMI 管理工具
  19. vue的路由踩坑坑……之路(<router-link/>,<router-view/>)之router-link跳转时浏览器的路径是正确的,而router-view却不渲染数据???
  20. Vue3.0+TypeScript+Vite

热门文章

  1. alienware Win8 系统安装
  2. 红米note3android5.0,小米红米note3MOSBeta5.0安卓8.1.0来去电归属农历等本地化增强适配...
  3. 基于Netty的RPC架构学习笔记(五):netty线程模型源码分析(二)
  4. 双显示器LOL加载游戏提示error无法初始化图形设备解决方法
  5. 服务器sni协议,关于 https 的 SNI(Sever Name Indication) 问题记录
  6. 安装Sublime Text 3插件的方法:
  7. 虚拟机与Linu系统安装与配置详细教程
  8. 3分钟tips:高斯分布和高斯积分的关系
  9. Python在导入文件时的FileNotFoundError解决办法
  10. 抖音超火JavaScript实现网红太空人表盘 ~看程序员是如何用代码做华为太空手表