Ubuntu20.04开启/禁用ipv6

文章目录

  • Ubuntu20.04开启/禁用ipv6
    • 1.ipv6
    • [2. 开启ipv6](#2. 开启ipv6)
      • [step1. 编辑`sysctl.conf`](#step1. 编辑sysctl.conf)
      • [step2. 编辑网络接口配置文件](#step2. 编辑网络接口配置文件)
    • [3. 禁用ipv6(sysctl)](#3. 禁用ipv6(sysctl))
    • [4. 禁用ipv6(grub)](#4. 禁用ipv6(grub))
    • 附:总结linux网络配置

Ubuntu20.04开启/禁用ipv6

1.ipv6

IP 是互联网的核心协议。现在使用的 IP(即 IPv4)是在 20 世纪 70 年代末期设计的。互联网经过几十年的飞速发展,到 2011 年 2 月, IPv4 的地址已经耗尽, ISP 已经不能再申请到新的 IP 地址块了。我国在 2014 年至 2015 年也逐步停止了向新用户和应用分配 IPv4 地址,同时全面开始商用部署 IPv6。
笔者在使用hasurnet进行ROS远程组网的时候,开启了ipv6,限于某些原因,需要对ipv6功能进行屏蔽。

2. 开启ipv6

step1. 编辑sysctl.conf

shell 复制代码
sudo vim /etc/sysctl.conf

增加以下文本

shell 复制代码
net.ipv6.conf.default.disable_ipv6 = 0 
net.ipv6.conf.all.disable_ipv6 = 0

使用命令模式wq保存后关闭

step2. 编辑网络接口配置文件

注意,由于ubuntu托管网络接口的工具不同,此处也会相应不同,真正负责配置网络的,要么是systemd-networkd,要么是NetworkManager。前者是服务器版上的默认,后者是桌面版的默认。他们各自都有自己的配置文件。

netplan作为它俩的前端,只负责将自己的配置文件转换成它俩的配置,具体的配置工作还是由systemd-networkd或者NetworkManager来完成。

在桌面版上,默认情况下netplan往/run/NetworkManager/conf.d下生成的是个空白配置文件,不起任何作用。而在图形界面上进行的网络设置,是直接写到/etc/NetworkManager下面配置文件中的,跟netplan也没有关系

NetworkManager

shell 复制代码
nmcli conn modify eth0 ipv6.addresses IPv6-IP-Address ipv6.method manual ipv6.gateway IPv6-IP-Gateway-Address
nmcli conn up eth0

其中,eth0视情况而定,IPv6-IP-Address为ip6的地址,IPv6-IP-Gateway-Address为指定的ip6网关

或者直接图形化操作

netplan

shell 复制代码
vim /etc/netplan/00-installer-config.yaml

示例添加内容

shell 复制代码
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: true
      addresses:
        - 2001:db8:30fa:5877::1/64
        - 2001:db8:30fa:5877::beef/64
      routes:
        - to: ::/0
          via: 2001:db8:30fa::1
          on-link: true
      nameservers:
        addresses:
        - 2001:4860:4860::8888
        - 2606:4700:4700::1111

服务启动

shell 复制代码
netplan apply

早期server

shell 复制代码
sudo vim /etc/network/interfaces

修改以下内容

shell 复制代码
iface eth0 inet6 static
pre-up modprobe ipv6
address IPv6-IP-Address
netmask 64
gateway IPv6-IP-Gateway-Address

其中,eth0视情况而定,IPv6-IP-Address为ip6的地址,IPv6-IP-Gateway-Address为指定的ip6网关

shell 复制代码
service networking restart

3. 禁用ipv6(sysctl)

命令行方式

shell 复制代码
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1

配置文件方式

shell 复制代码
sudo vim /etc/sysctl.conf

添加

shell 复制代码
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

变更起效

shell 复制代码
sudo sysctl -p

但是这种方法经常重启后可能ip6重新生效

所以,如果重启后ip6仍然存在

在指定位置创建文件

shell 复制代码
sudo touch /etc/rc.local
sudo vim /etc/rc.local

添加以下内容重启

shell 复制代码
#!/bin/bash
# /etc/rc.local
/etc/sysctl.d
/etc/init.d/procps restart

exit 0

记得给权限

shell 复制代码
sudo chmod 755 /etc/rc.local

4. 禁用ipv6(grub)

终极办法

编辑/etc/default/grub

shell 复制代码
sudo vim /etc/default/grub

修改以下行

shell 复制代码
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"

更新grub

shell 复制代码
sudo update-grub

附:总结linux网络配置

redhat等

/etc/hosts:配置主机名(域名)和IP地址的对应

/etc/sysconfig/network:配置主机名和网关

/etc/sysconfig/network-scripts/ifcfg-:eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推

/etc/resolv.conf:配置DNS客户端(关于使用哪个DNS配置)

/etc/network/interfaces networking

相关推荐
大树881 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 小时前
Linux 11 动态监控指令top
linux
Inhand陈工3 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院3 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智3 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest3 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
不会C语言的男孩3 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言