连网
“连网”
平时我们说的连网,连网到底是什么呢?为什么实验室的主机只能接网线或者连接 wifi 才能访问互联网上的各种资源呢?
为了搞清楚这个问题,需要搞懂下面几个概念
连网:主机通过有线或无线方式接入网络,获得 IP 地址,并能够与其他设备或互联网进行数据通信的过程。
主机网络通信的方法
公网通信
两台主机都有公网 IP, 可以直接通过 ssh user@公网 IP 连接
这种通常只适用于具有固定公网 IP 的设备连接。
家庭的宽带通常是动态的公网 IP (重启光猫以后会变化),企业或者云服务器才是静态公网 IP 。
- 解释家里为什么只有连接
wifi(连接路由器)才能访问互联网上的各种资源。
只要是需要访问互联网上的资源,那么都需要设备具有公网 IP, 但是手机等设备出厂时只有 mac 地址,连接路由器的才会给你分配 IP 地址(IP 地址是逻辑地址,由网络环境决定的),但是就算给你分配了,也只是内网 IP,路由器才是唯一具有公网 IP 的设备。
不过连接的路由器会将你的内网 IP 结合自己的 WAN 口(公网 IP)转换成公网 IP,收到回复包的时候,又将这个公网 IP 转换成内网 IP 从而找到你的设备,这其中牵扯到的协议叫做 NAT 协议,这里先不仔细讲了,大概是实现了地址转换的意思。
Ps. 用
4G/5G是不经过家用路由器,直接通过基站连接到运营商的核心网,然后运营商给你分配 CGNAT IP/ 公网 IP 。
局域网通信
同一局域网内通信
在同一局域网下面,通过局域网的 IP 能够直接进行通信。这个用的比较多,一般公司/学校/实验室内部服务器都是通过这种方式。
那么有些时候为了固定比如监控摄像头和打印机的 IP 或者实验室根本就没有路由器(纯内网通信),这个时候作为计算机专业的我们,可能会让我们配置静态 IP。
于是就会接触下面的概念:
- 子网掩码:用于划分网络地址和主机地址。同一局域网的所有 IP & 上这个掩码都会得到同一个地址(一般就填 255.255.255.0 )
- 默认网关:当访问不是局域网的地址的时候,数据包就会发给网关。通常是路由器的内网 IP ,大多数默认网关的 IP 地址的最后一位是 1 或者 254(0 不可以,255 用作广播)
- DNS 服务器:用于将输入的域名解析成 IP 地址,比较方便。DNS 服务器通常填 114.114.114.114 这种公共 DNS 服务器即可
在纯内网通信(实验室中常用)当中,交换机由于没有 DHCP 服务器,就没有自动分配 IP 的功能(路由器有),所以这个时候只能通过手动配置 IP 的方式来实现通信。
这个时候只需要所有的机器都在同一个网段,比如
1 | |
- 如何配置一个新设备的静态 IP
- 记录同网段下另一台配置好得设备的网段 (IP + 子网掩码 192.168.31.0/24)和默认网关( 192.168.31.1)
- 选择一个不冲突的静态 IP(ping 一下看看连不连通),登录设备的管理界面,这个一般根据设备的不同有些许不同,可以查看下表:
| 设备类型 | 登录方式 |
|---|---|
| 打印机 | 1. 在打印机面板上查看 IP 2. 用浏览器访问该 IP 3. 输入管理员账号密码(默认常印在机身) |
| 交换机(网管型) | 1. 用 Console 线(串口)连接电脑 2. 用终端软件(PuTTY、SecureCRT)登录 |
| 摄像头 / NAS | 浏览器访问 IP 或专用客户端 |
| Linux 服务器 | SSH 登录后修改网络配置文件 |
- 配置 IP 参数(一般内网就配置 IP 地址和子网掩码就可以)同时保存验证,比如用新 IP 能够重新访问设备的管理界面和用其他设备 ping 一下这个设备来测试连通。
不同局域网之间通信
跳板机:一个专门用于中转访问内网资源的 “堡垒” 服务器,一般用于集中管理访问权限。
比如公司的数据库服务器,或者内部的 API 服务部署在私有网络中,处于安全考虑不允许直接暴露到互联网中。所以他们没有公网 IP,同时又不可能和你在一个局域网内,这个时候就需要先登录一台有公网 IP 的跳板机,再从它跳转过去。
这样目标服务器就实现了完全隔离,其防火墙只允许跳板机 IP 访问 SSH 端口。
- 那么我们如何能够通过跳板机来连接目标服务器呢?
最推荐的就是直接编辑本地电脑的 SSH 配置文件(~/.ssh/config 文件)。假如我们有如下信息
| 角色 | 信息 |
|---|---|
| 跳板机 | 公网 IP: 203.0.113.10,用户名: abc,SSH 端口: 22 |
| 目标服务器 | 内网 IP: 10.0.1.20,用户名: cba |
那么直接在配置文件中定义如下即可:
1 | |
vscode 下载相应的插件以后读取这个配置,就能直接连接内部服务器,实现代码编辑和文件上传(vscode 内置的 SFTP )。也有人用 xftp 或者 Filezilla 来实现文件传输,我没用过,所以暂时不评论。
Ps. vscode 具体操作就是调出命令面板,remote-ssh: connet to host。
这个暂时没有接触到,先挖个坑。。。