在 Ubuntu 18.04 中配置静态 IP 及灵活切换

news2025/1/24 5:48:30

Ubuntu 18.04 使用 Netplan 来配置 IP 地址,Netplan 是一个新的命令行网络配置工具。

新的 IP 配置方法不会再用到 /etc/network/interfaces 这个文件,取而代之的是一个 YAML 文件。

默认的 Netplan 配置文件一般在 /etc/netplan 目录下。

查看当前 ip 和 网关

ifocnfig
route -n

找到 Netplan 默认的网络配置文件所在之处:

$ ls /etc/netplan/
00-installer-config.yaml

然后我们再看一下这个文件的内容是什么:

$ cat /etc/netplan/00-installer-config.yaml
network:
    ethernets:
        ens33:
            dhcp4: yes
            addresses: [] 	 

    version: 2

网卡默认配置为从 DHCP 服务器中获取 IP,如果是双网卡,可能还会有一路配置,比如像下面这种:

network:
    ethernets:
        ens33:
            dhcp4: yes
            addresses: [] 
	    ensxx:
            dhcp4: yes
            addresses: []
version: 2

现在给网卡配置为静态 IP 地址,打开配置文件。

$ sudo vim /etc/netplan/00-installer-config.yaml

接下来我们分别添加 IP 地址、子网掩码、网关、DNS 服务器等配置。

分别用 192.168.0.4 作为网卡 enp33 的 IP 地址,

192.168.0.1 作为网关地址,

255.255.255.0 作为子网掩码。

然后用 8.8.8.8 、 8.8.4.4 这两个 DNS 服务器 IP。

# This is the network config written by 'subiquity'
network:
        ethernets:
                ens33:
                        addresses: [192.168.0.4/24]
                        #addresses: []
                        gateway4: 192.168.0.1
                        dhcp4: no
                        #dhcp4: true
                        nameservers:
                               addresses: [8.8.8.8]
                        optional: true
        renderer: networkd
        version: 2

要注意的一点是,在 Ubuntu 18.04 里,这个配置文件的每一行都必须靠空格来缩进,不能用 TAB 来代替,否则配置会不起作用。

同时,在 Ubuntu 18.04 中,我们定义子网掩码的时候不是像旧版本的那样把 IP 和子网掩码分成两项配置。

在旧版本的 Ubuntu 里,我们一般配置的 IP 和子网掩码是这样的:

address = 192.168.225.50

netmask = 255.255.255.0

而在 netplan 中,我们把这两项合并成一项,就像这样:

addresses : [192.168.0.4/24]

配置完成之后保存并关闭配置文件。然后用下面这行命令来应用刚才的配置:

$ sudo netplan apply

如果在应用配置的时候有出现问题的话,可以通过如下的命令来查看刚才配置的内容出了什么问题。

$ ip addr

在我的 Ubuntu 18.04 中配置完之后执行命令输出的信息如下:

到此为止,我们已经成功地在 Ubuntu 18.04 LTS 中用 Netplan 完成了静态 IP 的配置。

更多关于 Netplan 的信息,可以在用 man 命令在手册中查看:

$ man netplan

在 Ubuntu 18.04 LTS 中配置动态 IP 地址

其实配置文件中的初始配置就是动态 IP 的配置,所以你想要使用动态 IP 的话不需要再去做任何的配置操作。如果你已经配置了静态 IP 地址,想要恢复之前动态 IP 的配置,就把在上面静态 IP 配置中所添加的相关配置项删除,把整个配置文件恢复成上面的图 1 所示的样子就行了。

灵活的在不同IP之间切换

如果你用的电脑是公司配置的或者电脑总是在公司和家里两边带的时候,而公司和家里的IP网段不一样的话,就有可能会经常要切换IP,

通常用ifconfig命令来修改IP地址,

[root@ubuntu_servers]# ifconfig eth0 192.168.2.10 
[root@ubuntu_servers]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 
[root@ubuntu_servers]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 

但ifconfig只是临时改一下,重新开机又会恢复原来的,像国庆长假在家,每次开机都要输入指令也很麻烦。

如果每次修改静态IP,则要打开并修改/etc/netplan/00-installer-config.yaml文件,然后 netplan apply一下,也很麻烦,有没有一种办法能简化一下了?

当然是有的,这里提供一个思路:写一个shell脚本,每次要修改IP时,就执行一下脚本就行了:

#!/bin/bash

ip=1
#:<< block
while [ 1 ]
do
echo -n "input ip field[0 3]:"

	read -p "0 or 3 ? " ip
	case $ip in
	0) break ;;
	3) break ;;
	*) echo "input error, input 1 or 3."
	esac
