设为首页收藏本站

恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 39585|回复: 33
打印 上一主题 下一主题

redsocks连接socks5代理服务器实现全局代理,只是为了访问外网

[复制链接]
跳转到指定楼层
1#
发表于 2014-3-21 01:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lostinfever 于 2014-3-22 02:32 编辑

一提到redsocks和代理这些关键词,大家都会联想到这是翻WALL用的。
虽然redsocks是为翻WALL而生,但是我们还可以用它来连接固定的socks5代理,让内网用户通过openwrt访问外网

我的网络环境是这样的,通过pppoe拨号的方式获得内网IP,没有访问外网的权限,很苦逼,但是前些天无意中发现内网里有一台socks5的代理服务器,连接这个代理之后就可以畅通无阻的访问外网了。
在windows下,可以通过pppoe拨号获得内网IP,使用Proxifier这款软件配置socks5全局代理,来获得访问外网的权限。但是手机平板就难以做到这两步。
所以我想用openwrt做路由,先pppoe拨号获得内网IP,再通过redsocks2将内网里所有设备的连接请求全部转发到指定的socks5代理服务器,这样就可以实现终端免设置访问外网了。

估计有这种需求的人不多,但是还是记录下来作为一个例子给大家参考吧(基于openwrt-x86):

1.先使用内网账号pppoe拨号获得内网IP:


2.获取适应你openwrt平台的redsocks2,这里提供一个x86的redsocks2,其他平台请自行搜索或编译:
redsocks2_0.5-x86.zip (39.98 KB, 下载次数: 66)

3.配置redsocks2,配置文件在/etc/config/redsocks.conf:
  1. base {
  2. log_debug = off;
  3. log_info = off;
  4. daemon = on;
  5. redirector= iptables;
  6. }

  7. redsocks {
  8. local_ip = 192.168.1.1;
  9. local_port = 1081;
  10. ip = 你的socks5代理服务器地址,也可以是域名;
  11. port = 1080;
  12. type = socks5;
  13. autoproxy = 0;
  14. }
复制代码
配置文件写好后,将启动redsocks的命令加入rc.local里,实现开机启动:
  1. # Put your custom commands here that should be executed once
  2. # the system init finished. By default this file does nothing.

  3. redsocks2 -c /etc/config/redsocks.conf

  4. exit 0
复制代码
4.配置iptables,网络-防火墙-自定义规则,把内网所有端口的数据全部转发到redsocks:
  1. iptables -t nat -N REDSOCKS
  2. iptables -t nat -A PREROUTING -i br-lan -p tcp -j REDSOCKS
  3. iptables -t nat -A PREROUTING -i br-lan -p udp -j REDSOCKS

  4. # Do not redirect traffic to the followign address ranges
  5. iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
  6. iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
  7. iptables -t nat -A REDSOCKS -d 10.8.0.0/16 -j RETURN
  8. iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
  9. iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

  10. # Redirect all kinds of traffic

  11. iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 1081
  12. iptables -t nat -A REDSOCKS -p udp -j REDIRECT --to-ports 1081
复制代码
通过这样的配置之后,内网所有设备的访问请求都会通过op主路由被转发到socks5代理,获得外网访问权限:


PS:还有一个没解决的问题,这样设置之后,内网其他设备的请求是可以正常转发了,但是op本身访问网络时并没有通过socks5代理转发。

由于本地发起的网络请求不通过防火墙,所以不会走prerouting,因而没有被转发。

不知道要设置一条什么样的转发规则,能让op本地的连接请求也被转发到redsocks上,求精通iptables的大神指教!

评分

参与人数 1恩山币 +1 收起 理由
春暖花开 + 1 城会玩

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏28 转播转播 分享分享 分享淘帖 支持支持 反对反对
推荐
发表于 2014-3-21 14:03 | 只看该作者
路由器本身:

iptables -t nat -A OUTPUT 1 -p tcp  -j REDSOCKS
iptables -t nat -A OUTPUT 1 -p udp  -j REDSOCKS
2#
发表于 2014-3-21 08:48 | 只看该作者
3#
发表于 2014-3-21 09:27 | 只看该作者
不错,可惜我这里的内网环境比楼主的还复杂
4#
发表于 2014-3-21 09:53 | 只看该作者
我也有这个问题, 应该是路由本身不是通过br-lan口或 prerouting之类的, 所以以下两条命令并不能把路由自身的请求转到 REDSOCKS

