Ubuntu修改静态IP、网关和DNS的方法总结

2023-09-18 14:24:37

Ubuntu修改静态IP、网关和DNS的方法总结

ubuntu系统(其他debian的衍生版本好像也可以)修改静态IP有以下几种方法。(搜索总结,可能也不太对)

/etc/netplan (use)

Ubuntu 18.04开始可以使用netplan配置网络,其也是默认安装的。配置文件位于/etc/netplan/xxx.yaml中,netplan默认是使用NetworkManager来配置网卡信息的。

old: -- (Ubuntu 20.04.及以前版本使用)

# 可以将其修改为如下格式,来修改网卡信息
# 需要注意缩进关系,不然就会报错
network:
    version: 2
    ethernets:
        ens33:
            dhcp4: no
            addresses: [192.168.16.136/24]
            gateway4: 192.168.16.2
            nameservers:
                addresses: [192.168.16.2]
        [网卡2的设备名称]: 
            dhcp4: no
            addresses: [192.168.16.145/24]
            gateway4: 192.168.16.2
            nameservers:
                addresses: [192.168.16.2]
                
# 然后运行,即可生效
sudo netplan apply

new: -- (Ubuntu 20.04.之后版本使用)

root@my-ubuntu-vm1:~# vi /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      #dhcp4: true
      dhcp4: false
      addresses: [192.168.31.85/24]
      optional: true
      routes:
      - to: default
        via: 192.168.31.1
      nameservers:
        addresses: [114.114.114.114]
  version: 2

# 然后运行,即可生效
sudo netplan apply
  • ethernets: 网卡数组-------------第二层
  • ens33: 网卡名字-------------第三层
  • dhcp4: 表示通过dhcp获取ip还是配置静态ip-------------第四层
  • addresses:配置ip地址与子网掩码-------------第四层
  • gateway4: 网关-------------第四层
  • nameservers: dns服务器-------------第四层
  • addresses:dns服务器的地址列表-------------第五层

这种方法修改也比较方便。

NetworkManager

Ubuntu等带有界面的linux操作系统默认安装了NetworkManager,正常可以直接通过 系统设置 操作NetworkManager的图形化界面修改网卡的静态IP、网关和DNS。如下为ubuntu的操作界面。

同时NetworkManager一般还提供nmcilnmtui的命令,可以通过终端来修改。

  • nmcil的基本操作流程
# 显示网卡连接信息
nmcli connection show
# 短格式
nmcli con show
# 例如会返回如下信息
NAME        UUID                                  TYPE      DEVICE 
有线连接 1  ee4dce9e-bf8f-3c4b-85d5-dd5a4ac0a2f1  ethernet  ens33  

# 显示网卡的具体信息
# NAME有中文的时候需要加''
# nmcli con show '有线连接 1'
nmcli con show [NAME]|[UUID]

# 修改都需要 sudo 权限
# 修改对应网卡的信息
# 修改网卡的模式,自动/手动
nmcli con modify [NAME]|[UUID] ipv4.method auto|manual
# 设置为自动获取IP
nmcli con modify '有线连接 1' ipv4.method auto
# 修改IP地址
nmcli con modify [NAME]|[UUID] ipv4.addresses [ip/mask]
# 修改网关
nmcli con modify [NAME]|[UUID] ipv4.gateway [gateway]
# 修改DNS
nmcli con modify [NAME]|[UUID] ipv4.dns [dns]

# 上述修改后需要重启开启网卡才能生效
nmcli con down [NAME]|[UUID]
nmcli con up [NAME]|[UUID]
# 未生效还可以尝试重启NetworkManager服务或者系统重启
sudo service network-manager restart

# 完整示例
# 设置‘有线网卡 1’的IP地址为192.168.16.140,子网掩码为 255.255.255.0,网关为 192.168.16.2,DNS为 192.168.16.2
sudo nmcli con modify '有线网卡 1' ipv4.method manual
sudo nmcli con modify '有线网卡 1' ipv4.addresses 192.168.16.140/24
sudo nmcli con modify '有线网卡 1' ipv4.gateway 192.168.16.2
sudo nmcli con modify '有线网卡 1' ipv4.dns 192.168.16.2
sudo nmcli con down '有线网卡 1'
sudo nmcli con up '有线网卡 1'
  • nmtui的基本操作流程

