有时候人在国外,但需要访问一些仅允许中国大陆 IP 访问的网站。最直接的办法是在国内服务器上搭建代理服务,例如 SOCKS5、WireGuard 或 OpenVPN。不过对于临时使用或者个人用途,其实有一个更简单的方法:利用 SSH 自带的动态端口转发功能(Dynamic Port Forwarding)创建一个本地 SOCKS5 代理。
这个方案不需要安装额外软件,不需要 Docker,也不需要在服务器上开放新的端口。如果服务器已经可以通过 SSH 登录,那么几乎可以立即使用。
原理#
假设你有一台位于国内的服务器:
你的电脑(海外)
│
▼
SSH 加密隧道
│
▼
国内服务器
│
▼
目标网站浏览器的流量先发送到本地 SOCKS5 代理,然后通过 SSH 隧道转发到国内服务器,再由国内服务器访问目标网站。
因此,目标网站看到的来源 IP 将是国内服务器的公网 IP,而不是你当前所在国家或地区的 IP。
创建本地 SOCKS5 代理#
在本地终端执行:
ssh -D 1080 username@your_server_ip例如:
ssh -D 1080 root@1.2.3.4参数说明:
-D 1080:在本地监听 1080 端口,并创建一个 SOCKS5 代理。username:服务器用户名。your_server_ip:服务器公网 IP。
连接成功后,不要关闭终端窗口。
此时本地已经有一个 SOCKS5 代理:
Address: 127.0.0.1
Port: 1080后台运行#
如果不希望保持终端窗口开启,可以使用:
ssh -f -N -D 1080 username@your_server_ip参数说明:
-f:认证完成后进入后台。-N:不执行远程命令,仅建立隧道。-D: 创建动态转发。
查看是否成功监听:
netstat -an | grep 1080或者:
ss -lntp | grep 1080浏览器#
在 Firefox(原生支持),以及 Chrome(需要插件支持) 新建以下 SOCKS v5 Proxy:
Host: 127.0.0.1
Port: 1080