人生百错全书 發表於 2025-12-5 09:08:17

Ubuntu虚拟机配置静态IP的流程步骤

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">引言</a></li><li><a href="#_label1">一、前置准备</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">1. 环境说明</a></li><li><a href="#_lab2_1_1">2. 关键前提</a></li></ul><li><a href="#_label2">二、步骤 1:查看网卡与当前配置</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_2">1. 查看网卡状态</a></li><li><a href="#_lab2_2_3">2. 查看现有 Netplan 配置</a></li></ul><li><a href="#_label3">三、步骤 2:清理冲突配置</a></li><ul class="second_class_ul"></ul><li><a href="#_label4">四、步骤 3:编辑 Netplan 静态 IP 配置</a></li><ul class="second_class_ul"><li><a href="#_lab2_4_4">1. 编辑配置文件</a></li><li><a href="#_lab2_4_5">2. 配置文件关键说明</a></li><li><a href="#_lab2_4_6">3. 修正配置文件权限</a></li></ul><li><a href="#_label5">五、步骤 4:应用配置并验证</a></li><ul class="second_class_ul"><li><a href="#_lab2_5_7">1. 测试配置(推荐)</a></li><li><a href="#_lab2_5_8">2. 永久应用配置</a></li><li><a href="#_lab2_5_9">3. 验证配置结果</a></li><ul class="third_class_ul"><li><a href="#_label3_5_9_0">(1)查看静态 IP 是否生效</a></li><li><a href="#_label3_5_9_1">(2)查看路由表</a></li><li><a href="#_label3_5_9_2">(3)测试网络连通性</a></li></ul></ul><li><a href="#_label6">六、常见问题解决</a></li><ul class="second_class_ul"><li><a href="#_lab2_6_10">1. 配置静态 IP 后无法访问外网</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_6_11">2. YAML 配置语法错误</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_6_12">3. 配置文件权限警告</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_6_13">4. 网卡状态始终 DOWN</a></li><ul class="third_class_ul"></ul></ul><li><a href="#_label7">七、配置备份与恢复</a></li><ul class="second_class_ul"><li><a href="#_lab2_7_14">1. 备份配置文件</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_7_15">2. 恢复配置(若出错)</a></li><ul class="third_class_ul"></ul></ul><li><a href="#_label8">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>引言</h2>
<p>Netplan 是 Ubuntu 18.04 及以上版本默认的网络配置工具,相比传统的 <code>ifupdown</code> 更简洁、易维护。本教程以 VMware 虚拟机(Ubuntu 系统)为例,手把手教你配置静态 IP,解决「有内网 IP 但无法联网」「配置冲突」等常见问题。</p>
<p class="maodian"><a name="_label1"></a></p><h2>一、前置准备</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>1. 环境说明</h3>
<ul><li>宿主机:Windows/Linux/macOS(以 VMware Workstation 为例)</li><li>虚拟机系统:Ubuntu 20.04/22.04/24.04(其他版本通用)</li><li>网卡名称:<code>ens33</code>(虚拟机默认网卡名,可通过 <code>ip a</code> 确认)</li><li>目标:配置静态 IP <code>192.168.111.22/24</code>,网关 <code>192.168.111.2</code></li></ul>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>2. 关键前提</h3>
<ul><li>确认虚拟机网络模式(本教程以「NAT 模式」为例,桥接/仅主机模式配置逻辑一致,仅网段需匹配);</li><li>关闭冲突的网络管理工具(如 NetworkManager),避免和 Netplan 争抢网卡管理权;</li><li>确保配置文件权限合规(仅 root 可读写)。</li></ul>
<p class="maodian"><a name="_label2"></a></p><h2>二、步骤 1:查看网卡与当前配置</h2>
<p class="maodian"><a name="_lab2_2_2"></a></p><h3>1. 查看网卡状态</h3>
<p>打开虚拟机终端,执行以下命令确认网卡名称和状态:</p>
<div class="jb51code"><pre class="brush:bash;">ip a
</pre></div>
<p>输出示例(重点关注 <code>ens33</code> 网卡):</p>
<div class="jb51code"><pre class="brush:bash;">1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; 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: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:ef:9d brd ff:ff:ff:ff:ff:ff
    altname enp2s1
