求助:仅支持IPv6的VPS如何通过双栈笔记本转发访问IPv4站点,解决mix deps.get包下载失败问题
求助:仅支持IPv6的VPS如何通过双栈笔记本转发访问IPv4站点,解决mix deps.get包下载失败问题
兄弟我之前也踩过一模一样的坑!IPv6-only的VPS性价比确实拉满,但碰到依赖仓库只支持IPv4的时候真的头疼,不过用你本地的双栈笔记本做中转完全能搞定,不用折腾squid那种复杂的代理软件,给你俩简单粗暴的办法,临时用足够了:
方法一:SSH反向动态代理(最省心,零额外配置)
这是我临时救急最爱用的办法,不用装任何额外软件,靠SSH本身就能搞定:
- 在你的双栈笔记本上操作:打开终端,运行这条命令,建立VPS到笔记本的反向代理隧道:
解释下参数:ssh -R 1080:localhost:1080 -N your_vps_username@your_vps_ipv6_address-R是反向端口转发,把VPS的1080端口直接映射到笔记本的1080端口;-N表示只维持连接不执行远程命令,避免终端乱跑程序。输入VPS密码后,这个窗口别关,保持后台运行就行。 - 登录到你的IPv6-only VPS:临时设置环境变量,让
mix走刚才的SOCKS代理:
要是export ALL_PROXY=socks5://localhost:1080mix不认ALL_PROXY,可以试试单独设置HTTP/HTTPS代理:export HTTP_PROXY=socks5://localhost:1080 HTTPS_PROXY=socks5://localhost:1080 - 执行下载命令:现在直接跑
mix deps.get,应该就能正常拉取IPv4上的依赖包了! - 用完清理:在VPS上执行
unset ALL_PROXY HTTP_PROXY HTTPS_PROXY取消代理,然后关掉笔记本上的SSH窗口就行。
方法二:iptables NAT转发(适合长期使用,临时用没必要)
如果之后还要频繁访问IPv4站点,可以试试把笔记本做成NAT网关,但临时救急的话方法一足够了,这里简单提一下步骤:
- 笔记本上开启IP转发:Linux/macOS运行
sudo sysctl -w net.ipv4.ip_forward=1(macOS可能还要调整pf规则,比较麻烦) - 通过SSH建立点对点隧道:
ssh -w 0:0 your_vps_username@your_vps_ipv6_address - 在VPS上设置默认路由指向笔记本的隧道IP,把所有IPv4流量都转去笔记本
一些注意事项
- 确保笔记本的防火墙允许SSH反向转发的端口(这里是1080),不然VPS连不上代理端口;
- 如果SSH连接慢,可以加
-C参数开启压缩:ssh -C -R 1080:localhost:1080 -N ...; - 要是VPS的SSH端口不是默认22,记得加
-p 自定义端口参数。
备注:内容来源于stack exchange,提问作者Existn't




