Amazon Lightsail 与固定网络出口

# Amazon Lightsail 与固定网络出口

Lightsail 提供云服务器,静态公网 IP 提供稳定地址,代理或 VPN 软件才负责让其他设备通过它访问网络。所谓 “自建 IP”,实际是申请并绑定云厂商分配的 IP,再搭建自己可控的网络出口,不是自己创造一个 IP。

本篇介绍合法、授权的固定出口配置,不实际创建云资源。概念先看 VPC、VPS、VPN 分别是什么。

# Lightsail 是什么,什么时候适合用

Amazon Lightsail (opens new window) 是 AWS 的简化云服务,常见实例套餐把 CPU、内存、磁盘和一定的流量额度组合起来。它适合小型网站、个人开发服务和轻量网络工具;相比 EC2,开始使用时需要选择的配置更少。

购买实例后,仍需自己维护操作系统、软件更新、访问权限和备份。它不是现成的 VPN,也不会自动为电脑设置代理。需要复杂网络、大规模扩容或精细资源配置时,再评估 EC2 等方案。

# 固定 IP 不等于纯净 IP

实例默认的动态公网 IPv4 可能在停止再启动后改变。给实例绑定 Static IP(静态公网 IP)后,只要保留该地址并保持正确绑定,就可以继续使用同一个公网地址。

“纯净 IP” 不是 Lightsail 承诺的产品属性:分配到的地址可能曾被别人使用,也仍属于云厂商的数据中心网络,不会因为自己独用就变成住宅 IP。固定地址方便出口管理、日志核对和对方的 IP 白名单配置,不保证第三方账号不会受限。

例如,Anthropic 的地区政策 (opens new window)涉及用户实际所在地及组织条件,不只是出口 IP。把流量送到另一个地区的服务器,不等于改变这些条件。

# 实现固定出口需要哪些步骤

下面采用 Ubuntu 24.04 LTS 实例+静态 IPv4+Tinyproxy+SSH 隧道。Tinyproxy 是 HTTP 代理,SSH 保护电脑到服务器的连接;代理只监听服务器本机,不向公网开放代理端口。

本地工具 → 本机代理端口 → SSH 加密隧道
                             ↓
外部服务 ← Lightsail 静态公网 IP ← Tinyproxy
1
2
3

只有明确配置使用这个代理的工具才走该出口,不会自动接管电脑全部流量。固定出口不要求有自己的域名,也不需要额外创建 NAT Gateway。

# 第一步:创建实例并绑定静态 IP

  1. 先核对账号和费用:确认 AWS 账号、套餐、目标区域和实例价格,使用获授权的最小权限身份;不使用 root,也不为此创建 AWS Organizations。具体边界见 AWS 学习账号的安全边界。
  2. 创建实例:在 Lightsail 选择 Ubuntu 24.04 LTS 系统镜像和支持公网 IPv4 的双栈套餐,按需要选择容量,并准备 SSH 密钥。不要选择仅 IPv6 套餐来套用本篇的静态 IPv4 流程。
  3. 绑定地址:在 Networking 中选择 Create static IP,选择实例所在区域,创建地址并绑定到该实例。操作依据见 创建并绑定静态 IP (opens new window)。
  4. 限制入口:Lightsail 防火墙仅允许自己的当前公网 IPv4 访问 SSH 的 TCP 22 端口(单个地址用 /32);本方案不需要公开 80、443 或 8888 入站端口。检查 IPv6 入站规则和系统防火墙,不留下无用入口。自己的公网 IP 改变后,需要相应更新 SSH 来源规则。

服务器需要能主动访问软件仓库和目标服务的 HTTPS 端口。入站端口规则不等于出站权限:不开放服务器的 443 入站端口,不会因此阻止它主动访问外部 HTTPS 服务。

# 第二步:在服务器配置本机 HTTP 代理

先用控制台提供的 SSH 方式连接实例。以下安装命令在服务器的 Ubuntu 终端执行,不是在自己的 Mac 上执行:

# 从 Ubuntu 软件源安装;部署前确认软件源仍受维护并包含安全更新。
sudo apt-get update
sudo apt-get install -y tinyproxy

# 安装包可能自动启动服务,先停止,配置好本机监听后再启动。
sudo systemctl stop tinyproxy
sudo nano /etc/tinyproxy/tinyproxy.conf
1
2
3
4
5
6
7

在现有配置中调整下面的字段,保留包自带的运行用户、日志等设置。删除这些字段的冲突配置;Allow 只保留本机来源,ConnectPort 只保留需要的端口:

# 代理监听端口;不在 Lightsail 公网防火墙中放行此端口。
Port 8888
# 只监听服务器本机,不能改成面向所有网卡的 0.0.0.0。
Listen 127.0.0.1
# 只允许本机客户端;SSH 转发到达代理时也来自本机。
Allow 127.0.0.1
# 限制 HTTPS CONNECT 隧道的目标端口,本例只访问标准 HTTPS。
ConnectPort 443
1
2
3
4
5
6
7
8

保存后,在服务器终端执行:

# 启动并设置开机启动;后续修改配置后需重新启动服务。
sudo systemctl enable tinyproxy
sudo systemctl restart tinyproxy
sudo systemctl status tinyproxy --no-pager

