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

相关推荐
日取其半万世不竭2 小时前
用 Portainer 可视化管理 Docker:容器再多也不用背命令了
运维·docker·容器
2023自学中2 小时前
Linux 图形系统
linux
mounter6254 小时前
高性能网络技术演进与创新探索:RDMA、eBPF/XDP 深度解析及 LSF/MM/BPF 2023 专题演讲
linux·ebpf·linux kernel·kernel·rdma·xdp
动恰客流统计5 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
名字还没想好☜5 小时前
Python itertools 实战:用 groupby、chain、islice 优雅处理大数据流
linux·windows·python·迭代器·itertools
可爱系程序猿5 小时前
Windows 打印链路诊断:从设备枚举、TCP/IP 端口到 Spooler 服务恢复
网络·网络协议·tcp/ip
啊啊啊迈 旋棍7 小时前
【译】TypeScript 7 测试版已在 Visual Studio 2026 18.6 Insiders 3 中默认启用
ubuntu·typescript·visual studio
ziguo11227 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
无垠的广袤8 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
深念Y8 小时前
P2P组网选型与折腾记录
网络·网络协议·p2p·局域网·远程·组网