done
#block

#方法二
:<< block 
echo  "input ip field[0 3]:"
ip1=0
ip2=3
select ip in $ip1 $ip2
do 
	if [ $ip -eq $ip1 ] ; then
		break
	fi
	
	if [ $ip -eq $ip2 ] ; then
		break
	fi

	echo -n "input 0 or 3 :"
	#continue
	
done
block


echo "set ip=192.168.$ip.4"

if [ $ip -eq 0  ]
then
	if [  -e 00-installer-config.yaml.0.x ]
	then
		cp 00-installer-config.yaml.0.x  00-installer-config.yaml
		netplan apply
		sleep 2s
		ip addr
	else
		echo "ERR: 00-installer-config.yaml.0.x is not exist!!"
	fi
fi


if [ $ip -eq 3  ]
then
	if [  -e 00-installer-config.yaml.3.x ]
	then
		cp 00-installer-config.yaml.3.x  00-installer-config.yaml
		netplan apply
		sleep 2s
		ip addr
	else
		echo "ERR: 00-installer-config.yaml.3.x is not exist!!"
	fi
fi

将00-installer-config.yaml 分别复制成 00-installer-config.yaml.0.x 和 00-installer-config.yaml.3.x ,并修改内部IP地址,如下:

这样只要输入命令:

在/etc/netplan/

./net.sh

或者

./etc/netplan/net.sh

提示输入IP段:

IP段输入0,回车:

程序会自动选择目标yaml文件,并修改当前yaml文件,并打印修改后激活的IP。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv_04条形码区域分割

基于OpenCV的条形码区域分割 要基于OpenCV实现条形码区域分割&#xff0c;可以按照以下步骤进行&#xff1a; 加载图像&#xff1a;使用OpenCV中的imread函数读取待处理图像。灰度化&#xff1a;使用OpenCV中的cvtColor函数将彩色图像转换为灰度图像。边缘检测&#xff1a;使用…

java-android面试-线程状态

开篇一张图&#xff08;本图来源于网络&#xff09;&#xff0c;余下全靠编&#xff0c;我们正式开始。 一、线程的状态 总共有6种状态&#xff0c;分别如下&#xff1a; 1. 新建状态(New): 线程对象被创建后&#xff0c;就进入了新建状态。例如&#xff0c;Thread thread …

ShareSDK Google平台注册指南

注册开发者账号 访问Firebase&#xff0c;使用Google账号登录 创建项目 登录完成后&#xff0c;点击转到控制台 点击添加项目 输入项目名称&#xff0c;点击继续 根据需要选择是否开启Google Analytics&#xff08;分析&#xff09;&#xff0c;点击继续 选择Google Analytic…

04 【Sass语法介绍-运算】

1.前言 运算是一种通过已知量可能的组合&#xff0c;获得新的量的行为。Sass 中也为我们提供了各种各样的运算&#xff0c;以便我们更好的处理样式代码。本节我们将学习 Sass 中的数字运算、关系运算、除法运算、颜色运算、字符串运算等等… 2.什么是 Sass 运算&#xff1f; …

ArcGIS Pro坐标系统

目录 1 测量学基础 1.1 地球的形状和大小 1.1.1 大地水准面 1.1.2 大地体 1.1.3 地球椭球 2 坐标系统 2.1 地理坐标系 2.2 投影坐标系 2.3 局部坐标系&#xff08;假定坐标系&#xff09; 2.4 高程坐标系 3 地图投影 3.1 投影概念 3.2 投影分类 3.3 投影类型 3.…

长按实现安卓端下载图片和安装包

