Skip to content

IP 地址

IP 地址(Internet Protocol Address)是分配给每个连接到互联网的设备的唯一标识符。

IP 地址的分类

IP 地址分为 IPv4 和 IPv6 两种类型:

  • IPv4:由 32 位二进制数构成,通常表示为四个十进制数每个数在 0 到 255 之间),例如 192.168.1.1。IPv4 地址总数约为 43 亿个。
  • IPv6:新一代 IP 协议。IPv6 地址数量极其庞大,几乎是无限的。由 128 位二进制数构成,通常表示为八组十六进制数(每组四个十六进制数),例如 2001:0db8:58a3:0000:0000:2a5e:0360:7334

内网和公网

  • 局域网(Local Area Network,LAN):指在一个相对较小的范围内的网络,通常由一个组织或家庭拥有和管理。比如家庭 wifi、公司内部网络等。简称内网

TIP

WLAN:WLAN(Wireless Local Area Network)是无线局域网的缩写,指使用无线技术连接设备的局域网。WLAN 通常由无线路由器提供。

  • 广域网(Wide Area Network,WAN):指覆盖较大地理范围的网络,通常由多个局域网连接而成。公共互联网属于广域网,可简称为外网公网

内网和公网 IP

  • 内网 IP:用于局域网内部通信,不在公共互联网中路由。常见的内网 IP 地址段有:

    • 10.0.0.0 - 10.255.255.255

    • 172.16.0.0 - 172.31.255.255

    • 192.168.0.0 - 192.168.255.255

  • 公网 IP:用于互联网中的通信,可以在全球范围内路由。

TIP

查看内网 IP 地址

  • Windows:执行 ipconfig 命令。在输出结果中,找到当前连接的网络适配器,查看其下的 IPv4 Address(IPv4 地址)字段,即为内网 IP 地址。

    ipconfig command^0

  • Linux:执行 ifconfig 命令(部分系统可能没有该工具)或 ip addr 命令。在输出结果中,找到当前连接的网络接口(如 eth0wlan0),查看其下的 inet 字段,即为内网 IP 地址。

    ifconfig command^1

特殊 IP 地址

  • 内网 IP
  • 0.0.0.0:表示本地所有 IPv4 地址,通常用于表示未指定的地址。
  • 127.0.0.1:本地主机地址(localhost),用于设备自身的网络通信。也称为本地回环(loopback)地址。

TIP

如果说公网 IP 的含义是你的名字,内网 IP 的含义是你的小名,那么 127.0.0.1 的含义就是“自己”一词。一般在本地打开服务就需要监听 127.0.0.1 的某个端口。

  • 255.255.255.255:广播地址,用于向网络中的所有设备发送消息。

端口

端口是计算机网络中的通信端点,用于区分同一 IP 地址上的不同服务。每个 IP 的端口号范围从 065535,其中 01023 为系统保留端口。OSI 七层网络模型中传输层及以上的所有网络通讯都是在不同 IP 的不同端口之间的。比如确定一条 TCP 连接需要“四元组”:源 IP 地址、目标 IP 地址、源端口号、目标端口号。

一般一个端口就对应了一个网络服务。公网服务器的一个端口可能就是一个网站或数据库服务,本地打开的一个端口可能是特定软件使用的服务。不同服务的区别只是监听该端口的软件如何处理传入的数据的区别。

特殊端口

任何服务都可以使用任何端口,但是有些服务/软件有默认的端口。应熟悉这些端口的用途,例如有程序的报错中出现了 7890 端口,应意识到是 Clash 系列的代理软件配置出错了。

  • 80:HTTP 协议的默认端口。
  • 443:HTTPS 协议的默认端口。(除了默认的 443,也有网站使用 8443 等端口)
  • 21:FTP 协议的默认端口。
  • 22SSH 协议的默认端口。
  • 25:SMTP 协议的默认端口。
  • 53DNS 协议的默认端口。
  • 1080SOCKS5 代理协议的默认端口。
  • 3306:MySQL 数据库的默认端口。
  • 3389:Windows 远程桌面的默认端口。
  • 6379:Redis 缓存数据库的默认端口^2
  • 7890:Clash 系列代理软件默认在本地打开的端口。7890 为 http 代理,7891 为 socks5 代理
  • 8080:常用于代理服务器的端口。

