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
决定。