①长按按钮保存图片至安卓手机相册 using System.Collections; using System.Collections.Generic; using UnityEngine;public class LongPress : MonoBehaviour {//设置变量记录触摸时间与bool触摸private float touchTime;private bool newTouch = false;void Update () {//判…

在线问诊小程序系统方案以及价值

方案价值zlzwgz0127 1.扩大医院流量 a.预约到院 在线展示专家的介绍&#xff0c;更能彰显实力&#xff0c;吸引患者来院就医&#xff0c; 用户可选择在线问诊和预约到院 b.社区团购导流 与我们合作社区团购给医院的体检产品导流 c.专家直播导流 通过专家直播吸引潜在患者…

( 哈希表) 1. 两数之和 ——【Leetcode每日一题】

哈希表使用 O ( N ) O(N) O(N) 空间复杂度存储数据&#xff0c;并且以 O ( 1 ) O(1) O(1) 时间复杂度求解问题。 ❓1. 两数之和 难度&#xff1a;简单 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&am…

计算机网络【1】 TCP/IP

OSI七层模型与TCP/IP四层模型 首先简单说一下OSI参考模型&#xff0c;OSI将网络分为七层&#xff0c;自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层&#xff0c;而TCP/IP体系结构则将网络分为四层&#xff0c;自下而上分别是网络接口层、网络层、…

如何冲破 GPT-4 的信息茧房?

由于大模型的成功经验&#xff0c;整个 AI 领域纷纷转向&#xff0c;要么是将模型架构换为 Transformer&#xff0c;要么是将小模型换为大模型&#xff0c;要么是将建模方式换为自监督、自回归范式等等。 GPT-4 推出后&#xff0c;各种 demo 充斥网络空间&#xff0c;写代码、…

论文投稿指南——如何让SCI论文英语更地道(细节掌握)

​ 学术论文英文写作都要符合ABC三个基本点&#xff1a;准确、简洁和清晰 (Accurate\Brief\Clear)&#xff0c;在此基础上做好必要的细节&#xff0c;可以让你的英文写作更地道化、学术化。以下建议可供各位小伙伴参考&#xff1a; 一、错误用法 ★ So/But/And/Also…等连接词…

如何判定自己适合自学编程还是报班?

首先在这里&#xff0c;不做偏向性推荐&#xff0c;主要还是看个人条件。 宝剑锋从磨砺出&#xff0c;学习本身是一件艰苦的事情。在决定之前&#xff0c;建议先按照下图问自己三个问题自我检测。 如果你还不能确定&#xff0c;自学和报班的优劣势分析&#xff0c;或许能帮你们…

Spring JDBC和事务控制

目录 Spring JDBC 和 事务控制主要内容Spring 整合 JDBC 环境构建项目添加依赖坐标添加 jdbc 配置文件编写 spring 配置文件配置数据源C3P0 数据源配置DBCP 数据源配置 模板类配置Spring JDBC 测试 &#xff08;入门&#xff09;创建指定数据库创建数据表使用 JUnit 测试JUnit …

面试题30天打卡-day14

1、线程的生命周期是什么&#xff0c;线程有几种状态&#xff0c;什么是上下文切换&#xff1f; 线程通常有五种状态&#xff1a;创建&#xff0c;就绪&#xff0c;运行、阻塞和死亡状态。 新建状态&#xff08;New&#xff09;&#xff1a;新创建了一个线程对象。就绪状态&am…

超赞的实用前端社区精选?

转载 作者&#xff1a;黑马程序员前端 链接&#xff1a;https://www.zhihu.com/question/39503897/answer/2998752442 社区精选 | 好的前端社区可以根据其特点和领域进行分类整理&#xff1a; 1. 问答社区 Stack Overflow&#xff08;https://stackoverflow.com/&#xf…

【一起撸个DL框架】3 前向传播

CSDN个人主页&#xff1a;清风莫追 欢迎关注本专栏&#xff1a;《一起撸个DL框架》 文章目录 3 前向传播&#x1f95d;3.1 前情提要3.2 前向传播&#xff1a;递归的forward方法3.3 再添乘法节点&#xff1a;搭建函数y2x13.4 小结 3 前向传播&#x1f95d; 3.1 前情提要 上一篇…

vue - 实现对div的拖动功能

实现对div的拖动功能&#xff0c;需要先要知道以下的一些原生事件和方法&#xff1b; 1&#xff0c;事件: 方法描述onmousedown鼠标按钮被按下onmousemove鼠标被移动onmouseup鼠标按键被松开 2&#xff0c;方法: 方法描述event.clientX返回当事件被触发时鼠标指针相对于浏览…

基于elementplus 实现多级表格 最后一级展示图片

想要实现的效果 总共四级 前三级是表格 第四级使用图片展示&#xff1b; 看了一下官网 计划使用官网的树形结构&#xff0c; 但是发现并不能满足最后一个是图片形式的展示 最后利用了表格的expand&#xff1b; 在过程中主要需要解决的问题有&#xff1a;vue3 递归使用组件&am…

JavaScript题解2652.倍数求和|容斥原理

解题思路 在JavaScript中计算7/3*3&#xff0c;结果是7&#xff0c;而不是6。这是因为JavaScript中除法运算符&#xff08;/&#xff09;得到的结果是一个浮点数&#xff0c;而不是一个整数。 具体来说&#xff0c;7/3得到的结果是2.3333…&#xff0c;然后再乘以3得到7.0000…

辞了外包,上岸字节我落泪了,400多个日夜没人知道我付出了多少....

前言&#xff1a; 没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2023年3月&#xff0c;我有幸成为了字节跳动的一名自动化测试工程师&am…