TIP

查看本地端口的占用情况(以 1080 端口为例)

以下命令的含义都是查看所有端口的占用,在其中筛选出包含“:1080”的项。若不加上 | findstr :1080| grep :1080,则会列出所有正在被占用的端口的信息。

  • Windows:执行 netstat -ano | findstr :1080 命令。在输出结果中,找到 Local Address 列中对应的端口号,查看其下的 PID(进程 ID)字段,即为占用该端口的进程 ID。
  • Linux:执行 ss -tunlp | grep :1080 命令。输出结果中的最后一列包含了占用该端口的进程 ID 和进程名称。

TIP

扫描其他 IP 的端口开放情况

  • nmapnmap 是一个网络扫描工具。在 Linux 上安装 nmap 并执行 nmap -p 1-65535 <target_ip> 命令,其中 -p 1-65535 表示扫描所有端口。nmap 还会识别开放的端口对应的服务。

    bash
    $ nmap -p 1-65535 151.101.2.132
    Starting Nmap 7.95 ( https://nmap.org ) at 2024-12-25 12:00 UTC
    Nmap scan report for 151.101.2.132
    Host is up (0.24s latency).
    Not shown: 65533 filtered tcp ports (no-response)
    PORT    STATE SERVICE
    80/tcp  open  http
    443/tcp open  https
    
    Nmap done: 1 IP address (1 host up) scanned in 1000 seconds
  • masscan:诸如 masscan 的网络扫描工具能以更快的速度扫描开放的端口,从而帮助安全工程师发现隐藏的服务和资产。masscan 可以在七分钟内扫描完整个 IPv4 互联网每个 IP 的全部 65535 个端口。但是极其高的速度会导致很高的丢包率,也非常危险,可能使被扫描的服务器瘫痪。

  • 网络空间测绘:网络空间搜索(测绘)引擎也会扫描全网所有 IP 的大部分端口,识别并记录开放的端口对应的服务和其指纹特征,是互联网的军用地图。常见的网络空间搜索引擎有 ShodanCensysFofaZoomeye 等。和不断递归爬取网页的搜索引擎不同,网络空间搜索引擎只扫描端口和端口直接返回的内容,如果是网站就只会记录网站首页的 html。

    比如 IP 123.123.123.123 开放了 80 端口,返回的内容是“Welcome to Nginx!“,那网络空间搜索引擎就会添加一条记录,包括了:

    • 123.123.123.123:80ASN、IP 属地、曾经解析到这个 IP 的域名
    • 识别出的服务是 Nginx 反向代理服务器
    • Nginx 版本是 xxx,该版本可能有 xxx 漏洞
    • 服务器返回的内容

通过网络空间搜索引擎可以发现隐藏的网站/服务/漏洞/暴露在互联网上的资源等。后续教程将再次提到网络空间搜索引擎。

常用术语

  • 服务器:高性能、不关机的机器,通常安装了 Linux 系统、没有图形化界面或桌面环境。如果服务器有独立公网 IP,则可称为公网服务器。服务器可以托管网站、数据库、应用程序等,提供网络服务和资源共享。(这些服务也可以在本地计算机上运行,只不过在公网服务器上运行的情况下任何互联网设备都可以通过公网 IP 访问该服务。)

    服务器不一定指实体服务器,也可以指 VPS、云服务器,有时也指网络服务软件/程序(如 Apache、Nginx 等)而非机器本身。

  • VPS:虚拟专用服务器(Virtual Private Server)是指通过将一台物理服务器划分为多个虚拟服务器,每个虚拟服务器都可以有独立的操作系统、内存、硬盘空间。成本较低,适用于中小型企业、开发者和个人用户。

  • 云服务器:云服务器是指基于云计算技术的虚拟服务器,可以根据需求动态调整资源。常见的云服务提供商有 AWS(Amazon Web Services)、Azure(微软云)、GCP(Google Cloud Platform)、Aliyun(阿里云)等。

TIP

容器:容器技术是一种轻量级的虚拟化技术,它允许在同一操作系统内核上运行多个隔离的用户空间实例。容器具有快速启动、资源利用率高、易于迁移、可以动态分配资源等优点。常见的容器技术有 Docker 和 Kubernetes。

:云计算是一种动态分配计算资源的服务模式。云服务厂商的大型服务器集群上有大量计算资源。云厂商按照需求动态地将计算资源(如 CPU、内存、存储空间、数据库、网络等)分配给虚拟出的容器(可以有完整、独立的操作系统,也可以是应用程序)。云服务器就是云厂商提供的虚拟服务器,可以在云环境中快速部署和扩展、轻量级、低成本,且云厂商提供了对服务器的管理、维护、数据备份和安全防护等服务。

  • 流量:指在网络上传输的数据包。
  • C 段:指一个网络段,包含 256 个 IP 地址,通常表示为 123.123.123.0/24123.123.123.0 - 123.123.123.255)。有的网站可能有处于同一 C 段的多个 IP。同一 C 段的不同 IP 一般有相似之处,如是同一个服务商的,甚至可能在同一个机房。
  • B 段:指一个网络段,包含 65536 个 IP 地址,通常表示为 123.123.0.0/16123.123.0.0 - 123.123.255.255)。
  • A 段:指一个网络段,包含 16777216 个 IP 地址,通常表示为 123.0.0.0/8123.0.0.0 - 123.255.255.255)。
  • ASN(自治系统编号):用于标识一个自治系统(AS),即一个由单一组织管理的公网 IP 地址的集合。如同一运营商在几个大城市的出口 IP 可能有相同的 ASN。
  • 出口 IP:指运营商 NAT 设备的公网 IP,是最终接入公共互联网、与公网服务器建立连接的 IP。
  • 监听端口:即打开端口,接收传入的网络连接。
  • 监听 127.0.0.1:8080:指某个程序监听本机的 8080 端口。
  • 监听 0.0.0.0:8080(listen on all interfaces):指某个程序监听本机所有接口(所有 IP)的 8080 端口。例如,某笔记本电脑有三个本地 IP(不算回环地址 127.0.0.1):连接了家庭 wifi,有一个 IPv4(如 192.168.0.101)和一个 IPv6 地址(如 2001:0db8:85a3:0000:0000:8a2e:0370:7334),电脑上打开了 VirtualBox 虚拟机软件,虚拟网卡提供的 IP 是 192.168.25.10(三个 IP 都能代表这台电脑的网络地址)。那监听 0.0.0.0:8080 指的就是同时监听这四个 IP(上述三个和代表本机自身的 127.0.0.1)的 8080 端口。