iptables -t nat -A PREROUTING -i br-lan -p tcp -j REDSOCKS
iptables -t nat -A PREROUTING -i br-lan -p udp -j REDSOCKS
5#
 楼主| 发表于 2014-3-21 10:24 来自手机 | 只看该作者
muziling 发表于 2014-3-21 09:53
我也有这个问题, 应该是路由本身不是通过br-lan口或 prerouting之类的, 所以以下两条命令并不能把路由自 ...

说得对,刚百度查了一下:

本地连接的数据包不会经过网卡转发,是由内核处理后直接交给进程,所以不会走prerouting,需要对127.0.0.1的output数据包配置转发,等下测试一下
6#
发表于 2014-3-21 13:18 | 只看该作者
这个方法也可以用到http代理服务器吗?我也是单位内网,跟楼主情况有点像
7#
 楼主| 发表于 2014-3-21 13:20 | 只看该作者
guohao1118 发表于 2014-3-21 13:18
这个方法也可以用到http代理服务器吗?我也是单位内网,跟楼主情况有点像

http代理也可以,但是只能代理http请求,只有80端口能通

socks5代理是全部协议都可以穿透,所有端口都可以代理
9#
发表于 2014-3-21 14:07 | 只看该作者
SZPUNK 发表于 2014-3-21 14:03
路由器本身:

iptables -t nat -A OUTPUT 1 -p tcp  -j REDSOCKS

# iptables -t nat -A OUTPUT 1 -p tcp  -j REDSOCKS
Bad argument `1'
Try `iptables -h' or 'iptables --help' for more information.


iptables 版本是 v1.4.10
10#
发表于 2014-3-21 14:15 | 只看该作者
muziling 发表于 2014-3-21 14:07
# iptables -t nat -A OUTPUT 1 -p tcp  -j REDSOCKS
Bad argument `1'
Try `iptables -h' or 'iptable ...

去掉 1 试试。
11#
发表于 2014-3-21 14:27 | 只看该作者

好像不行,加了, 随便wget一个东西,都是connection refused

# wget http://www.baiud.com
Connecting to www.baiud.com (216.218.207.151:80)
wget: can't connect to remote host (216.218.207.151): Connection refused
12#
发表于 2014-3-21 14:42 | 只看该作者
muziling 发表于 2014-3-21 14:27
好像不行,加了, 随便wget一个东西,都是connection refused

# wget http://www.baiud.com
  1. [email protected]:/tmp/home/root# iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS
  2. [email protected]:/tmp/home/root# wget <a target="_blank" href="http://www.baiud.com">http://www.baiud.com</a>
  3. Connecting to <a target="_blank" href="http://www.baiud.com">www.baiud.com</a> (216.218.207.151:80)
  4. wget: server returned error: HTTP/1.1 403 Forbidden
  5. [email protected]:/tmp/home/root# wget <a target="_blank" href="http://www.baidu.com">http://www.baidu.com</a>
  6. Connecting to <a target="_blank" href="http://www.baidu.com">www.baidu.com</a> (111.13.100.91:80)
  7. Connecting to <a target="_blank" href="http://www.baidu.com">www.baidu.com</a> (111.13.100.92:80)
  8. index.html           100% |*********************************************************************************************************************************| 16428   0:00:00 ETA
  9. [email protected]:/tmp/home/root#
复制代码

你那个地址有问题吧。。。。
13#
发表于 2014-3-21 14:53 | 只看该作者
本帖最后由 muziling 于 2014-3-21 15:00 编辑
SZPUNK 发表于 2014-3-21 14:42
你那个地址有问题吧。。。。

好奇怪,我的就是不行, 你的iptabes规则列表是什么

[[email protected]:/tmp]# iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
[[email protected]:/tmp]# wget http://www.baidu.com
Connecting to www.baidu.com (115.239.210.27:80)
wget: can't connect to remote host (115.239.210.27): Connection refused
[[email protected]:/tmp]# wget http://www.qq.com
Connecting to www.qq.com (14.17.32.211:80)
wget: can't connect to remote host (14.17.32.211): Connection refused





14#
发表于 2014-3-21 14:56 | 只看该作者
  1. [email protected]:/tmp/home/root# wgetpro --no-check-certificate https://twitter.com
  2. --2014-03-21 14:55:26--  https://twitter.com/
  3. Resolving twitter.com... 199.59.149.230, 199.59.150.39, 199.59.149.198
  4. Connecting to twitter.com|199.59.149.230|:443... connected.
  5. WARNING: cannot verify twitter.com's certificate, issued by '/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)06/CN=VeriSign Class 3 Extended Validation SSL CA':
  6.   Unable to locally verify the issuer's authority.
  7. HTTP request sent, awaiting response... 200 OK
  8. Length: 42596 (42K) [text/html]
  9. Saving to: 'index.html'

  10. 100%[========================================================================================================================================>] 42,596      67.8KB/s   in 0.6s   

  11. 2014-03-21 14:55:27 (67.8 KB/s) - 'index.html' saved [42596/42596]

  12. [email protected]:/tmp/home/root# cat index.html | grep \<title
  13.       <title>Twitter</title>
  14. [email protected]:/tmp/home/root#
