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图形界面下)

image

image

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
posted @   敬code  阅读(1609)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示