Ubuntu下SSH隧道 + redsocks + iptables 实现全局代理
场景
在很多情况下,我们拥有一台外网机器(固定IP),想要访问与之相连的内网机器。
- 只能ssh登录到某台机器,需要访问此机器的其他端口服务
- 只能ssh登录到某台机器,需要访问其他内网机器的端口
工具
- sshpass 或者 FinalShell(图形界面下)
- redsocks
- iptables
步骤
1. 建立隧道(以下3种方式任选其一)
- 交互式命令行建立隧道
## 命令格式:
ssh -CfNg -D 本地端口 user@server -p SSH端口
## 示例 远程IP: 39.39.39.39 ssh端口:8047 用户:wangjing 密码:jing123 本地socks5监听端口:7000
ssh -CfNg -D 7000 wangjing@39.39.39.39 -p 8047
## 执行命令后输入密码即可
- 无交互式命令行建立隧道
交互式命令行方式每次运行都需要输入密码,较为繁琐。所以寻找一种不用每次都输入密码的方式,用到sshpass
# 安装 sshpass
sudo apt-get install sshpass
# 命令格式:
sshpass -p 密码 ssh -CfNg -D 本地端口 user@server -p SSH端口
## 示例 远程IP: 39.39.39.39 ssh端口:8047 用户:wangjing 密码:jing123 本地socks5监听端口:7000
sshpass jing123 ssh -CfNg -D 7000 wangjing@39.39.39.39 -p 8047
- FinalShell建立隧道(GUI图形界面下)
2. 配置resocks 实现全局透明代理
- 安装resocks
sudo apt-get install redsocks
- 配置resocks
## 配置文件 /etc/redsocks.conf
sudo vim /etc/redsocks.conf
## 找到redsocks节点
redsocks {
/* `local_ip' defaults to 127.0.0.1 for security reasons,
* use 0.0.0.0 if you want to listen on every interface.
* `local_*' are used as port to redirect to.
*/
local_ip = 0.0.0.0; //动态端口需要设置为0.0.0.0,很重要,不然会出现不返回的情况
local_port = 12345; //这个端口默认就行,只要跟你以后iptables,重定向的端口一样就ok
// `ip' and `port' are IP and tcp-port of proxy-server
// You can also use hostname instead of IP, only one (random)
// address of multihomed host will be used.
ip = 127.0.0.1; //地址就是127.0.0.1
port = 7000; //客户端的端口,默认就是1080
// known types: socks4, socks5, http-connect, http-relay
type = socks5; //使用的代理类型
// login = "foobar";
// password = "baz";
}
## 配置完成后需重启redsocks
sudo service redsocks restart
- resocks 相关命令
## 启动服务
sudo service redsocks start
## 停止服务
sudo service redsocks stop
## 重启服务
sudo service redsocks restart
## 查看运行状态
sudo service redsocks status
## 配置开机启动
sudo systemctl enable redsocks
## 取消开启启动
sudo systemctl disable redsocks
3. iptables配置路由转发
## 配置192.168.99.0/24网段进行转发到resocks的端口12345
sudo iptables -t nat -I OUTPUT -p tcp -d 192.168.99.0/24 -j REDIRECT --to-ports 12345
## 配置其他请求不转发
sudo iptables -t nat -A OUTPUT -j RETURN
本文来自博客园,作者:敬code,转载请注明原文链接:https://www.cnblogs.com/dacode/p/16642504.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~