Linux下配置IPV6,C程序适配IPV6
Linux下配置IPV6,C程序适配IPV61. 环境CentOS7.7 最小系统2. linux下配置IPV6需要先确认CentOS7.7操作系统中已安装 ip6tables 组件修改网络配置文件 /etc/sysconfig/network-scripts/ifcfg-eno1,修改IPV6相关配置如下:IPV6INIT=yesIPV6_AUTOCONF=noIPV6_DEFROUTE=noI
·
Linux下配置IPV6,C程序适配IPV6
1. 环境
CentOS7.7 最小系统
2. linux下配置IPV6
需要先确认CentOS7.7操作系统中已安装
ip6tables
组件
-
修改网络配置文件
/etc/sysconfig/network-scripts/ifcfg-eno1
,修改IPV6相关配置如下:IPV6INIT=yes IPV6_AUTOCONF=no IPV6_DEFROUTE=no IPV6ADDR=fe80:0:3:2010:98:68:66:77 IPV6_DEFAULTGW=fe80:0:3:2010:9:68:6:1 IPV6_FAILURE_FATAL=no #参数说明: #1. IPV6INIT:是否启用IPV6协议 #2. IPV6_AUTOCONF:是否自动配置IPV6地址 #3. IPV6_DEFROUTE:是否启用IPV6默认路由 #4. IPV6ADDR:IPV6地址 #5. IPV6DEFAULTGW:IPV6地址网关 #6. IPV6_FAILURE_FATAL:是否启用IPV6错误检测功能
-
执行命令使IPv6配置生效:
service network restart
-
执行命令清空当前IPV6的防火墙配置:
ip6tables -F
-
执行命令查看IPV6地址
ip a
,结果中包含inet6
的地址,如fe80:0:3:2010:98:68:66:77
。
3. Windows下配置IPV6,用于配合测试验证
- 打开
控制面板---网络和共享中心
- 依次点击
以太网---属性---Internet协议版本6(TCP/IPv6)
- 勾选
使用以下IPv6地址
- IPv6地址填入
fe80:0:3:2010:98:68:66:99
- 默认网关填入
fe80:0:3:2010:98:68:66:1
- IPv6地址填入
- 点击
确定
按钮保存配置。 - 在cmd命令窗口执行命令
ipconfig
可以查看IPV6地址,如fe80:0:3:2010:98:68:66:99%2
(后面的%2
含义:%后面是本ipv6地址对应的网络接口的index,windows术语叫scope id,可理解为一个接口序号,则2为当前windows接口序号)。
4. IPV6的ping与telnet
4.1 windows下验证linux的IPV6地址
- 打开Windows的cmd命令窗口
- 执行命令:
ping -6 fe80:0:3:2010:98:68:66:77
- 执行命令:
telnet fe80:0:3:2010:98:68:66:77 22
4.2 linux下验证Windows的IPV6地址
- 执行命令:
ping6 fe80:0:3:2010:98:68:66:99%2
- 执行命令:
telnet fe80:0:3:2010:98:68:66:99%2 443
- 至此,CentOS7.7操作系统已经支持IPV6地址的配置了,但是C程序如果含有Socket通信,则需要进行第5步的改造。
windows下查看端口命令:
netstat -ano
5. C程序支持IPV6配置
-
将原有的
struct sockaddr_in socketAddr;
改为struct sockaddr_in6 socketAddr;
-
设置sockaddr_in结构体中相关参数:
socketAddr.sin6_family = AF_INET6; //协议簇IPv6
-
增加如下配置:
int ipv6only = 0; if (setsockopt(Sock, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&ipv6only, sizeof(ipv6only)) != 0) { printf("setsockopt(IPV6_V6ONLY)\n"); }
-
修改socket函数参数:
socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
参考资料
- Linux系统IPv6三种配置方式:
https://blog.csdn.net/tjhon/article/details/12499329
- linux centos网卡配置文件详解:
https://blog.csdn.net/weixin_46309058/article/details/119110064
- ip6tables命令 – IPv6的防火墙命令:
https://www.linuxcool.com/ip6tables
- socket通信(ipv4,ipv6):
https://blog.csdn.net/xiadeliang1111/article/details/85210205
最后,谢谢各位读者的耐心阅读,如有语句不通顺或者不准确的地方,还请指正!谢谢!( ^ _ ^ )
更多推荐
已为社区贡献1条内容
所有评论(0)