Linux利用iptables实现真-全局代理
对于经常要浏览油管等被墙网站的人而言,利用代理来实现fq是非常有必要的。现在fq的方法中,最为主流的应该要数ssr了,因此本教程都是基于ssr的socks5代理而言的。
在windows中,ssr客户端设置的系统代理,大部分应用还是能够起到作用的,但是也有不少却不走代理。这里有个不错的解决方案就是通过sstap来实现网卡层的代理,这样一来,所有的流量都会通过代理流通转发出去了。
然而,windows并不是我们的全部,偶尔我也会用用linux,这样的话,对于linux有没有较好的全局代理方案呢?这就是本文将要介绍的。
下面我将简单介绍了linux常见的设置代理方法,以及全局代理的方法。
常见代理
最为常见的是
http_proxy=http://localhost:1080
https_proxy=http://localhost:1080
export http_proxy https_proxy
其中localhost为代理的站点,这里只是以localhost为例;1080为端口,同样只是为例。
然后导出这两个环境变量。最后可以在bash里面试试网络连通性
curl baidu.com
# or
curl google.com
取消这两个环境变量则用以下命令
unset http_proxy
unset https_proxy
这样设置完成后,只会在当前bash实例中起作用,如果想在每个实例起作用可以这样:
首先 vim /etc/profile 然后在末尾加上
http_proxy=http://localhost:1080
https_proxy=http://localhost:1080
export http_proxy https_proxy
保存后再
source /etc/profile
使其生效。如果想将socks代理转为http代理可以这样设置
http_proxy=socks5:http://localhost:1080
# or
https_proxy=socks5:http://localhost:1080
这里是socks5的例子,socks4则直接将数字5去掉即可。
iptables全局代理
安装
redsocks
首先执行这些命令
sudo apt-get install iptables git-core libevent libevent-dev
git clone http://github.com/darkk/redsocks.git
cd redsocks/
make
echo 'base{log_debug = on; log_info = on; log = "file:/tmp/reddi.log";
daemon = on; redirector = iptables;}
redsocks { local_ip = 127.0.0.1; local_port = 12345; ip = 127.0.0.1;
port = 1080; type = socks5; }' > redsocks.conf
大概流程是先克隆redsocks这个项目,然后编译,添加配置文件。
配置文件中local_ip和local_port表示redsocks这个软件将要监听的地址和端口;后面ip和port表示代理服务器的地址和端口。
然后type还有这几种类型 socks4, socks5, http-connect, http-relay,具体用法可以参考官网或github
iptables
接下来配置iptables防火墙相关的。
直接创建一个脚本文件,方便运行,这里以proxy_iptables_start.sh为例:
#!/bin/bash
# Create new chain
iptables -t nat -N REDSOCKS
# Ignore LANs and some other reserved addresses.
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# Anything else should be redirected to port 12345
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS
首先就是防火墙nat表中新建一个名为REDSOCKS的chain,然后忽略一些局域网地址的转发, 接着就是设置转发规则了,即转发80和443端口的流量。
这样的配置基本就可用了。不过这里我按照官网的另一种配置方法
iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner root -j REDSOCKS
即直接转发root用户发起的所有数据包,而不是转发相应的端口流量,却并不能起到作用!如有大神,还望指导指导!
运行
还是在之前的redoscks目录下,
./redsocks -c redsocks.conf
注:若redsocks没有相应执行权限时,先 chmod +x redsocks 给予执行权限。
这样redsocks已经开启在端口12345的监听了。
然后运行前面那个iptables配置的脚本文件
./proxy_iptables_start.sh
执行完毕后,不出意外的话,打开浏览器,不设置代理或直接设置直连
然后百度ip就可以看到ip也变成了代理ip。
这里根据代理ip而定!
停止
停止运行的话,也建议创建一个脚本文件proxy_iptables_stop.sh
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
killall redsocks
然后./proxy_iptables_stop.sh执行该脚本文件即可停止。
Linux利用iptables实现真-全局代理的更多相关文章
- *** + Polipo 配置全局代理(Linux 版本)
转,原文:http://blog.csdn.net/jon_me/article/details/53525059 我本来是想查这个问题: How to start server and local ...
- Linux/CentOS设置全局代理(http)
说明:为什么说是http代理,其实这个还不能说是全称走代理,罪名写的区别就是ICMP协议这个设置就无效,只能说是90%的应用都可以使用这个设置来实现代理访问,只有个别不行,比如一些软件根本不走http ...
- linux中利用iptables+geoip过滤指定IP
1. 前提条件 iptables >= 1.4.5 kernel-devel >= 3.7 2. 安装依赖包 代码如下 复制代码 # yum install gcc gcc-c++ m ...
- Linux设置全局代理与yum代理
设置全局代理,方法如下: 修改 /etc/profile 文件,添加下面内容: http_proxy=http://username:password@yourproxy:8080/ ftp_prox ...
- linux 防火墙 iptables实例讲解
端口为例): 显示现有规则: iptables –L -n 清空现有规则表: iptables -F 黑名单:先允许所有数据包通过,后逐条添加黑名单规则. iptables –A INPUT–p tc ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- Ubuntu「一键」设置全局代理
Ubuntu「一键」设置代理 sonictl note: the DNS problem may be still there. Except proxychains. WSL (Windows Su ...
- 解析利用wsdl.exe生成webservice代理类的详解
利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部 ...
- redsocks 设置全局代理
分享一下我的经验, http://lilydjwg.is-programmer.com/2014/2/7/linux-really-global-http-proxy.42701.html 1. 优点 ...
随机推荐
- JavaScript-Tool:my97datepicker
ylbtech-JavaScript-Tool:my97datepicker 1.返回顶部 1. 2.下载 https://files.cnblogs.com/files/storebook/java ...
- nodejs利用windows API读取文件属性(dll)
nodejs调用delphi编写的dll中,使用了dll调用windows api转读取文件属性,感觉使用nodejs也可直接调用windows api. 此处需用到windows系统的version ...
- JS 数组的一些方法
1.push() //可以接受任意参数,然后添加到数组的末尾 2.pop()//栈方法,在数组末尾删除一条数据,并且返回这条数据 3.shift()//队列方法,与pop()相似,但是与其相反,在数组 ...
- shell脚本备份系统的方法
linux自动备份shell(使用全备份,增量备份策略) 在cron里设置,每周日晚12点执行(每周日全备份,其余时间增量备份)#vi backup.sh #!/bin/bash # definewe ...
- [tyvj1860]后缀数组
题目链接:http://www.tyvj.cn/p/1860 解题关键:模板题.贴一个代码详解 http://www.cnblogs.com/staginner/archive/2012/02/02/ ...
- 详解MYSQL各种优化原理
说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原 ...
- SqlServer2012-创建表、删除表 增加字段 删除字段操作
新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' nu ...
- C++内存管理之unique_ptr
一个unique_ptr"拥有“他所指向的对象.与shared_ptr不同,某个时刻只能有一个unique_ptr指向一个给定的对象.当unique_ptr被销毁时,它所指向的对象也被销毁. ...
- Note: Clay Codes: Moulding MDS Codes to Yield an MSR Code
Background Erasure Code 纠删码:与纠错码.检错码类似,均为线性分组码,通过编码可以在有限损失的前提下恢复丢失的数据.  假设每个磁盘存储w比特数据,设\(d_0,\cdots ...
- 剑指Spring源码(三)俯瞰Spring的Bean的生命周期(大众版)
距离上一次写Spring源码解析,已经过去了快要好几个月了,主要原因还是Spring的源码解析类文章太难写了,不像我先前写的什么CAS源码,AQS源码,LinkedBlockingQueue等等,这些 ...