WARNING

若非必要,不要监听所有接口,否则各个接口所在网络的其他用户都能访问该服务,从而将服务暴露给不该访问该服务的设备。

比如,在网络情况如前一个例子所述的情境下,某个本地的代理程序监听了 0.0.0.0:1080。那么连接了同一个 wifi 的用户都能通过 IPv4、IPv6 使用该代理服务,虚拟机内的用户也能使用该代理服务。如果用户只想自己使用代理,则监听本机 1080 端口(127.0.0.1:1080)就够了;如果想让虚拟机也能够使用该代理服务,则应监听 127.0.0.1:1080192.168.25.10:1080

这一点在使用公网服务器的时候尤其需要注意:服务器监听 0.0.0.0 可能将本应只能由服务器本地的程序访问的资源暴露到公共互联网,这可能造成巨大的安全风险。

子网掩码

NAT

NOTE

NAT:NAT(Network Address Translation,网络地址转换)是一种用于在内网和公网之间转换 IP 地址的技术。NAT 允许多个内网设备通过一个公共 IP 地址访问互联网,从而节省了公网 IP 地址的使用。

简单来说,当一台处于 NAT 后的设备(如连入 wifi 的笔记本电脑)和公网服务器通讯(如访问一个网站)时,本地的端口的流量会临时经过 NAT 最终映射到某个运营商的公网入口的端口,该公网 IP 和服务器的公网 IP 通讯。这样大量设备可以共用一个公网 IP 访问互联网。因此数量有限的 IPv4 在今天仍能支撑大量的设备访问互联网。访问某个网站时网站能得到的就是该公用的公网 IP,有时称为出口 IP。

