首页
学习笔记
经验教程
标杆项目
个人简历
ZDREAM - Thassarian 的个人技术博客
对抗变化的方法唯有拥抱变化。
累计撰写
35
篇文章
累计创建
3
个标签
累计收到
1
条评论
栏目
首页
学习笔记
经验教程
标杆项目
个人简历
目 录
CONTENT
以下是
数通网工
相关的文章
2023-11-29
网络问题排查的一些常用命令与思路
排查网络问题,本质上是一个由表及里、逐层排除的过程。比较稳妥的思路是:先点到点(ping) -> 再到端口(telnet) -> 再看路径(traceroute)。同时结合 服务端自查(netstat、curl),逐步缩小问题范围。如果问题指向中间网络,再深入到防火墙策略和路由规则。一、 客户端/终端侧排查第一步排查始于问题发生点,无论是开发人员的本地环境、用户的PC,还是发起API调用的另一台服务器,都可以视作“客户端”。1. ping最基础也最常用的命令,用于检查网络连接的基本可达性。它通过ICMP协议发送回声请求,测试目标主机是否在线以及网络延迟。ping 114.114.114.114看到类似 time=...ms TTL=... 的返回,说明至少在网络层面上,你的设备和目标服务器之间是连通的。如果超时(Timeout),则说明网络不通,或者对方禁用了ICMP协议(部分服务器会出于安全考虑关闭ping响应)。2. ipconfig / ifconfig用于查看本地网络配置。在采取任何行动前,先确认自己的网络配置是否正确。Windows: ipconfigLinux/macOS: ifconfig 或 ip addr主要关注点是本机IP地址、子网掩码和默认网关。有时候问题仅仅是本地IP配置错误或DHCP没有获取到正确地址。3. traceroute / tracert如果 ping 不通,或者延迟很高,可以用这个命令来探测数据包从源到目的地所经过的路由路径。Windows: tracertLinux: traceroutetracert www.example.com它会列出数据包经过的每一个路由器(“跳”)。如果在某一跳开始出现 * * * 或高延迟,问题很可能就出在那个节点或其后的链路上。这对于判断问题是出在内部网络、运营商网络还是目标网络非常有帮助。4. telnet / ncping 只能确认网络层(IP层)的可达性,但服务通常运行在传输层(TCP/UDP)的特定端口上。telnet 或 netcat(nc) 可以用来检查某个IP的特定端口是否开放和监听。# 检查目标服务器的8080端口是否开放 telnet 192.168.1.100 8080如果屏幕变黑或显示连接成功信息,说明端口是开放的,应用正在监听。如果提示“Connection refused”,说明服务器拒绝了连接,可能是服务未启动或防火墙拦截。如果长时间无响应,说明请求在中间某个环节被丢弃了,很可能是网络设备(如防火墙)拦截了。二、 服务端侧排查如果客户端到服务器的路由是通的,但服务依旧不可用(例如 telnet 端口不通),焦点就要转移到服务器本身。1. netstat / ss用于检查服务器自身的网络连接和监听状态。ss 是 netstat 的一个更快、更现代的替代品。# 查看所有监听的TCP端口 netstat -tulnp # 或者使用ss,并过滤特定端口(如8080) ss -tuln | grep 8080这个命令可以快速确认服务是否已成功启动并在预期的端口上进行监听。如果没有找到对应的端口,那问题就是应用本身没有启动成功。2. curl / wget在服务器本地测试服务是否正常。这可以排除外部网络因素,验证应用本身的功能。# 从服务器本地访问自己的web服务 curl http://127.0.0.1:8080/health如果本地访问正常,但远程访问失败,那么问题几乎可以锁定在服务器的防火墙、安全组策略或上游网络设备上。3. tcpdump这是一个强大的网络抓包工具,是网络问题排查的“大杀器”。当其他方法都无法定位问题时,可以用它来捕获流经网卡的原始数据包,分析最底层的通信细节。# 抓取80端口的TCP流量 tcpdump -i eth0 tcp port 80 -nn通过分析抓包结果,可以清晰地看到TCP三次握手是否成功、数据传输是否完整、是否有异常的RST包等。4. 查看日志最后但同样重要的一点,检查应用日志、中间件日志(如Nginx、Tomcat)和系统日志(/var/log/messages 或 journalctl)。很多时候,连接问题会在日志中留下明确的错误信息。三、 网络设备/网关侧当终端和服务端自查都正常,问题很可能出在中间的链路上,比如公司的防火墙、路由器、交换机,或者云平台的安全组。这个层面通常需要网络管理员或有相应权限的运维人员介入。1. 访问控制/防火墙规则检查防火墙(无论是硬件防火墙、iptables,还是云厂商的安全组/NACL)的策略。这是最常见的“中间”问题。核心检查点: 是否允许来自源IP(或IP段)的流量访问目标IP的特定端口和协议(TCP/UDP)。规则遵循“最小权限”原则,默认拒绝所有未明确允许的流量。2. 路由规则在复杂的网络环境中,路由器需要知道如何将数据包转发到正确的目的地。核心检查点: 检查路由表。确认是否存在到达目标网段的正确路由,是否存在路由黑洞或错误的下一跳。在路由器或交换机上,通常使用 show ip route 或 display ip routing-table 等命令查看。
2023-11-29
16
0
0
数通网工
2023-04-24
FRP部署配置及安全性加强
frp 是什么?frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。一、基础配置使用(ssh为例)下载地址:https://github.com/fatedier/frp/releases1、在具有公网 IP 的机器上部署 frps部署 frps 并编辑 frps.toml 文件以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:bindPort = 7000 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。$ sudo nano /etc/systemd/system/frps.service 写入内容[Unit] 命令启动服务器:./frps -c ./frps.toml。使用 systemd 命令管理 frps 服务# 启动frp 设置 frps 开机自启动sudo systemctl enable frps2、在需要被访问的内网机器上部署 frpc部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。示例配置:serverAddr = "x.x.x.x" name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6000 localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口。remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。启动客户端:./frpc -c ./frpc.toml。3、通过 SSH 访问内网机器使用以下命令通过 SSH 访问内网机器,假设用户名为 test:ssh -o Port=6000 test@x.x.x.x frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口。二、更安全地暴露内网服务通过创建一个只有授权用户能够访问的 SSH 服务代理,实现内网服务的安全暴露。某些内网服务,如果直接暴露在公网上,可能存在安全风险。使用 stcp(secret tcp) 类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端。配置 frps.toml在 frps.toml 文件中添加以下内容:bindPort = 7000 部署 frpc 客户端并配置在需要将内网服务暴露到公网的机器上部署 frpc,并创建如下配置:serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] 在访问者机器上部署并配置 frpc在想要访问内网服务的机器上也部署 frpc,并创建如下配置:serverAddr = "x.x.x.x" 通过 SSH 访问内网机器使用以下命令通过 SSH 访问内网机器,假设用户名为 test:ssh -o Port=6000 test@127.0.0.1三、通过自定义域名访问内网的 Web 服务通过简单配置 HTTP 类型的代理,您可以让用户通过自定义域名访问内网的 Web 服务。HTTP 类型的代理非常适合将内网的 Web 服务通过自定义域名提供给外部用户。相比于 TCP 类型代理,HTTP 代理不仅可以复用端口,还提供了基于 HTTP 协议的许多功能。HTTPS 与此类似,但是需要注意,frp 的 https 代理需要本地服务是 HTTPS 服务,frps 端不会做 TLS 终止。也可以结合 https2http 插件来实现将本地的 HTTP 服务以 HTTPS 协议暴露出去。1、配置 frps.toml在 frps.toml 文件中添加以下内容,以指定 HTTP 请求的监听端口为 8080:bindPort = 7000 如果需要配置 HTTPS 代理,还需要设置 vhostHTTPSPort。2、配置 frpc.toml在 frpc.toml 文件中添加以下内容,确保设置了正确的服务器 IP 地址、本地 Web 服务监听端口和自定义域名:serverAddr = "x.x.x.x" 3、启动 frps 和 frpc略。4、域名解析将 www.yourdomain.com 和 www.yourdomain2.com 的域名 A 记录解析到服务器的 IP 地址 x.x.x.x。如果服务器已经有对应的域名,您还可以将 CNAME 记录解析到原始域名。另外,通过修改 HTTP 请求的 Host 字段也可以实现相同的效果。5、通过浏览器访问使用浏览器访问 http://www.yourdomain.com:8080 即可访问内网机器上的 80 端口服务,访问 http://www.yourdomain2.com:8080 可以访问内网机器上的 8080 端口服务。四、点对点内网穿透这个示例将演示如何通过点对点 (P2P) 连接来访问内网服务,流量不会通过服务器中转。frp 提供了一种新的代理类型 xtcp,用于在需要传输大量数据且不希望流量经过服务器的情况下实现内网穿透。与 stcp 类似,使用 xtcp 需要在两端都部署 frpc 以建立直接连接。需要注意的是,xtcp 并不适用于所有类型的 NAT 设备,如果穿透失败,可以尝试使用 stcp 代理。1、配置需要暴露到外网的机器上的 frpc.toml 文件在 frpc.toml 文件中添加以下内容,确保设置了正确的服务器地址和端口以及共享密钥 (secretKey),以及本地服务的 IP 地址和端口:serverAddr = "x.x.x.x" 2、在想要访问内网服务的机器上部署 frpc在 frpc.toml 文件中添加以下内容,确保设置了正确的服务器地址和端口,共享密钥 (secretKey) 以及要访问的 P2P 代理的名称:serverAddr = "x.x.x.x" 3、通过 SSH 访问内网机器使用 SSH 命令访问内网机器,假设用户名为 test:ssh -oPort=6000 test@127.0.0.1
2023-04-24
7
0
0
数通网工
2023-03-29
内网穿透的几点思考:从FRP原理到方案选择
一、核心原理市面上许多内网穿透服务,如花生壳,其技术基石与开源项目FRP是相通的,即反向代理。可以把这个过程理解为一个“服务总机”模型:内网设备(Client):身处一座无法从外部直接拨号进入的大楼内部。它知道“总机”的公共电话号码。公网服务器(Server):就是那台“总机”,它拥有一个所有人都能拨打的公共电话号码(公网IP)。外部访问者(Visitor):想要联系大楼内某个特定服务的人。工作流程如下:主动注册:内网的frpc(客户端)启动后,会主动拨打公网frps(服务端)的电话,并保持这条线路通话。它告诉总机:“你好,我是内部的3389端口服务。如果外面有人打总机的12345分机号找我,请把通话转接给我。”请求中继:当外部访问者访问公网服务器IP:12345时,请求实际上是打给了“总机”。连接建立:总机frps收到请求,根据之前frpc注册的规则,通过已经建立好的那条内部线路,将这个外部请求原封不动地转发给内网的frpc。frpc再将请求交给本地的3389端口。至此,一次从公网到内网的连接就打通了。花生壳花生壳可以看作是一个大规模、商业化、并提供了友好图形界面的FRP服务集群。它的特点是:针对端口 (Port-based):操作的核心对象是端口。用户创建一个映射规则,如 your-domain.hsk.me:12345 -> 192.168.1.100:3389。公网暴露 (Publicly Exposed):映射一旦建立,your-domain.hsk.me:12345这个地址就在公网上变得可访问。任何知道该地址的人都可以尝试连接,因此服务的安全性高度依赖于被暴露的内网服务本身(例如,Windows的登录密码强度)。 二、典型场景:远程桌面(RDP)将内网Windows主机的3389端口通过FRP或花生壳暴露到公网,是实现远程桌面控制的常见“DIY”方案。但它和“向日葵”、“TeamViewer”这类成熟的远程桌面软件相比,存在显著差异。这好比是“DIY手动挡”与“品牌自动挡”的区别。FRP/花生壳 + RDP:一个强大、灵活的工具包。它利用基础协议实现远程访问,适合技术人员连接自己完全受控的设备,但使用者必须对安全加固措施有清晰的认知。向日葵/TeamViewer:一个成熟、可靠的一站式产品。它封装了所有复杂的技术细节,提供安全、易用、功能丰富的体验,更适合为非技术人员提供支持,或在不稳定的网络环境中工作。特性FRP/花生壳 + RDP (3389) 向日葵/TeamViewer安全性高风险! 直接将RDP端口暴露在公网,是黑客和扫描机器人的首要攻击目标。安全性完全依赖于:<br>1. 极其复杂的Windows登录密码。<br>2. 开启网络级别身份验证(NLA)。<br>3. (可选)修改默认的3389端口为其他高位端口。<br>安全责任完全在你。高得多。它们不直接暴露端口。连接是通过一个ID和随机密码来建立的,这个密码通常是临时的。所有连接都经过其服务器中继和强加密。它们有专门的团队负责安全。易用性对技术人员友好。你需要知道域名、端口号,并使用Windows自带的“远程桌面连接”客户端。对于非技术人员(比如父母)来说,这个过程很复杂。对所有人友好。设计初衷就是为了简单。只需要告诉对方一个ID和密码即可连接,几乎不需要任何网络知识。功能丰富度基础。你只能得到一个纯粹的远程桌面。文件传输需要手动映射驱动器,没有内置的聊天、会话录制、远程重启等功能。非常丰富。集成了文件传输、远程命令行(CMD)、聊天、会话录制、多屏幕切换、远程重启到安全模式等大量为远程支持量身定做的功能。网络适应性一般。Windows RDP协议对网络延迟和丢包比较敏感。在网络状况不佳时,体验会很差。优秀。这些软件的核心技术之一就是智能网络优化。它们会根据当前网络状况自动调整画质、帧率和压缩算法,以保证在糟糕的网络下依然有可用的流畅度。三、frp和vpn的异同FRP解决了“将特定服务请出来”的问题,而VPN(如WireGuard, OpenVPN)则解决了“让自己走进去”的问题。1、核心比喻FRP 方案: 像一个大楼的前台总机。你想找大楼里的“张三”(内网的Web服务),你告诉总机(frps服务器),总机帮你接通张三的电话分机(内网端口)。你只能和张三通话,但你不能在大楼里自由走动去拜访“李四”。VPN 方案: 像一张大楼的门禁卡。你刷卡进入大楼后(连接VPN),你就身处大楼内部了。你可以自由地去访问任何你被授权进入的房间(内网的任何设备和服务),就像你本人就在大楼里一样。2、详细对比表格FeatureFRP (Fast Reverse Proxy)VPN (e.g., WireGuard, OpenVPN)核心目标发布服务 (Publishing):将内网的特定服务安全地暴露到公网上。加入网络 (Joining):将远程的设备安全地接入到内网中,使其成为内网的一员。访问范围端口级 (Per-Port):只能访问你在配置文件里明确指定的端口/服务。网络级 (Network-Level):一旦连接,理论上可以访问内网中的任何设备和任何端口(受防火墙限制)。工作原理反向代理 / 隧道中继:所有流量都由frps服务器进行中转。虚拟网卡 / IP隧道:在你的设备上创建一个虚拟网卡,分配一个内网IP,所有数据包通过加密隧道传输。访问者体验对访问者透明:朋友访问 http://<你的公网IP>:8080 即可,不需要安装任何客户端。需要专用客户端:朋友必须安装VPN客户端软件,并配置好证书/密钥,每次访问前都要先“连接”VPN。网络层级主要工作在应用层/传输层 (Layer 4/7)。主要工作在网络层 (Layer 3)。安全性隧道本身可以加密(需配置),安全性依赖于token和单个服务的认证。默认且强制对整个隧道进行强加密,认证机制更完善(如证书体系)。安全性是其核心设计。典型场景1. 将家里的NAS分享给朋友访问。<br>2. 临时将本地开发环境的网站展示给客户看。<br>3. 搭建一个我的世界(Minecraft)服务器让朋友加入。1. 远程办公,安全访问公司内部的文件服务器、数据库等。<br>2. 组建一个私有的游戏局域网。<br>3. 在外地安全地管理家里的所有智能设备。3、总结异同相同点:都解决了远程访问内网资源的问题。都依赖一个公网服务器作为“跳板”或“网关”。都可以对传输的数据进行加密,保证了基本的安全性。不同点(核心差异):范围的本质区别: 这是最大的不同。frp 是“点对点”的服务暴露,而 VPN 是“点对面”的网络接入。用 frp,你朋友的内网只为你打开了几扇小窗户;用VPN,你朋友给了你一把他家大门的钥匙。对访问者的要求不同: frp 对访问者极其友好,他们只需要一个URL。VPN 则要求访问者进行软件安装和配置,更适合固定的、受信任的用户(比如你自己或公司员工)。网络集成度不同: 连接VPN后,你的电脑会获得一个内网IP地址(例如 192.168.1.101),在网络层面,你的电脑和内网中的其他设备是“对等”的。而frp不会改变你电脑的任何网络配置。
2023-03-29
7
0
0
数通网工
2023-02-11
混合部署:云服务器结合私有机房
云服务器结合私有机房的混合部署,可以规避家庭宽带没有固定IP的短板,也绕开了云服务器高性能配置的价格壁垒。它为个人开发者、极客和小型技术团队提供了一个兼具高性能、低成本和高度灵活性的服务部署选择。虽然配置过程比直接购买云服务或成品穿透服务要多几个步骤,但由此换来的自主权和性价比是值得的。一、 方案概述:一种非典型的“混合云”传统的混合云通常指企业利用专线或VPN将内部数据中心与公有云连接,实现资源的统一管理和调度。而对于个人开发者或小型团队而言,可以借鉴这种思路,构建一个轻量级的、更注重成本效益的混合架构。核心思路是将核心资源部署在本地的私有服务器上,而将公网IP、网络转发和安全接入等功能交由一台廉价的云服务器处理。具体构成如下:核心服务节点(内网):一台位于家庭或办公室网络环境下的高性能服务器。它承担了应用、数据库、AI模型等所有计算密集型和存储密集型的任务。这台机器不直接暴露在公网上,甚至没有固定的公网IP。网络接入节点(云端):一台配置较低、但拥有固定公网IP的云服务器(例如腾讯云的轻量应用服务器)。它的唯一职责是作为公网流量的入口和中转站,接收来自用户的请求,并通过安全的隧道转发给内网的核心服务节点。连接隧道:通过反向代理工具(如frp、NPS等)在云端和内网节点之间建立一条稳定的、加密的通信隧道。用户访问云服务器的特定端口,流量被无缝转发至内网服务器的对应端口。这种架构下,云服务器像一个“门卫”,负责接收访客并引路;而内网服务器则是真正的“功能区”,负责处理所有实际业务。二、 动机与必要性:成本与性能的平衡选择这样的架构,主要驱动力来自于对成本和性能的双重考量。1、公网IP成本家庭宽带:通常提供较高的下行带宽(如千兆),但上行带宽受限,且绝大多数不提供固定的公网IP地址。动态IP对于需要稳定访问的服务而言是不可接受的。企业专线:提供固定公网IP,但价格昂贵,对于小团队或个人项目来说,成本过高。2、商业穿透服务市面上存在一些商业化的内网穿透服务,例如“花生壳”。通过其价格表可以看出,即便是企业级套餐,其在带宽、并发连接数和功能上也存在诸多限制。例如,一个年费数千元的套餐可能只提供有限的带宽和映射数量,性价比不高,难以支撑稍有规模的应用。 3、云服务器直接在云端租用一台与自建服务器同等配置(如8核16G内存、1T固态硬盘)的服务器,每年的费用会非常可观。而作为“门卫”角色的低配云服务器则极为便宜。例如,一台2核2G或4核4G,带有3-5Mbps带宽的轻量云服务器,年费可能仅需几十到一百元。这笔开销远低于企业专线或功能完善的商业穿透服务。 4、自建硬件一次性投入。一台配置不错的服务器(例如8核16线程CPU、32G内存、1T SSD)的组装成本大约在3000元左右,但可以长期使用。性能与数据所有权。可以获得远超同价位云服务器的计算性能和存储空间,并且所有数据都保留在本地,拥有完全的控制权。综上,通过“云端转发+本地计算”的模式,可以用极低的年费(一台轻量云服务器+一个域名)撬动起本地强大的硬件资源,实现了成本和性能的最佳平衡。三、 实现细节:关键技术点记录要实现此架构,核心在于“动态域名解析”与“反向代理”的协同工作。云服务器像一个地址固定的“总机”,而DDNS则负责实时告诉“总机”我们内网这个“分机”的最新号码。域名与DDNS (Dynamic DNS)这是整个方案的基石。由于家庭宽带的公网IP会不定期变动,我们需要DDNS服务将一个固定的域名(例如 home.example.com)实时解析到我们家里的动态公网IP上。服务选择:市面上有许多DDNS服务商,一些域名注册商(如Cloudflare, GoDaddy)也自带免费的DDNS功能。客户端配置:需要在内网环境中运行一个DDNS客户端。许多现代路由器(如OpenWrt、梅林固件)都内置了DDNS客户端,只需填写域名和API密钥即可。也可以在内网的服务器或NAS上通过Docker等方式运行一个DDNS更新程序。最终效果:配置完成后,无论家里IP如何变化,访问 home.example.com 总能准确地找到我们的网络入口。内网路由器:端口转发DDNS解决了“找到家门”的问题,端口转发则解决了“进入哪个房间”的问题。云服务器的Nginx请求到达路由器后,路由器需要知道把这个请求交给内网的哪一台机器的哪个端口。在路由器管理界面中,设置端口转发规则。例如,将外部访问的 8080 端口,转发到内网服务器(如IP为192.168.1.100)的Web服务端口 80。云服务器:Nginx反向代理配置云服务器是用户访问的固定入口。我们在这里部署Nginx,让它充当反向代理,最主要是把非标端口转化成443。四、 总结与思考通过 DDNS + Nginx反向代理 的组合,实现了利用廉价云服务器作为公网固定入口,撬动内网高性能硬件资源的目标。这种方案的技术栈更为通用,对于熟悉Nginx的开发者而言几乎没有新的学习成本。同时,DDNS域名本身也具备了独立使用的价值。对于一些非Web服务,如远程桌面、NAS文件访问等,可以通过配置不同的端口转发,直接使用DDNS域名进行连接,无需经过云服务器中转,灵活性更高。当然,此方案的成立依赖于一个前提:拥有一个可用的公网IP,哪怕是动态的。
2023-02-11
11
0
0
经验教程
数通网工
2022-10-29
主要的非互联网IP段及用途简介
以下是所有不能在公共互联网上自由路由的主要IP地址段,它们各自有明确的用途:私有网络地址 (Private Network Addresses - RFC 1918)这是我们最熟悉的内网IP,可在任何组织内部自由使用,无需申请,但不能在公共互联网上路由。10.0.0.0/8 (10.0.0.0 到 10.255.255.255)用途: 大型企业网络。它提供了超过1600万个地址,非常适合需要划分大
2022-10-29
14
0
0
数通网工