Ubuntu系统网卡地址定制

Ubuntu系统网卡地址定制

一、前期准备:确认系统环境与网卡信息

1. 确认Ubuntu系统版本(关键!区分netplan配置方式)

执行命令:

bash 复制代码
lsb_release -a

预期结果示例

复制代码
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy
  • 核心说明:Ubuntu 18.04+ 均支持netplan,配置文件格式统一;16.04及以下需用传统方式(文末附补充)。

2. 查看所有网卡信息(核心!确定要配置的网卡名)

方法1:用 ip a 命令(推荐,显示最全面)

执行命令:

bash 复制代码
ip a

预期结果示例(重点解读):

复制代码
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff  # 网卡MAC地址
    inet 192.168.1.6/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33  # 当前IP(dynamic=DHCP获取)
       valid_lft 86395sec preferred_lft 86395sec
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 7c:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff  # 无线网卡(若有,按需配置)

关键解读

  • 排除 lo(本地回环网卡,无需配置);
  • 重点关注状态为 UP 的网卡(如 ens33,物理有线网卡)或无线网卡(wlp2s0);
  • 记好网卡名(可能是 ens33eth0enp0s3 等),后续配置均针对此网卡。
方法2:用 nmcli device 命令(确认网卡是否被系统管理)

执行命令:

bash 复制代码
nmcli device

预期结果示例

复制代码
DEVICE  TYPE      STATE                   CONNECTION
ens33   ethernet  connected               ens33  # 已连接,被管理
wlp2s0  wifi      disconnected            --
lo      loopback  unmanaged               --
  • 确保目标网卡的 TYPEethernet(有线)或 wifi(无线),STATE 不为 unmanaged

3. 查看当前网络配置(IP/网关/DNS,备份参考)

(1)查看当前IP和子网掩码
bash 复制代码
ip addr show ens33  # 替换为你的网卡名

预期结果 :显示该网卡的IP(如 192.168.1.6/24/24 对应子网掩码 255.255.255.0)。

(2)查看当前网关
bash 复制代码
ip route show  # 简写 ip r

预期结果示例

复制代码
default via 192.168.1.1 dev ens33 proto dhcp src 192.168.1.6 metric 100  # default via 后为网关(192.168.1.1)
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.6 metric 100
(3)查看当前DNS
bash 复制代码
cat /etc/resolv.conf

预期结果示例

复制代码
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114

二、核心配置:用netplan定制网卡地址(Ubuntu 18.04+推荐)

netplan的配置文件为YAML格式(后缀 .yaml),默认存放在 /etc/netplan/ 目录,步骤如下:

1. 查看现有netplan配置文件

执行命令:

bash 复制代码
ls /etc/netplan/

预期结果示例

复制代码
00-installer-config.yaml  # 系统默认配置文件(文件名可能不同,如50-cloud-init.yaml)
  • 记好配置文件名(后续直接修改该文件,或新建文件覆盖)。

2. 备份原有配置文件(重要!避免配置错误无法恢复)

执行备份命令(替换文件名和网卡名为你的实际信息):

bash 复制代码
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak

验证备份是否成功:

bash 复制代码
ls /etc/netplan/

预期结果 :同时显示原文件和备份文件(如 00-installer-config.yaml00-installer-config.yaml.bak)。

3. 编辑netplan配置文件(YAML格式,严格缩进!)

vim 编辑文件(若未安装vim,先执行 sudo apt install vim -y):

bash 复制代码
sudo vim /etc/netplan/00-installer-config.yaml
场景1:配置静态IP(常用,固定IP地址)

删除原有内容,按以下格式添加(缩进用2个空格,不能用Tab! 否则配置失效):

yaml 复制代码
# 网络配置文件(netplan)
network:
  version: 2  # 固定版本号,必须为2
  renderer: NetworkManager  # 渲染器(Ubuntu桌面版推荐,服务器版可改为networkd)
  ethernets:
    ens33:  # 替换为你的网卡名(如ens33、eth0)
      dhcp4: no  # 禁用IPv4 DHCP(静态IP必须设为no)
      dhcp6: no  # 禁用IPv6 DHCP(无需IPv6则设为no)
      addresses:  # 静态IP+子网掩码(格式:[IP/子网前缀])
        - 192.168.1.100/24  # 定制的静态IP,/24对应子网掩码255.255.255.0
      gateway4: 192.168.1.1  # 网关地址(与路由器/网关一致,参考前期查看结果)
      nameservers:  # DNS配置
        addresses: [8.8.8.8, 114.114.114.114]  # 首选DNS+备选DNS,用逗号分隔
场景2:配置动态IP(DHCP,自动获取IP)

若无需固定IP,让路由器自动分配,配置如下:

yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:  # 替换为你的网卡名
      dhcp4: yes  # 启用IPv4 DHCP(自动获取IP)
      dhcp6: no  # 禁用IPv6(按需开启)
      nameservers:  # 可选:指定DNS,不指定则用路由器分配的DNS
        addresses: [8.8.8.8, 114.114.114.114]
场景3:配置无线网卡(WiFi)静态IP(额外补充)

若需配置WiFi的静态IP,修改配置如下(替换WiFi名称、密码和网卡名):

yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp2s0:  # 替换为你的无线网卡名(如wlp2s0)
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
      access-points:
        "WiFi名称":  # 你的WiFi名称(双引号必须保留,含特殊字符也需包含)
          password: "WiFi密码"  # 你的WiFi密码(双引号保留)

4. 保存文件并退出vim

  • Esc 键,输入 :wq(冒号+wq),回车保存退出;
  • 若误操作需放弃修改,输入 :q! 回车强制退出。