在终端中输入nmtui就会进入修改网卡信息的终端ui界面中,根据操作提示修改即可,注意修改后,需要重启网卡,启用连接 -> [选择对应的网卡] -> 禁用 -> 启用,修改才会生效。修改失败的话,就sudo nmtui再试试

通过图形化界面、nmcli指令和nmtui指令操作,最终的配置信息都保存在/etc/NetworkManager文件夹中,网卡的配置文件在/etc/NetworkManager/system-connections文件夹中,也可以直接修改网卡配置文件来修改IP等,注意修改前最好备份一下配置文件。

经过测试,修改后需要重启NetworkManager服务后,再重启网卡,修改才能生效。

# 修改配置文件
sudo vim /etc/NetworkManager/system-connections/[网卡NAME]

# 重启NetworkManager服务
sudo service network-manager restart
# 重启网卡
sudo nmcli con down [NAME]|[UUID]
sudo nmcli con up [NAME]|[UUID]

/etc/network/interface

可以通过修改/etc/network/interface来配置网络,由于我们默认是通过NetworkManager修改网卡信息的,所以一开始interface文件中没有其他网卡的信息。

可以在文件后面添加需要修改的网卡信息。

# /etc/network/interface文件后添加
auto [网卡名称]                    #要设置的网卡设备名称,如 auto ens33
iface [网卡名称] inet static     #设置静态IP;如果是使用自动IP用 dhcp
address xxx.xxx.xxx.xxx            #IP地址
netmask xxx.xxx.xxx.xxx         #子网掩码
gateway xxx.xxx.xxx.xxx         #网关

# 修改完成后,重启网络服务
service networking restart

经过测试,有时候重启服务和重启网卡并不能生效,需要系统重启后生效,同时这个时候系统设置中的NetworkManager 就不太正常了。

这种方法不能一起修改DNS,需要修改另外一个配置文件/etc/resolv.conf,具体详见这个博客ubuntu修改ip。但是我的ubuntu18.04的虚拟机中已经没有resolvconf这个服务了。具体见这个博客Ubuntu 手动配置DNS

目前还不太会通过/etc/resolv.conf修改DNS,不建议使用这种方法修改DNS。

ifconfig临时修改IP

# 需要sudo权限
# 临时修改ip
ifconfig [网卡设备名称] [ip地址] netmask [子网掩码]
# ifcogfin ens33 192.168.16.139 netmask 255.255.255.0

# 启用\关闭网卡
ifconfig [网卡名称] up
ifconfig [网卡名称] down

设置网关使用其他的命令

# 设置网关,未测试
sudo route add default gw 192.168.2.254

设置DNS详见3。

总结

  • NetworkManager: NetworkManager是一个用于管理网络连接的守护进程。它在现代Linux发行版中广泛使用,并提供图形用户界面和命令行工具来管理网络设置。它可以动态管理网络配置,包括有线、无线和VPN连接等。Ubuntu系统是默认使用NetworkManager。
  • /etc/netplan/: 这是Ubuntu 18.04及更高版本中使用的网络配置工具。Netplan允许您使用YAML格式定义网络配置,包括IP地址、网关、DNS等。Netplan会将配置转换为其他配置文件(如NetworkManager或systemd-networkd),从而应用新的网络设置。
  • /etc/network/interfaces: 这是Debian和Ubuntu等一些Linux发行版中用于配置网络接口的文件。它定义了网络接口的基本设置,例如IP地址、网关和子网掩码等。
  • ifconfig 命令通过调用系统调用以及与内核的交互来实时获取网络接口的信息。它获取到的信息是当前内核中网络接口的实时状态,而不是从配置文件中读取的静态配置信息。在Ubuntu中,使用ifconfig命令修改网卡的IP地址是临时的,不会修改任何配置文件。ifconfig命令用于动态地配置网络接口,所做的更改只会在下次系统重启时失效。

前两个都操作起来更方便。第三个修改DNS还不太会,如果单纯修改IP地址和网关还行。第四个是临时修改。

对于前三者的优先级,在配置了/etc/netplan/etc/network/interfaces的时候,系统重启后,NetworkManager好像就直接挂掉了,IP和网关是由/etc/network/interfaces设置决定,如果我再运行sudo netplan apply/etc/netplan中的配置就会生效;但系统重启后还是由/etc/network/interfaces决定。

