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

相关推荐
co_wait9 分钟前
【c 语言】linux下gcc编译工具的使用
linux·c语言·开发语言
liulilittle10 分钟前
LINUX RING BUFFER TUN/TAP 1
linux·服务器·网络·c++·信息与通信·通信
supersolon12 分钟前
WSL2(Linux)升级docker
linux·运维·docker·wsl·升级
人工干智能28 分钟前
用AI写Fusion 360脚本:个人版也能免费玩自动化
运维·人工智能·自动化·fusion
赛博云推-Twitter热门霸屏工具33 分钟前
社交媒体自动化营销趋势分析:未来3年怎么玩(2026-2029)
运维·自动化·媒体
蛊明34 分钟前
批量检测 IP 是否在线:CPing vs QuickPing
网络·网络协议·tcp/ip
路由侠内网穿透.1 小时前
本地部署开源书签管理工具 LinkAce 并实现外部访问( Linux 版本)
linux·运维·服务器·网络·网络协议·开源
小飞菜涅1 小时前
fast-lio2复现
嵌入式硬件·学习·ubuntu
ljh5746491191 小时前
linux awk 命令
linux·运维·chrome
向依阳1 小时前
RV1126准备-----编译和测试SDK自带的RKNN例程
linux·rv1226