ubuntu系统(其他debian的衍生版本好像也可以)修改静态IP有以下几种方法。(搜索总结,可能也不太对)
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
这种方法修改也比较方便。
Ubuntu等带有界面的linux操作系统默认安装了NetworkManager,正常可以直接通过 系统设置 操作NetworkManager的图形化界面修改网卡的静态IP、网关和DNS。如下为ubuntu的操作界面。

同时NetworkManager一般还提供nmcil和nmtui的命令,可以通过终端来修改。
- # 显示网卡连接信息
- 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就会进入修改网卡信息的终端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来配置网络,由于我们默认是通过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。
- # 需要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。
前两个都操作起来更方便。第三个修改DNS还不太会,如果单纯修改IP地址和网关还行。第四个是临时修改。
对于前三者的优先级,在配置了/etc/netplan和/etc/network/interfaces的时候,系统重启后,NetworkManager好像就直接挂掉了,IP和网关是由/etc/network/interfaces设置决定,如果我再运行sudo netplan apply,/etc/netplan中的配置就会生效;但系统重启后还是由/etc/network/interfaces决定。