如何通过PuTTY端口转发实现本地Windows 11 PC借助AWS Lightsail Ubuntu实例代理全网流量?
如何通过PuTTY端口转发实现本地Windows 11 PC借助AWS Lightsail Ubuntu实例代理全网流量?
嗨,我来帮你梳理下正确的配置步骤,你之前的思路有点小偏差——要实现“本地PC通过AWS实例上网”的需求,用动态SOCKS代理转发才是正确的方向,而不是固定端口的远程转发。咱们一步步来解决:
一、先搞懂核心逻辑
你需要建立一条SSH隧道,让本地Windows的所有流量(或者指定应用的流量)先发送到本地的一个SOCKS端口,再通过SSH隧道传到AWS Ubuntu实例,最后由实例替你访问互联网。这个过程不需要暴露额外的端口(比如你之前的6088),所有流量都走SSH的22端口。
二、PuTTY端配置步骤
- 打开PuTTY,先配置基础SSH连接:
- 在「Session」面板里,填入AWS实例的公网IP
x.x.x.x,端口保持22,连接类型选「SSH」。
- 在「Session」面板里,填入AWS实例的公网IP
- 配置动态端口转发:
- 切换到「Connection → SSH → Tunnels」面板:
- 在「Source port」里填一个本地端口(比如常用的1080,或者你想用的6088)。
- 不要填Destination,而是勾选「Dynamic」选项(这是关键!)。
- 点击「Add」,你会看到左侧列表里出现
D1080(如果填的是6088就是D6088)。
- 切换到「Connection → SSH → Tunnels」面板:
- 保存配置并连接:
- 回到「Session」面板,给这个配置起个名字(比如「AWS Proxy」),点击「Save」方便以后复用。
- 点击「Open」,用你的Ubuntu实例用户名和密钥(记得加载PuTTY格式的
.ppk密钥文件)登录到实例。登录成功后,PuTTY窗口标题会显示(D:1080),说明隧道已经建立。
三、AWS Ubuntu实例的关键设置(必须做!)
默认情况下,Ubuntu实例不会帮你转发流量,需要手动开启IP转发和NAT:
- 临时开启IP转发:
登录到实例后,执行以下命令:
要让这个设置永久生效,编辑sudo sysctl -w net.ipv4.ip_forward=1/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行sudo sysctl -p让配置生效。 - 配置NAT转发(让实例伪装你的流量):
执行以下命令(eth0是实例的主网卡,不确定的话可以用ip addr查看,通常是eth0或ens5):
为了让这个规则重启后不丢失,安装sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEiptables-persistent工具:
安装过程中会提示保存当前规则,选「Yes」即可。sudo apt update && sudo apt install iptables-persistent - 检查防火墙(如果开启了ufw):
如果你的Ubuntu实例开启了ufw防火墙,需要允许流量转发:
或者编辑sudo ufw allow forward/etc/default/ufw,把DEFAULT_FORWARD_POLICY改成ACCEPT,然后重启ufw:sudo ufw reload。
四、本地Windows 11的代理配置
两种方式可选,按需选择:
- 系统级全局代理:
- 打开Windows设置 → 网络和互联网 → 代理。
- 开启「手动设置代理」,地址填
localhost,端口填你在PuTTY里设置的端口(比如1080)。 - 注意:全局代理会让所有系统流量走AWS实例,包括系统更新等。
- 浏览器单独配置(更灵活):
- 以Chrome为例:打开设置 → 系统 → 打开您计算机的代理设置 → 手动设置代理里,选择「使用代理服务器」,地址
localhost,端口1080;或者直接在Chrome的扩展商店装一个代理切换插件,设置socks5://localhost:1080。
- 以Chrome为例:打开设置 → 系统 → 打开您计算机的代理设置 → 手动设置代理里,选择「使用代理服务器」,地址
五、测试与排查
- 测试代理是否生效:打开浏览器访问一个显示IP的网站,看看显示的是不是AWS实例的公网IP
x.x.x.x。 - 常见问题排查:
- 确认AWS Lightsail的防火墙(实例和账户级别)只需要开放SSH的22端口,不需要开6088,因为隧道是通过22端口建立的。
- 检查PuTTY是否成功连接,隧道是否生效(窗口标题有
(D:端口号)标识)。 - 如果还是无法访问,检查Ubuntu实例的iptables规则是否正确,用
sudo iptables -t nat -L查看是否有MASQUERADE规则。
关于AWS VPN实例的补充
你提到的AWS专门的VPN实例(比如OpenVPN Access Server、AWS Managed VPN),适合长期稳定使用、多设备同时连接的场景。但如果只是单台PC临时用代理上网,用SSH动态端口转发就足够了,不需要额外的VPN实例,成本更低也更简单。
备注:内容来源于stack exchange,提问作者user221238
相关产品推荐
相关产品推荐