更多推荐

【Flink实战】玩转Flink里面核心的Source Operator实战

🚀作者:“大数据小禅”🚀文章简介:【Flink实战】玩转Flink里面核心的SourceOperator实战🚀欢迎小伙伴们点赞👍、收藏⭐、留言💬目录导航Flink的API层级介绍SourceOperator速览Flink预定义的Source数据源案例实战Flink自定义的Source数据源案例-订单来源实战F

Android UT开发简介

一、概述AndroidUT(UnitTesting)开发是指在Android应用程序中进行单元测试的开发过程。单元测试是一种软件测试方法,用于测试应用程序中的最小可测试单元(通常是函数或方法)的正确性。AndroidUT开发的主要目标是确保应用程序的各个单元在不同情况下能够按照预期正确运行。通过编写、运行和维护单元测试

免费、安全、可靠!一站式构建平台 ABS 介绍及实例演示 | 龙蜥技术

编者按:操作系统是一个大的软件集合,成百上千个软件之间有相互调用、相互依赖等各种复杂的关联关系,所以统一的软件包格式,能够更友好地管理、定义这些复杂关系。今天,龙蜥社区基础设施Contributor单凯伦带大家了解龙蜥社区官方构建平台ABS,熟悉AnolisOS软件包、镜像构建流程以及ABS未来规划等。本文整理自龙蜥大

【Windows 11】安装 Android子系统 和 Linux子系统

本文使用电脑系统:文章目录一、安卓子系统1.1安装WSA1.2使用二、Linux子系统2.1安装WSL以及WSL相关概念2.2安装一个Linux发行版2.21从MicrosoftStore安装2.22用命令安装2.23拓展三、拓展3.1存储位置3.2虚拟化技术3.3Windows虚拟内存3.3wsl帮助文件一、安卓子系

MySQL 锁机制

1.锁是什么?是为了保证数据并发访问时的一致性和有效性,数据库提供的一种机制。锁机制的优劣直接影响到数据库的并发处理能力和系统性能,所以锁机制也就成为了各种数据库的核心技术之一。同时,锁机制也为实现MySQL事务的各个隔离级别提供了保证。2.锁的缺点锁是一种消耗资源的机制,想要实现锁的各种操作,包括获得锁、检测锁是否已

2023数学建模国赛游记

第一参加数学建模国赛,大概也是最后一次参加了,记录一下这几天的历程吧。我们队的情况是计算机+电气+数统,计算机负责编程,电气学院的负责论文部分,数统的同学负责建模,数据处理部分我们是共同承担。第一天下午6点发题,5点学校的所有队伍基本都到管理学院的机房在等着发题,5点多题发了,我们开始看题,几个人扫了一下C题觉得可以做

Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

错误Can'tcallnumpy()onTensorthatrequiresgrad.Usetensor.detach().numpy()instead.原因变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以

【探索C++】C++对C语言的扩展

(꒪ꇴ꒪),Hello我是祐言QAQ我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误,请在评论区指正,感谢🙏一、引用1.变量名变量名本质上就

优思学院|看板方式与传统生产方式的对比

看板方式的起源有些人以为“丰田生产方式”和“看板方式”是一样的,其实并非如此。前者是物品的制造方式、流动方式,后者则是传递制造资讯的方式。创造出看板方式的灵感,是从超市的销售方式得来的。超市的顾客只会在有需要的时候购买所需要的物品,而且只购买需要的数量。准时生产(JIT):市场需求驱动的制造策略从这一点衍伸出准时生产(

JAVA设计模式1:单例模式,确保每个类只能有一个实例

作者主页:Designer小郑作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。主打方向:Vue、SpringBoot、微信小程序本文讲解了Java设计模式中的单例模式,并给出了样例代码,单例模式,确保每个类只能有一个实例,并提供一个全局访问

Vue3自定义指令

文章目录Vue3自定义指令1.自定义全局指令v-focus2.自定义局部指令v-focus3.指令定义的钩子函数3.1概念3.2钩子函数参数3.3vnode&prevNode3.4简写3.5指令函数接受JavaScript表达式Vue3自定义指令1.自定义全局指令v-focus除了默认设置的核心指令(v-model和v

热文推荐