实验环境以及设备参考:
某局域网当中的 Ubuntu 20.04 虚拟机测试
Pystun 基础知识 及 环境安装
A Python STUN client for getting NAT type and external IP.
ubuntu 20.04 上安装Python 以及简易的工作环境 为了能够兼容之后的机器学习以及包管理,决定使用anaconda提供python环境,再使用env保证python版本的一致
# 下载anaconda 安装脚本
# 请选择自己需要的版本,查看版本的网址是:[清华镜像](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=A)
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.05-Linux-x86_64.sh
# 安装anaconda
# 如果没有特殊情况,就请一路回车,除非要自己修改anaconda 的安装路径
bash Anaconda3-2022.05-Linux-x86_64.sh
# 配置Python的环境变量
# 打开命令行配置文件
gedit ~/.bashrc
#添加anaconda Python依赖的位置,这个路径请依照安装时候的路径
export PATH="/home/【自己的用户名】/anaconda3/bin:$PATH"
source ~/.bashrc
# 创建需要版本的Python环境,激活并进入
conda create --name test_pystun python=3.10
conda activate test_pystun
OK 到这里基础的Python环境就安装完毕了 参考资料和文章1,2,3
安装Pystun
# 直接Python pip安装
pip install pystun
但由于虚拟机的Python环境比较纯净,所以其实大部分的Python包并没有引入,也就导致报错
转而只能使用第二种办法:Git clone源代码之后在本地生成客户端和工具使用
使用git指令的时候遇到,apt端口被占用的问题【这是一个经常常见的问题】
这个问题的核心是之前有下载的进程还在占用apt,所以要么只有等之前那个进程结束,要么就只能删除对应的锁文件
# 查看占用的线程
ps -A | grep apt
看来应该是系统监测的线程占用了,直接删除应该不影响系统运行
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo apt-get update
果然是检测占用了端口
!!!!突发情况,正常安装git的流程之后,突然出现
参考了stackflow的解决方案,也没能够处理
最终解决方案是: reboot重启 重启之后可以正常安装Git工具
但是仅使用git clone 遇到了网络连接问题:
最终解决方案是,现在本地windows上下载github项目工程的zip包,然后再上传到服务器当中的虚拟机里
以下为ubuntu 解压缩zip包指令:unzip target.zip
zip指令参考文章
但是,使用源代码安装,依旧出现相同的问题:--》判断可能是源代码出了问题。
如果要进一步修改的话,需要降低现在pystun安装的版本[未测试]
使用 Pystun 来检测
找到一台正常安装有pystun的机器,在命令行输入:
root@ke-edge2:~/dyx/Tools/pystun# pystun
NAT Type: Symmetric NAT
External IP: 159.***.***.***
External Port: *****
[好像就没有其他需要认知的内容了(再安装和配置上算是浪费了很多时间?)]
关键内容是:
- Symmetric NAT
- External IP及 External Port 依照这个内容,做以下的知识点收集复习
-
NAT 的主要类型 复习之前的NAT穿透原理 NAT(Network Address Translation,网络地址转换),也叫做网络掩蔽或者IP掩蔽。NAT是一种网络地址翻译技术,主要是将内部的私有IP地址(private IP)转换成可以在公网使用的公网IP(public IP) 目前NAT的实现方式有:
-
静态NAT: 一个公网IP对应一个私有IP,是一对一的转换,但是这个只进行了IP转换,而没有进行端口的转换。
-
NAPT(端口多路复用技术) :NAPT要转换IP地址同时还要进行传输层的端口转换。具体的表现形式就是,对外只有一个公网IP,通过端口来区别不同私有IP主机的数据。
NAT的主要类型: 1)完全锥型NAT(Full Cone NAT,后面简称FC) 特点:IP和端口都不受限
2)受限锥型NAT(Restricted Cone NAT) 特点:IP受限,端口不受限。
3)端口受限型NAT(Port Restricted Cone NAT) 特点:IP和端口都受限。
4)对称型NAT(Symmetric NAT) 特点:对每个外部主机或端口的会话都会映射为不同的端口(洞)
-
-
External IP 以及 External Port
实际电脑的地址划分:
- external(外部)IP地址 连接到Internet时,由的Internet服务提供商(ISP)分配的外部IP地址。
- local(内部)IP地址 局域网内部路由器分配的地址,外部需经过地址转化才能够访问到。