iptables设置Linux全局代理

85 篇文章 0 订阅
29 篇文章 0 订阅

original url:http://www.2cto.com/os/201504/395181.html

一般用Linux的话都是用全局代理都是用http_proxy以及https_proxy这两个环境环境变量来实现的, 但是缺点是这种方式并不是真正的全局代理, 即使设置了代理的话,对于某些应用还是无效的,比如w3m,而且这种方式并不支持socks协议.

我在实验室环境使用shadowsocks作为代理用来访问外网, 没有用来翻墙,原因是个人感觉shadosocks比其他socks软件好部署,虽然加密损失点性能,但是table加密那点计算量也不算什么.在windows环境的话用proxifity就可以很好得解决全局代理的问题,在Linux上,上面也说了,确实是一件比较麻烦的事情.

shadowsocks的服务器端就不介绍了, 推荐安装C with libev版本, 这个版本包含了ss-server ss-redir ss-local ss-tunnel,其他版本貌似没有实现本文功能的ss-redir. 除了ss-server是作为服务端的,其余三个都是做作为客户端的.ss-redir是用来做透明代理的, ss-local是做本地socks5代理的, ss-tunnel是做隧道的(这个目前还不知道实际的用途). 本文要说的就是用ss-redir配合Linux强大的iptable来实现全局代理.

下面以ubuntu14.04的环境来介绍

# cat juli-start-iptables.sh 
#!/bin/sh
#创建一个叫SOCKS的链
 
iptables -t nat -N SOCKS
 
#忽略服务器的地址,如果不属于内网IP的话一定要注意加上.
 
#其实下面这句可以省略的, 因为它属于172.16.0.0/12
 
iptables -t nat -A SOCKS -d 172.23.45.19 -j RETURN
 
# 忽略本地地址
 
iptables -t nat -A SOCKS -d 0.0.0.0/8 -j RETURN
 
iptables -t nat -A SOCKS -d 10.0.0.0/8 -j RETURN
 
iptables -t nat -A SOCKS -d 127.0.0.0/8 -j RETURN
 
iptables -t nat -A SOCKS -d 169.254.0.0/16 -j RETURN
 
iptables -t nat -A SOCKS -d 172.16.0.0/12 -j RETURN
 
iptables -t nat -A SOCKS -d 192.168.0.0/16 -j RETURN
 
iptables -t nat -A SOCKS -d 224.0.0.0/4 -j RETURN
 
iptables -t nat -A SOCKS -d 240.0.0.0/4 -j RETURN
 
# Anything else should be redirected to shadowsocks's local port
 
#除上面之外的所有流量都跳转到socks的本地端口(local_port),这里使用shadosock默认端口1080
 
iptables -t nat -A SOCKS -p tcp -j REDIRECT --to-ports 1080
 
# 最后是应用上面的规则,将OUTPUT出去的tcp流量全部经过SOCKS链
 
#如果是在openwrt上实现透明代理的话,使用下面被注释了的规则
 
iptables -t nat -A PREROUTING -p tcp -j SOCKS
iptables -t nat -A PREROUTING -p udp -j SOCKS
iptables -t nat -A PREROUTING -p icmp -j SOCKS
 
#iptables -t nat -A OUTPUT -p tcp -j SOCKS

可以将这段脚本保存为一个sh,加入开机自启

将防火墙规则加入系统后,启动ss-redir,其实两者顺序调换了也无所谓

#ss-redir -c /etc/shadosocks.json

shadosocks.json的内容和设置ss-local是一致的.shadosocks的好处是server/client共用一套配置.shadosocks官网即使对客户端服务器有分类, 但是客户端只是服务器端的一个子集,所以推荐用服务器的版本.

经过这样一番设置的话, 本机的所有tcp流量都会经过代理机器出去了,目前ss-redir不知处udp转发.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值