一般 NAT 设备的路由是单向的,无法通过访问出口 IP 的映射出的端口反向访问本地设备打开的端口。因此一般在本地设备上打开的网络服务无法被互联网上的其他用户访问,只能被同一局域网内的用户访问。而公网服务器有独立的公网 IP,没有经过 NAT 而是直接接入公共互联网,因此其服务可以从世界各地任何设备上访问。

但是借由中继设备,处于 NAT 后的设备之间可以建立连接,并根据连接的路由信息穿透 NAT 直接互相连接并通讯(中继设备只用于建立初始连接,不参与后续通讯)。这类技术称为 P2P (peer-to-peer),一般使用无连接的 UDP 协议作为传输层。建立初始连接至直连的过程称为 UDP 打洞。这类技术常用于语音、视频通话。基于 P2P 技术的 VPN 可以将不同网络中的设备接入同一个虚拟局域网,设备之间能以近乎直连的速度通讯,比如 ZeroTierEasyTier

由于 IPv4 数量稀少,除了公网服务器、部分商业宽带和极少数运营商提供的家庭宽带,IPv4 设备几乎都处于 NAT 后。由于 IPv6 数量极其庞大,不需要 NAT 来节省 IP,因此一般 IPv6 没有 NAT,在本地设备监听 IPv6 的端口后,理论上互联网上的任何 IPv6 设备都能访问该服务。(然而中国运营商实际上封禁了 5380443 等常用端口,无法轻易在个人设备上搭建网站等服务。)

TIP

查看公网 IP 地址(在处于 NAT 后的设备上,指的就是查看公网出口 IP 地址)

  1. 通过浏览器访问 https://ipinfo.io/,查看当前设备的公网 IP 地址。
  2. 或在终端执行 curl ifconfig.me 命令(或 curl ipinfo.io/ip 命令)。(curl 是用于发起 http 请求的命令行工具,相当于通过命令访问网站并打印网站的响应。)

可以进行一个简单的实验验证 NAT 使多个内网设备通过同一个公网 IP 地址访问互联网:将几台不同的设备连入同一个局域网(如手机和电脑连接同一个 wifi),分别按上述方法查看公网 IP,查询到的公网 IP 应该是一样的。

内网穿透和反向代理

正向代理 v.s. 反向代理(图中标注 LAN 是为了便于理解,正向和反向代理服务器都不必是和用户或服务器在同一局域网中的,都可以架设在公网)^3

proxy_vs_reverse_proxy

正向代理

(为了便于理解下文的“反向代理”,这里将代理称为正向代理。)

代理是指从客户端的视角,代理服务器位于客户端和目标服务器之间,客户端向目标服务器发送请求但是请求实际被发送给了代理服务器,代理服务器将数据包转发给目标服务器,响应也经由代理服务器返回给客户端。用户为了能访问受限资源、提高访问速度和隐藏 IP 地址,主动使用了代理去访问目标服务器。

如果将用户 A 访问网站 C 记作 A -> C,则用户 A 通过代理 B 访问网站 C 可表示为 A -> B -> C。代理 B 转发的是 A -> C 的数据包,即 A -> B 内层传输的数据是 A -> C 的数据包, B 将接收到的 A -> C 的数据包发送给 C。A 和 B 之间的通讯可以通过任何形式,可以进行加密和伪装,也可以不做处理直接转发(此时可视为 A 向 B 发送请求,B 将请求发送给 C)。网站 C 会认为请求是由 B 发出的,从而隐藏了 A 的真实 IP。(注:仅使用代理不足以完全隐藏真实 IP。详情将在后续教程中讲解。)

