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

相关推荐
张洛闻Eren5 小时前
MySQL 维护稳定系统【MySQL第二课】
linux·数据库·mysql·云原生
ltl5 小时前
Linux 异步 I/O:epoll 与 io_uring 对比
linux
ltl5 小时前
压缩算法工程实践:吞吐、比率与 CPU 权衡
linux
fiveym6 小时前
01 - iPXE + Clonezilla 网络装机原理解析
linux·运维·服务器·网络
虎头金猫6 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
dog2506 小时前
网络优化,还是降低各阶矩
服务器·网络·php
反转180度7 小时前
Qt 6 + C++17 实现 SFTP 批量部署:工业设备运维工具实战解析
运维·c++·qt
liuqs3327 小时前
nat123安卓和nat123全端口选型指南,映射工具怎么挑
网络·笔记
雨辰AI8 小时前
RAG 知识库搭建:基于人大金仓构建信创运维问答机器人|全栈国产化落地完整版
运维·ai·机器人·ai编程
x_x-F8 小时前
网络数据从网卡到用户态:一场基于内存所有权转移的接力赛
开发语言·网络·php