5. 应用netplan配置(使配置生效)

步骤1:验证配置文件语法是否正确(避免缩进错误)

执行命令(替换配置文件名):

bash 复制代码
sudo netplan try

预期结果

  • 若语法正确,会提示 Do you want to keep these settings? (yes/no),输入 yes 确认;
  • 若语法错误,会提示具体行数(如 Error in network definition at /etc/netplan/00-installer-config.yaml line 8: expected indentation),需返回编辑文件修正缩进。
步骤2:正式应用配置(永久生效)
bash 复制代码
sudo netplan apply
  • 无报错即表示应用成功(无需重启系统,即时生效)。

三、验证配置是否生效(完整验证流程)

1. 基础验证:IP/网关/DNS是否正确

bash 复制代码
# (1)查看网卡IP是否更新
ip addr show ens33  # 替换为你的网卡名
# 预期结果:静态IP显示192.168.1.100/24,动态IP显示新分配地址

# (2)查看网关是否正确
ip route show
# 预期结果:default via 192.168.1.1 dev ens33(静态IP场景)

# (3)查看DNS是否正确
cat /etc/resolv.conf
# 预期结果:包含设置的DNS(8.8.8.8和114.114.114.114)

2. 网络连通性验证

bash 复制代码
# (1)ping网关(测试内网连通性)
ping 192.168.1.1 -c 4  # -c 4 表示ping4次后停止
# 预期结果:0% packet loss(无丢包)

# (2)ping公网IP(测试外网连通性)
ping 223.5.5.5 -c 4  # 阿里公共DNS IP,无需解析
# 预期结果:0% packet loss

# (3)ping域名(测试DNS解析是否正常)
ping www.baidu.com -c 4
# 预期结果:能解析出百度IP(如183.232.231.172)并ping通

3. 开机自启验证(确保重启后生效)

bash 复制代码
# 重启系统(谨慎!保存当前工作)
sudo reboot

# 重启后执行以下命令验证
ip a show ens33  # IP是否正确
ping www.baidu.com  # 网络是否连通

四、常见问题排查(配置失败时用)

1. netplan apply 无报错,但IP未更新

  • 原因1:配置文件缩进错误(YAML对缩进敏感);
    解决:重新编辑文件,确保所有层级用2个空格缩进,无Tab键。
  • 原因2:网卡名填错;
    解决:重新执行 ip a 确认网卡名,修正配置文件中的网卡名。
  • 原因3:渲染器冲突(桌面版用了networkd);
    解决:将配置文件中的 renderer: networkd 改为 renderer: NetworkManager,重新执行 sudo netplan apply

2. ping不通网关/外网

  • 检查网关是否正确(对比路由器后台的网关地址,如192.168.0.1而非192.168.1.1);
  • 检查子网前缀是否正确(如网关是192.168.1.1,IP必须是192.168.1.x/24,不能是192.168.0.x/24);
  • 临时关闭防火墙测试(Ubuntu默认防火墙不拦截ping,若手动开启过,执行 sudo ufw disable 关闭)。

3. DNS解析失败(ping IP通,ping域名不通)

  • 检查配置文件中 nameservers.addresses 是否填写正确(无多余逗号、括号);

  • 手动修改DNS临时测试:

    bash 复制代码
    sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf

    若能解析,重新执行 sudo netplan apply 让配置永久生效。

4. 配置文件丢失/误删

  • 用备份文件恢复:

    bash 复制代码
    sudo cp /etc/netplan/00-installer-config.yaml.bak /etc/netplan/00-installer-config.yaml
    sudo netplan apply

五、补充:Ubuntu 16.04及以下(传统配置方式)

若你的系统是Ubuntu 16.04或更早(不支持netplan),通过编辑 /etc/network/interfaces 配置:

1. 备份配置文件

bash 复制代码
sudo cp /etc/network/interfaces /etc/network/interfaces.bak

2. 编辑文件

bash 复制代码
sudo vim /etc/network/interfaces

3. 配置静态IP

bash 复制代码
# 本地回环网卡
auto lo
iface lo inet loopback

# 有线网卡(ens33)
auto ens33  # 开机自动激活
iface ens33 inet static  # 静态IP
address 192.168.1.100  # 静态IP
netmask 255.255.255.0  # 子网掩码
gateway 192.168.1.1  # 网关
dns-nameservers 8.8.8.8 114.114.114.114  # DNS

4. 配置动态IP

bash 复制代码
auto ens33
iface ens33 inet dhcp  # 动态IP

5. 重启网络生效

bash 复制代码
sudo /etc/init.d/networking restart
相关推荐
原神启动11 小时前
云计算大数据——MySQL数据库一(数据库基础与MySQL安装)
大数据·数据库·云计算
盛世宏博北京1 小时前
POE 供电以太网温湿度变送器技术原理与性能优化研究
网络·以太网·传感器·poe·温湿度·变送器
zwm_yy1 小时前
redis原生语句回顾
数据库·redis
c***93771 小时前
【MySQL】深度学习数据库开发技术:使用CC++语言访问数据库
数据库·mysql·数据库开发
u***1371 小时前
开启mysql的binlog日志
数据库·mysql
兮动人1 小时前
解决微软应用商店 (Microsoft store) 打不开,无网络连接的问题!
网络·microsoft
途经六月的绽放1 小时前
零基础入门 MongoDB:文档型数据库的魅力与应用
数据库
o***74171 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
科技块儿2 小时前
常见IP归属地数据库对比
网络·数据库·tcp/ip