常用的最基础的代理协议有 httpsocks5 代理,二者均未对代理流量加密,因此一般用于本地不同软件之间的代理。http 代理只能代理 http 流量,socks5 能代理传输层及以上的任何协议的流量。

反向代理

反向代理是指从目标服务器的视角,反向代理服务器位于目标服务器和客户端之间,反向代理服务器接收客户端的请求,并将请求转发给目标服务器,然后将目标服务器的响应返回给客户端(数据包的流向和正向代理相同)。可能网站服务本身没法被用户访问到,服务的提供者为了让用户能访问到,使用反向代理将自己的服务暴露给用户。除了将原本不能被访问到的服务暴露出去,反向代理也常用于负载均衡、缓存和安全防护。反向代理简称反代

说人话就是:正向和反向代理都是用户访问网站的流量经过代理服务器转发,区别是正向代理是用户主动使用的,反向代理是网站所有者建立的挡在网站前的。

如果将用户 A 访问网站 C 记作 A -> C,而网站 C 使用了反向代理 B,则用户通过反向代理 B 访问网站 C 可表示为 A -> B -> C,和正向代理相同。但是用户 A 会认为他访问的网站是 B,他甚至不需要知道 C 的存在。(注:即使服务器 C 隐藏在反代 B 之后,攻击者和安全工程师仍有可能通过网络空间搜索引擎等工具发现 C。)

常见的 web 反向代理服务器有 Nginx。Nginx 可以将客户端的请求分发到多个后端服务器,从而提高系统的性能和可靠性。

内网穿透

内网穿透是一种使处于内网的设备能够被公网访问的技术,是一种反向代理。由于 NAT 的存在,大部分计算机通常无法直接从公网访问(但是可以主动访问公网)。一般内网穿透工具会在本地和公网服务器之间建立一条加密隧道,当其他用户访问公网服务器时,服务器将其流量通过隧道转发到本地设备,由本地的服务器程序处理后再将响应从隧道通过公网服务器转发给用户。这样就实现了将本地的网络服务暴露到公共互联网。

通过内网穿透可以实现在笔记本电脑上运行一个网站服务,使互联网上的任何设备都能访问这个网站。

常见的内网穿透工具有 NgrokCloudflare Tunnel

IP 属地

IP 属地是指根据 IP 地址确定其所属的地理位置。IP 属地信息可以帮助了解访问者的地理位置、进行网络流量分析、实现内容分发优化等。

  • 当用户访问一个网站的时候网站能得到用户的公网出口 IP,可以用于标记用户和定位用户,因此 IP 属于敏感信息截图中如果有 IP 一定要打码。(IP 定位的精度一般在省市级别。高精度的付费 IP 数据库可以做到街道级的定位。公安可以通过 IP 和其他信息确定访问者的身份。)

  • 开源的 IP 属地数据库:ip-location-db

  • 可以通过访问 https://ipinfo.io/ 查询自己的公网 IP 和其属地。

  • 高精度 IP 地理位置查询网站:ip.sy