# 确认监听的是 127.0.0.1:8888,而不是 0.0.0.0:8888 或 [::]:8888。
sudo ss -lntp 'sport = :8888'
1
2
3
4
5
6
7

配置字段依据见 Tinyproxy 官方文档 (opens new window)。本方案通过 SSH 密钥认证保护远程访问,不是一个对公网开放的匿名代理。

# 第三步:从电脑建立 SSH 隧道

以下命令在自己的电脑终端执行。/absolute/path/lightsail.pem 必须换成自己的 SSH 私钥绝对路径,203.0.113.10 是文档示例地址,必须换成绑定的静态公网 IPv4。Ubuntu 系统镜像通常使用 ubuntu 用户,以实例提供的连接信息为准。

# 限制私钥文件的读取权限,不复制或公开私钥内容。
chmod 600 /absolute/path/lightsail.pem

# 本机 8888 → SSH → 服务器本机 8888;-N 表示只转发,不运行远程命令。
# 本机端口被占用时会退出;也可将第一个 8888 改为其他空闲端口。
ssh -i /absolute/path/lightsail.pem \
  -N -L 127.0.0.1:8888:127.0.0.1:8888 \
  -o ExitOnForwardFailure=yes \
  -o ServerAliveInterval=30 \
  -o ServerAliveCountMax=3 \
  ubuntu@203.0.113.10
1
2
3
4
5
6
7
8
9
10
11

首次连接需核对 SSH 主机指纹,不要禁用主机校验。命令保持前台运行是正常现象;关掉该终端、电脑休眠或连接断开后,隧道就不可用。上面的保活参数用于发现连接中断,不会自动重连,重新运行命令即可。

# 第四步:验证出口,再配置工具

保留隧道终端,另开一个电脑终端执行:

# ipify 是第三方出口 IP 查询服务,会收到这次请求的出口 IP。
# 显式使用本机 HTTP 代理;--noproxy "" 避免已有绕过规则影响验证。
curl --fail --max-time 15 --noproxy "" \
  --proxy http://127.0.0.1:8888 https://api.ipify.org
1
2
3
4

正常结果应是绑定的 Lightsail 静态 IPv4。验证成功后,再让支持 HTTP 代理的工具使用 http://127.0.0.1:8888。没有配置代理的浏览器或终端工具,仍可能走原来的网络出口。

以已安装、且满足服务使用条件的 Claude Code 终端会话为例:

# 只给本次启动的进程设置代理,不改全局网络,也不写入永久配置。
# HTTPS_PROXY 的值是 HTTP 代理地址;HTTPS 目标通过 CONNECT 建隧道,仍保留 TLS。
HTTP_PROXY=http://127.0.0.1:8888 \
HTTPS_PROXY=http://127.0.0.1:8888 \
NO_PROXY=localhost,127.0.0.1,::1 \
claude
1
2
3
4
5
6

Claude Code 官方支持 HTTP/HTTPS 代理环境变量,不直接支持 SOCKS 代理,所以不能简单把 ssh -D 生成的 SOCKS 地址当作这里的 HTTP 代理。启动前还应确认没有冲突的小写代理变量或已有工具设置,已有会话需要重新启动才能读取新的环境。依据见 Claude Code 网络配置 (opens new window)。

# 常见失败与维护边界

  • SSH 连不上:核对静态 IP、用户、私钥和 22 端口来源规则,不把 SSH 向全网放开来掩盖问题。
  • 本机代理连接被拒绝:检查隧道是否仍在运行、本机端口是否冲突,以及服务器 Tinyproxy 的监听和日志。
  • 请求超时或出口不对:核对服务器出网、代理设置与绕过规则;IP 查询成功只证明该请求的路径,不代表每个工具都会走代理。
  • 第三方服务仍拒绝访问:核对账号权限、支持地区和官方错误信息。换出口不是规避账号限制的方法,也不应关闭 TLS 校验来解决认证失败。
  • 长期运行:维护系统与代理安全更新、SSH 密钥和费用告警;关闭电脑上的隧道不会停止云服务器,也不会停止其计费。

Lightsail 实例通常按使用时长计费并有套餐上限,流量超额、快照等可能另收费;普通实例停止后也仍会计费,不能把停止当作删除。静态 IP 绑定实例时通常不额外收费,解绑闲置超过规定时间可能收费。删除实例也不会自动释放静态 IP,清理时需逐项核对;释放地址后不能保证再取回同一个 IP。价格与规则以 Lightsail 定价 (opens new window) 和 Lightsail 计费说明 (opens new window) 为准。

# 面试时可以这样回答

怎样用云服务器建立固定网络出口?

建议回答:先给云服务器绑定静态公网 IP,再配置受保护的代理或 VPN,让指定客户端通过服务器访问外部服务。比如 Lightsail 上运行只监听本机的 HTTP 代理,电脑通过 SSH 隧道连接它,工具再使用本机代理端口。这样有稳定、可控的出口,也不用公开代理端口。但静态 IP 只保证地址稳定,不保证 IP 从未被使用,也不能保证第三方账号不会受限。

上次更新时间: 2026年10月10日 06:39:50