</pre></div>
<ul><li>若 <code>ens33</code> 状态为 <code>DOWN</code>,先执行 <code>sudo ip link set ens33 up</code> 启动网卡。</li></ul>
<p class="maodian"><a name="_lab2_2_3"></a></p><h3>2. 查看现有 Netplan 配置</h3>
<p>Netplan 配置文件默认存放在 <code>/etc/netplan/</code> 目录,执行以下命令查看:</p>
<div class="jb51code"><pre class="brush:bash;">ls -l /etc/netplan/
</pre></div>
<p>输出示例:</p>
<div class="jb51code"><pre class="brush:bash;">-rw------- 1 root root 428 12月4 17:40 00-installer-config.yaml
-rw-r--r-- 1 root root 102 12月3 10:00 01-network-manager-all.yaml# 冲突文件,需删除
</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>三、步骤 2:清理冲突配置</h2>
<p>若存在 <code>01-network-manager-all.yaml</code> 等指向 <code>NetworkManager</code> 的配置文件,会和 Netplan 冲突,需删除:</p>
<div class="jb51code"><pre class="brush:bash;"># 删除冲突配置文件
sudo rm /etc/netplan/01-network-manager-all.yaml
# 验证删除结果
ls -l /etc/netplan/
</pre></div>
<p class="maodian"><a name="_label4"></a></p><h2>四、步骤 3:编辑 Netplan 静态 IP 配置</h2>
<p class="maodian"><a name="_lab2_4_4"></a></p><h3>1. 编辑配置文件</h3>
<p>使用 <code>nano</code> 编辑主配置文件 <code>00-installer-config.yaml</code>(注意 YAML 严格缩进,禁止用 tab,仅用空格):</p>
<div class="jb51code"><pre class="brush:bash;">sudo nano /etc/netplan/00-installer-config.yaml
</pre></div>
<p>写入以下内容(替换为你的 IP/网关/DNS):</p>
<div class="jb51code"><pre class="brush:yaml;">network:
version: 2# Netplan 版本,固定为 2
renderer: networkd# 明确用 networkd 管理,避免冲突
ethernets:
    ens33:# 网卡名称,需和 ip a 输出一致
      dhcp4: false# 关闭 DHCP,启用静态 IP
      addresses:
      - 192.168.111.22/24# 静态 IP + 子网掩码
      routes:
      - to: default# 默认路由
          via: 192.168.111.2# 网关 IP(必须是虚拟机网段的真实网关)
      nameservers:
      addresses: # DNS 服务器(公共 DNS/内网 DNS)
</pre></div>
<p class="maodian"><a name="_lab2_4_5"></a></p><h3>2. 配置文件关键说明</h3>
<table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td><code>renderer: networkd</code></td><td>指定网络渲染器为 networkd,Ubuntu 服务器版默认推荐</td></tr><tr><td><code>dhcp4: false</code></td><td>关闭 DHCPv4,若需 IPv6 静态配置,可添加 <code>dhcp6: false</code></td></tr><tr><td><code>addresses</code></td><td>静态 IP 列表,格式为「IP/子网掩码」,支持配置多个 IP</td></tr><tr><td><code>routes.to: default</code></td><td>指向默认网关,所有外网流量走该路由</td></tr><tr><td><code>nameservers.addresses</code></td><td>DNS 服务器列表,优先用公共 DNS(8.8.8.8/114.114.114.114)</td></tr></tbody></table>
<p class="maodian"><a name="_lab2_4_6"></a></p><h3>3. 修正配置文件权限</h3>
<p>Netplan 要求配置文件仅 root 可读写(权限 <code>600</code>),执行以下命令修正:</p>
<div class="jb51code"><pre class="brush:bash;"># 设置权限为 600(仅 root 可读可写)
sudo chmod 600 /etc/netplan/00-installer-config.yaml
# 设置归属为 root:root
sudo chown root:root /etc/netplan/00-installer-config.yaml
# 验证权限
ls -l /etc/netplan/00-installer-config.yaml
</pre></div>
<p>输出示例(权限正确):</p>
<div class="jb51code"><pre class="brush:bash;">-rw------- 1 root root 428 12月4 17:40 /etc/netplan/00-installer-config.yaml
</pre></div>
<p class="maodian"><a name="_label5"></a></p><h2>五、步骤 4:应用配置并验证</h2>
<p class="maodian"><a name="_lab2_5_7"></a></p><h3>1. 测试配置(推荐)</h3>
<p>先用 <code>netplan try</code> 测试配置(临时生效,超时自动回滚,按回车确认永久生效):</p>
<div class="jb51code"><pre class="brush:bash;">sudo netplan try
</pre></div>
<p>输出说明:</p>
<ul><li>若提示 <code>WARNING:root:Cannot call Open vSwitch</code>:忽略(未使用 OVS 交换机,不影响);</li><li>看到 <code>Do you want to keep these settings?</code> 时,按<strong>回车键</strong>确认保留配置。</li></ul>
<p class="maodian"><a name="_lab2_5_8"></a></p><h3>2. 永久应用配置</h3>
<p>测试无报错后,执行以下命令永久生效:</p>
<div class="jb51code"><pre class="brush:bash;"># 生成配置
sudo netplan generate
# 应用配置
sudo netplan apply
# 重启网卡(可选)
sudo ip link set ens33 down &amp;&amp; sudo ip link set ens33 up
</pre></div>
<p class="maodian"><a name="_lab2_5_9"></a></p><h3>3. 验证配置结果</h3>
<p class="maodian"><a name="_label3_5_9_0"></a></p><h4>(1)查看静态 IP 是否生效</h4>
<div class="jb51code"><pre class="brush:bash;">ip a
</pre></div>
<p>输出示例(<code>ens33</code> 已配置静态 IP <code>192.168.111.22</code>):</p>
<div class="jb51code"><pre class="brush:bash;">2: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:ef:9d brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.111.22/24 brd 192.168.111.255 scope global ens33
       valid_lft forever preferred_lft forever