黑话和野鸡知识

  • GFW:Great Firewall,中国大陆的网络审查系统,简称“”,是世界上最复杂的安全系统之一。墙封锁了境外主流媒体、社交媒体、人工智能等网站,也封禁了代理流量。

  • 翻墙:也称为科学上网魔法上网。指通过使用代理绕过 GFW 对部分境外网站的封锁。GFW 有对代理流量的极其复杂的检测和封锁机制,因此翻墙使用的代理一般使用特殊的协议对流量(上文正向代理中提到的 A -> B 段的流量)做了大量的混淆,伪装成 TLS 流量绕过检测。翻墙将在后续教程中详细介绍。翻墙和 VPN 无关,VPN 将在下文介绍。

    GFW meme

  • 梯子:翻墙工具。主流翻墙工具的客户端和服务端都是开源的(开源才能保证安全性和隐私性)。无论从什么渠道使用翻墙工具,客户端务必从开源仓库下载原版的可执行文件或自行编译,从其他渠道获取的可执行文件有非常高的安全和隐私风险

    客户端通常由内核 + 图形化界面组成。一般图形化界面只提供操作内核用的便捷的配置界面;内核在本地打开一个代理供本地程序连接,并和代理服务端建立高度混淆的连接,从其中代理流量。

    可以只使用内核,实际上这样有更高的安全性和性能。

    常见的组合:

    客户端内核图形化界面
    XrayV2rayV2rayN
    sing-boxNekorayHiddify
    Clash.Meta(mihomo)Clash-verge-rev
    Clash(已删库且不安全Clash For Windows(已删库且不安全

WARNING

Clash 系列代理工具的安全性和隐私性很差(客户端好看是其少数优点)。原版 Clash 内核早已停止维护并删库,著名的 Clash For Windows 图形化客户端也早已停止维护并删库,曾经多次出现远程命令执行漏洞,导致用户设备被攻击者远程攻破。Clash 系列代理工具(包括 mihomo 和 Clash-verge-rev 等还在维护的)都有诸多设计缺陷,可以被用户访问的网站和 GFW 检测到并封禁。部分 Clash 系软件还是假开源的。

Xray 是功能最强大、技术最顶尖、安全性和隐蔽性最好的内核,不接受反驳

  • 协议:翻墙使用的代理一般使用特殊的协议,对流量做了大量的混淆,伪装成 TLS 流量绕过检测,常见的协议有 vless(一般使用 vision 流量控制机制)、reality(使用 reality 安全层的 vless)、naive、hysteria2、vmess、trojan、shadowsocks 等。很多客户端内核支持多种协议。

  • 机场:为中国用户提供即开即用的翻墙服务的网络供应商。一般只提供节点,用户需自行配置梯子客户端。

  • 节点:代理服务器上搭建的代理服务端。一个节点可以在不同客户端上使用。

  • 线路:从中国境内访问国外的网站,中间有一条出海线路连通中国和其他国家的网络。如果使用境外 VPS 搭建代理或者网站,选择合适的线路对于访问速度很重要。在购买 VPS 的时候有的商家会标记 CN2(电信)、9929(联通)、CMIN2(移动)等优质线路。

  • 服务器 IP 种类:

    • 原生 IP:互联网服务提供商直接分配的 IP,直接与设备关联,不会被中间网络设备转发,IP 属地和服务器所在机房的地理位置相同。
    • 广播 IP:也称为国际 IP,指 IP 的注册地和服务器所在机房的地理位置不同,服务提供商将注册得到的一整段 IP 广播到其在世界各地的机房。云服务器的 IP 很多都是广播 IP。如果要使用服务器搭建代理或者在服务器上使用网络爬虫等需要模拟真实用户的情况,那么广播 IP 的质量不如原生 IP。
  • IP 风控值:各大网站有自己的数据库,标记了每个 IP 有多危险。如果使用服务器搭建代理或使用爬虫,IP 的风控值尤其重要。

    • IP 风控值取决于是真实家庭宽带还是服务器、有多少人使用、是否有爬虫行为、是否有网络攻击行为、是否是代理、是否是 Tor 节点等)。
    • IP 风控值决定了是否被允许访问某些网站、注册某些网站的账号有多大概率成功、有多大概率被封号、注册账号时是否需要手机验证码或信用卡验证、各厂商的验证码有多难解决(如 Cloudflare 的验证码的 PoW 有多大计算量、Google 的 reCAPTCHA 验证码需要选多少次红绿灯、微软的验证码有多少道题等。
    • 可以使用代理在浏览器上访问 ping0.cc 查询估算的 IP 风控值和是否是家庭宽带 IP、是否是原生 IP 等(不准确,仅供参考)。
    • 也可以使用代理访问 Outlook 的注册界面,选择注册新的邮箱地址,随便填写信息,查看验证码有多少道题。5 道以内说明代理 IP 较纯净。