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

相关推荐
liulilittle1 分钟前
SNIProxy 轻量级匿名CDN代理架构与实现
开发语言·网络·c++·网关·架构·cdn·通信
电脑能手12 分钟前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑
tan77º36 分钟前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
czhc11400756631 小时前
Linux 76 rsync
linux·运维·python
小白爱电脑1 小时前
光纤的最小弯曲半径是多少?
网络
你不知道我是谁?2 小时前
负载均衡--四层、七层负载均衡的区别
运维·服务器·负载均衡
蓝易云2 小时前
Qt框架中connect()方法的ConnectionType参数使用说明 点击改变文章字体大小
linux·前端·后端
dyj0952 小时前
【Rancher Server + Kubernets】- Nginx-ingress日志持久化至宿主机
运维·nginx·rancher
花落已飘2 小时前
多线程 vs 异步
linux·网络·系统架构
PanZonghui3 小时前
Centos项目部署之Nginx部署项目
linux·nginx