</pre></div>
<p class="maodian"><a name="_label3_5_9_1"></a></p><h4>(2)查看路由表</h4>
<div class="jb51code"><pre class="brush:bash;">ip route
</pre></div>
<p>输出示例(默认网关 <code>192.168.111.2</code> 已生效):</p>
<div class="jb51code"><pre class="brush:bash;">default via 192.168.111.2 dev ens33 proto static
192.168.111.0/24 dev ens33 proto kernel scope link src 192.168.111.22
</pre></div>
<p class="maodian"><a name="_label3_5_9_2"></a></p><h4>(3)测试网络连通性</h4>
<div class="jb51code"><pre class="brush:bash;"># 测试内网连通性(ping 网关)
ping -c 3 192.168.111.2
# 测试外网 IP 连通性
ping -c 3 8.8.8.8
# 测试域名解析(验证 DNS)
ping -c 3 baidu.com
</pre></div>
<ul><li>若能 ping 通网关但无法 ping 外网:检查 VMware NAT 模式网关是否匹配(参考文末「常见问题」);</li><li>若能 ping 外网 IP 但无法 ping 域名:检查 DNS 配置是否正确。</li></ul>
<p class="maodian"><a name="_label6"></a></p><h2>六、常见问题解决</h2>
<p class="maodian"><a name="_lab2_6_10"></a></p><h3>1. 配置静态 IP 后无法访问外网</h3>
<ul><li>原因:VMware NAT 模式的真实网关和配置的 <code>via</code> 不一致;</li><li>解决:打开 VMware &rarr; 编辑 &rarr; 虚拟网络编辑器 &rarr; 选择 VMnet8(NAT 模式)&rarr; NAT 设置 &rarr; 查看「网关 IP」,将 Netplan 中的 <code>via</code> 改为该值。</li></ul>
<p class="maodian"><a name="_lab2_6_11"></a></p><h3>2. YAML 配置语法错误</h3>
<ul><li>症状:<code>netplan apply</code> 报错 <code>Error in network definition</code>;</li><li>解决:<ol><li>检查缩进(仅用 2 个空格,禁止 tab);</li><li>检查标点(冒号后需加空格,如 <code>dhcp4: false</code> 而非 <code>dhcp4:false</code>);</li><li>用 <code>sudo netplan try</code> 测试语法,会提示具体错误行。</li></ol></li></ul>
<p class="maodian"><a name="_lab2_6_12"></a></p><h3>3. 配置文件权限警告</h3>
<ul><li>症状:<code>netplan try</code> 提示 <code>Permissions for /etc/netplan/xxx.yaml are too open</code>;</li><li>解决:执行 <code>sudo chmod 600 /etc/netplan/xxx.yaml</code> 修正权限。</li></ul>
<p class="maodian"><a name="_lab2_6_13"></a></p><h3>4. 网卡状态始终 DOWN</h3>
<ul><li>解决:执行 <code>sudo systemctl restart systemd-networkd</code> 重启网络服务,再执行 <code>sudo ip link set ens33 up</code> 启动网卡。</li></ul>
<p class="maodian"><a name="_label7"></a></p><h2>七、配置备份与恢复</h2>
<p class="maodian"><a name="_lab2_7_14"></a></p><h3>1. 备份配置文件</h3>
<div class="jb51code"><pre class="brush:bash;">sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
</pre></div>
<p class="maodian"><a name="_lab2_7_15"></a></p><h3>2. 恢复配置(若出错)</h3>
<div class="jb51code"><pre class="brush:bash;">sudo cp /etc/netplan/00-installer-config.yaml.bak /etc/netplan/00-installer-config.yaml
sudo netplan apply
</pre></div>
<p class="maodian"><a name="_label8"></a></p><h2>总结</h2>
<p>Ubuntu 虚拟机配置静态 IP 的核心是:</p>
<ol><li>清理 NetworkManager 冲突配置;</li><li>编写合规的 Netplan YAML 配置(注意缩进和权限);</li><li>匹配虚拟机网络模式的真实网关;</li><li>先测试再应用,避免配置失效。</li></ol>
<p>按本教程配置后,虚拟机可稳定使用静态 IP,同时保证内网/外网连通性。</p>
<p>以上就是Ubuntu虚拟机配置静态IP的流程步骤的详细内容,更多关于Ubuntu配置静态IP的资料请关注琼殿技术社区其它相关文章!</p>
頁: [1]
查看完整版本: Ubuntu虚拟机配置静态IP的流程步骤