一、为什么局域网的服务器无法在外网访问?
服务器、电脑之间靠IP地址寻址,目前大部分基于IPV4进行寻址访问。但是因为IPV4的地址数量有限,中国分到的还比较少,所以非常紧缺。
一个解决方案就是在局域网来建立一个内部的网段,这个局域网的只在本网段内能互相访问,无法从外网访问。 局域网的一般都是192.168.X.X这样的。
局域网内的服务器使用的是私有 IP 地址,这些地址在互联网上是不可路由的。如果没有通过网络地址转换(NAT)或其他方式将其转换为合法的公网 IP 地址,外网就无法直接访问服务器。
二、外网访问局域网的方法
2.1 端口映射
基本概念:
端口映射是一种网络技术,它在网络地址转换(NAT)中发挥着关键作用,能够实现外网对局域网内服务器或设备的访问。
在局域网环境中,设备通常使用私有 IP 地址,这些地址无法直接在公网上被访问。端口映射通过将公网 IP 地址的某个端口映射到局域网内设备的特定 IP 地址和端口上,让外网用户能够通过访问公网 IP 地址和映射端口来间接访问局域网内的设备。
工作原理
- NAT 设备:通常是路由器,它连接着局域网和公网。NAT 设备拥有公网 IP 地址,局域网内的设备使用私有 IP 地址。
- 映射设置:在 NAT 设备上进行端口映射配置,指定公网端口和对应的内网设备 IP 地址及端口。
- 数据转发:当外网用户访问 NAT 设备的公网 IP 地址和映射端口时,NAT 设备会根据映射规则将数据转发到局域网内指定设备的相应端口上;反之,局域网内设备的响应数据也会通过 NAT 设备按照映射规则返回给外网用户。
服务器需要连接到包含公网IP的服务器上!!但现实运营商给你的是私网IP,几乎无法获得公网IP。
2.2 内网穿透
内网穿透就是别人通过外网能够访问到我们本地的服务器。
这个典型代表就是花生壳。这里是一个软件,在服务器上装一个软件,然后做设置。花生壳给你一个域名,将这个域名与你的一个服务进行映射。
此后别人访问这个域名即可,实际上这个域名,在花生壳的服务器上做了一次解析,同时进行了数据的中转(他们是这么声称的)。
他们有免费的,但是还有映射数量,带宽的限制,想实用估计得收费了。
先来说下市面上一些主流的内网穿透方法:
穿透工具 | 入门简易度 | 价格 |
---|---|---|
Ngrok | 简单 | 免费/付费(几元每月) |
Natapp | 简单 | 免费/付费(几元每月) |
花生壳 | 简单 | 付费(偏贵) |
Ssh、autossh | 难 | 免费 |
Frp | 难 | 付费 |
Lanproxy | 难 | 付费 |
Spike | 难 | 付费 |
三、Linux文件夹+权限
3.1文件夹
FTP与SFTP两者有什么区别
链接方式:FTP使用 TCP 端口 21上的控制连接建立连接。而,SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。
安全性:SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP是非常安全。
效率:SFTP这种传输方式使用了加密解密技术,所以传输效率比普通的FTP要低得多。
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。
- snap:用于存放由 Snap 包管理器安装的应用相关数据和配置。Snap 是一种软件打包和分发格式,能让应用在不同 Linux 发行版上以一致方式运行。
- .nv:可能和 NVIDIA 相关软件、驱动程序的配置或缓存数据有关 ,比如存储 NVIDIA 显卡设置等信息。
- .config:存放各种应用程序的配置文件。不同软件会在该目录下创建自己的子目录来存储专属配置。
- .cache:用于存储应用程序产生的缓存数据,可加快后续程序运行速度,比如网页浏览器的缓存。
- .Xauthority:存储 X Window 系统的认证信息,用于验证用户对 X 服务器的访问权限。
- .sudo_as_admin_successful :可能是记录 sudo 命令以管理员权限成功执行相关信息的文件 ,比如标记上次成功以管理员身份执行 sudo 命令的时间等。
- .profile:用户登录时会执行的配置文件,用于设置环境变量、执行初始化脚本等,可配置用户专属的系统环境。
- .bashrc:Bash shell 的配置文件,每次打开新的 Bash shell 会话时会读取,用于设置命令别名、函数、环境变量等个性化设置。
- .bash_logout :用户退出 Bash shell 会话时执行的脚本文件,可用于执行清理工作等。
- .bash_history :记录用户在 Bash shell 中执行过的命令历史,方便用户查看和重复使用之前的命令。
- 交换 14% 280M/2G:交换空间使用率 14% ,已使用 280MB 交换空间,总交换空间为 2GB 。交换空间是当物理内存不足时,将部分数据暂存到硬盘上的空间。
3.2权限
这些是 Linux 系统中文件和目录权限的表示形式,由 10 个字符组成,含义如下:
首位字符
- d:表示这是一个目录(directory)。如果是
-
,则表示这是一个普通文件 ;如果是l
,代表是符号链接(软链接)。
后续 9 个字符
这 9 个字符按每 3 个一组划分,分别对应文件所有者(user)、所属组(group)、其他用户(others)的权限:
- 读权限(r - read):如果对应位置是
r
,表示具有读取文件内容(对于文件)或列出目录内容(对于目录)的权限 。比如对于一个文件,有读权限就能用cat
等命令查看内容;对于目录,能使用ls
命令列出其中文件和子目录。 - 写权限(w - write):对应位置为
w
时,意味着可以修改文件内容(对于文件),或者在目录中创建、删除文件和子目录(对于目录) 。 - 执行权限(x - execute):当对应位置是
x
,对于文件表示可以运行该程序(如果是可执行程序);对于目录表示可以使用cd
命令进入该目录 。
具体示例分析
drwx- - - - - -
:这是一个目录,所有者有读、写、执行权限(可以读取目录内容、在目录下创建 / 删除文件、进入目录);所属组和其他用户没有任何权限。-rw-r- -r- -
:这是一个普通文件,所有者有读和写权限(能读取和修改文件内容);所属组和其他用户只有读权限(只能读取文件内容,不能修改)。
3.3网络接口
- lo:环回接口(Loopback Interface) ,是虚拟网络接口。主要用于本地计算机内部的网络通信测试,其 IP 地址一般是
127.0.0.1
,发送到该接口的数据包不会通过物理网络传输,而是直接返回给发送者,可用于测试网络应用程序。 - enp5s0:以太网接口 ,遵循 PCI (Peripheral Component Interconnect,外设部件互连标准设备命名规范。)“en” 表示以太网Ethernet,“p5” 中 “p” 代表 PCI 设备,“5” 是设备在 PCI 总线上的物理位置编号 ,“s0” 中 “s” 表示插槽slot,“0” 是在对应插槽中的编号 。
- enp6s0:同样是以太网接口 ,命名规则与 enp5s0 类似 ,只是设备在 PCI 总线上的物理位置编号为 “6” 。
- ztre4zox2z:可能是某种虚拟网络设备或隧道接口 ,比如由特定虚拟网络技术(如 ZeroTier 等虚拟专用网络技术)创建的虚拟网络接口 ,用于实现特定的网络连接或组网需求。
- docker0:Docker 创建的虚拟网桥接口 。Docker 容器默认通过它进行网络通信 ,它允许容器与宿主机以及其他容器之间进行网络交互,实现容器网络的互联互通。
- vethb256abf:veth(Virtual Ethernet Pair ,虚拟以太网卡对)接口 ,常用于容器网络等场景。它总是成对出现,可用于连接不同的网络命名空间,实现网络通信和隔离 。
四、Linux常见命令
Debian、Ubuntu 和 CentOS 都是优秀的 Linux 发行版,几乎都是服务器用,ubuntu友好,GUI界面。
sudo apt update 更新系统软件包。 sudo代表以超级用户权限执行命令。它允许普通用户以管理员(root)的权限来运行特定的命令,apt是 Advanced Package Tool 的缩写,是一个功能强大的软件包管理工具。
wget 是一个用于从网络上下载文件的命令行工具。
ls 命令(list)是用于列出目录中的文件和子目录
sudo whoami
是一个在 Linux 或类 Unix 系统中的命令,用于以超级用户(root)的身份查看当前用户的用户名。
watch -n 1 nvidia-smi #每隔 1 秒执行一次 nvidia-smi 命令,并将输出结果实时显示在终端上。这样你就可以实时监控 NVIDIA GPU 的状态