linux系统的内网服务器通过SOCKS5隧道访问互联网设置简介
来源:本站原创
点击数: 次
发布时间:2025年07月31日
开始之前
本文章内容设定俩个服务器均为linux操作系统,分别为A和B
A服务器是纯内网,设定内网IP为192.168.0.100
B服务器连接的内网,设定内网IP为192.168.0.180,同时这个服务器也连接的互联网。
① 在A服务器通过 SSH 建立 SOCKS5 隧道到B服务器
# 确保 sshpass 已安装,如果不安装这个也可以设置ssh的免密连接 sudo yum install sshpass # 先测试手动连接 ssh -f -N -D 1080 root@192.168.0.180 #开启socks5通道,端口设置的1080 export ALL_PROXY="socks5h://127.0.0.1:1080" #设置临时环境变量,也可以根据实际情况需要分别设置http与https代理
这会在 A 本地监听
127.0.0.1:1080
,通过代理到B服务器已经可以访问互联网,则说明OK,可以继续下面的设置将隧道固定下来,重启服务器也不会失效。
② 在A服务器配置 systemd 自动建立 SOCKS5 隧道
创建服务文件 vi /etc/systemd/system/ssh-socks5.service
# /etc/systemd/system/ssh-socks5.service [Unit] Description=SSH SOCKS5 Tunnel to B Server After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/bin/sshpass -p 'B服务器密码' ssh -N -D 1080 -o StrictHostKeyChecking=no root@192.168.0.180 Restart=always RestartSec=5s ExecStartPre=/bin/sleep 15 [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable ssh-socks5 sudo systemctl start ssh-socks5
确认运行中:
systemctl status ssh-socks5
③ 在A服务器设置环境变量让所有流量走 SOCKS5
编辑 ~/.bashrc
或 /etc/profile.d/proxy.sh
添加:
export ALL_PROXY="socks5h://127.0.0.1:1080" export http_proxy="socks5h://127.0.0.1:1080" export https_proxy="socks5h://127.0.0.1:1080"
生效配置:
source ~/.bashrc
④ 在A服务器测试是否生效
curl http://ifconfig.me
返回 B 服务器的公网 IP 即成功。
结论
[A 服务器] --(SSH Socks5)--> [B 服务器] --Internet A服务器的curl/git/pip等访问通过Socks5隧道127.0.0.1:1080 -> 实际上是转发到B服务器再访问的互联网