复制代码

twitter 也没问题。
15#
发表于 2014-3-21 15:01 | 只看该作者
SZPUNK 发表于 2014-3-21 14:56
twitter 也没问题。

我配在redsocks里的代理是192.168的网段,会是这个原因?
16#
发表于 2014-3-21 15:13 | 只看该作者
muziling 发表于 2014-3-21 14:53
好奇怪,我的就是不行, 你的iptabes规则列表是什么

[[email protected]:/tmp]# iptables -t nat -A OUTPU ...
  1. [email protected]:/tmp/home/root# iptables -t nat -nvL --line-number
  2. Chain PREROUTING (policy ACCEPT 790 packets, 51114 bytes)
  3. num   pkts bytes target     prot opt in     out     source               destination         
  4. 1        0     0 WANPREROUTING  all  --  *      *       0.0.0.0/0            192.168.8.26        
  5. 2        0     0 DROP       all  --  vlan2  *       0.0.0.0/0            192.168.6.0/24      
  6. 3     3826  204K SHADOWSOCKS  tcp  --  br0    *       192.168.6.0/24       0.0.0.0/0           

  7. Chain POSTROUTING (policy ACCEPT 43 packets, 2897 bytes)
  8. num   pkts bytes target     prot opt in     out     source               destination         
  9. 1     6193  390K MASQUERADE  all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0           
  10. 2       32 10496 SNAT       all  --  *      br0     192.168.6.0/24       192.168.6.0/24      to:192.168.6.1

  11. Chain OUTPUT (policy ACCEPT 70 packets, 5639 bytes)
  12. num   pkts bytes target     prot opt in     out     source               destination         
  13. 1       12   720 SHADOWSOCKS  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           

  14. Chain SHADOWSOCKS (2 references)
  15. num   pkts bytes target     prot opt in     out     source               destination         
  16. 1        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/8           
  17. 2        0     0 RETURN     all  --  *      *       0.0.0.0/0            10.0.0.0/8         
  18. 3        0     0 RETURN     all  --  *      *       0.0.0.0/0            127.0.0.0/8         
  19. 4        0     0 RETURN     all  --  *      *       0.0.0.0/0            169.254.0.0/16      
  20. 5        0     0 RETURN     all  --  *      *       0.0.0.0/0            172.16.0.0/12      
  21. 6        0     0 RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/16      
  22. 7        0     0 RETURN     all  --  *      *       0.0.0.0/0            224.0.0.0/4         
  23. 8        0     0 RETURN     all  --  *      *       0.0.0.0/0            240.0.0.0/4         
  24. 9        4   240 RETURN     all  --  *      *       0.0.0.0/0            192.241.229.231     
  25. 10      58  3048 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           set gfwlist dst redir ports 7272

  26. Chain WANPREROUTING (1 references)
  27. num   pkts bytes target     prot opt in     out     source               destination         
  28. 1        0     0 DNAT       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           to:192.168.6.1
  29. [email protected]:/tmp/home/root#
复制代码
17#
 楼主| 发表于 2014-3-22 10:43 来自手机 | 只看该作者
试了很多次对OUTPUT数据进行转发,都没有成功让OP自身走redsocks

点评

redsocks的local_ip = 192.168.1.1要改成0.0.0.0  详情 回复 发表于 2015-7-5 15:25
18#
发表于 2014-4-30 08:01 | 只看该作者
求教楼主如何设置3G网卡的代理,如何让cmwap联网后通过路由器自个运算代理规则后给手机或PC直接使用(主因wap受限制不能上网了)
19#
发表于 2014-12-9 00:01 | 只看该作者
想学编译,但是没地方学
20#
发表于 2014-12-22 16:40 | 只看该作者
大大,使用了你的方法,很好用,但是遇到一个问题,运行redsocks2以及用iptables劫持流量后,DHCP没法获取地址了,是不是要把DHCP的包给排除掉呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛 ( 苏ICP备05084872号-1  

GMT+8, 2017-3-26 21:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表