准备
1 2 3
| sudo yum -y install curl sudo yum -y install wget sudo yum -y install telnet
|
测试方法
1 2 3
| curl https://www.baidu.com wget https://www.baidu.com telnet www.baidu.com 443
|
代理测试
HTTP代理测试
1 2
| curl --proxy http://127.0.0.1:10808 www.google.com curl --proxy http://127.0.0.1:3128 www.google.com
|
如果是Socks5代理,可以参考下面的代码
1 2
| curl --socks5 127.0.0.1:10808 www.google.com curl --socks5 127.0.0.1:10808 www.baidu.com
|
系统全局HTTP代理
注意
这种方式只适合http代理
设置全局代理,需要编辑profile文件
末尾添加以下代理配置,参考代理是否需要用户名密码
1 2 3 4 5 6 7 8
| export http_proxy=http://proxy_ip:prot export https_proxy=https://proxy_ip:prot
export http_proxy=http://username:password@proxy_ip:prot export https_proxy=https://username:password@proxy_ip:port export ftp_proxy=http://username:password@proxyserver:port
|
如
1 2
| export http_proxy=http://127.0.0.1:10808 export https_proxy=http://127.0.0.1:10808
|
或者建议这样配置
1 2 3 4 5
| http_proxy=proxy.abc.com:8080 https_proxy=$http_proxy ftp_proxy=user:password@proxy.abc.com:8080 no_proxy=*.abc.com,10.*.*.*,192.168.*.*,*.local,localhost,127.0.0.1 export http_proxy https_proxy ftp_proxy no_proxy
|
其中:
http_proxy:http协议使用代理服务器地址;
https_proxy:https协议使用安全代理地址;
ftp_proxy:ftp协议使用代理服务器地址;
user:代理使用的用户名;
password:代理使用用户名的密码;
proxy.abc.com:代理地址,可以是IP,也可以是域名;
8080:使用的端口;
no_proxy:不使用代理的主机或IP。
生效配置文件
查看当前已设置代理
1 2
| echo $http_proxy echo $https_proxy
|
测试
1 2 3
| wget www.google.com
telnet google.com 80
|
转换Socks代理
系统代理只能设置HTTP代理,但是使用privoxy将socks5转换为http代理
安装privoxy
配置privoxy
末尾增加下面内容,/后面是代理服务器的地址:端口,注意最后还有个.
1
| forward-socks5t / 127.0.0.1:10808 .
|
启动服务
设置一下系统代理变量
1 2 3
| export all_proxy=http://127.0.0.1:8118 export http_proxy=http://127.0.0.1:8118 export https_proxy=http://127.0.0.1:8118
|
注:8118是privoxy默认使用的端口
配置Socks5代理软件
Linux 有一个能够强迫任何软件通过 SOCKS 代理上网的工具,其名就是 tsocks。Tsocks 是一个透明 SOCKS 代理软件。
1 安装
1
| sudo apt-get install tsocks
|
2 配置
修改配置文件:
1
| sudo vim /etc/tsocks.conf
|
将其内容改成以下几行并保存退出:
1 2 3 4
| local = 192.168.1.0/255.255.255.0 server = 127.0.0.1 server_type = 5 server_port = 10808
|
3 使用
全局Socks5配置
1 2 3 4
| sudo iptables -t nat -F sudo iptables -t nat -N SSR sudo iptables -t nat -A SSR -j REDIRECT -p tcp --to-ports 12345 -m comment --comment 'redsocks全局SSR代理' sudo iptables -t nat -A OUTPUT -j SSR -p tcp -m comment --comment '跳转到redsocks全局SSR代理'
|
我们要做的就是放行局域网和socks5代理服务器IP,此处我们往OUTPUT链里设置,设置到SSR链也可以,不过最好用SSR链专门来设置白名单
1 2 3 4 5 6 7 8 9 10 11
| sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 0.0.0.0/8 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 10.0.0.0/8 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 100.64.0.0/10 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 127.0.0.0/8 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 169.254.0.0/16 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 172.16.0.0/12 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 192.168.0.0/16 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 198.18.0.0/15 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 224.0.0.0/4 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment '局域网放行' -d 240.0.0.0/4 sudo iptables -t nat -I OUTPUT -j RETURN -m comment --comment 'socks5代理服务器放行' -d 47.95.255.46
|
设置白名单
1 2
| release_domain="cip.cc" sudo iptables -t nat -I SSR -j RETURN -m comment --comment '白名单域名:'"$release_domain" -d $release_domain
|
由于这个操作很频繁,所以我写了一行交互式的脚本
1
| read -p 请输入要设置白名单的域名: release_domain && sudo iptables -t nat -I SSR -j RETURN -m comment --comment '白名单域名:'"$release_domain" -d $release_domain && sudo iptables -t nat -nvL --line-number
|
查看SSR链规则
1
| sudo iptables -t nat -nvL SSR --line-number
|
添加自定义命令在.bashrc中添加alias别名,从而提供一键启用/关闭代理的命令
1 2 3 4 5 6 7
| alias ssrclose="sudo iptables -t nat -j RETURN -m comment --comment 临时关闭代理 -I SSR" alias ssrstart="sudo iptables -t nat -j RETURN -m comment --comment 临时关闭代理 -D SSR" alias ssrstatus="sudo iptables -t nat -nvL SSR --line-number"
function ssradd() { read -p 请输入要设置白名单的域名: release_domain && sudo iptables -t nat -I SSR -j RETURN -m comment --comment '白名单域名:'"$release_domain" -d $release_domain && sudo iptables -t nat -nvL --line-number }
|
DNS污染的解决办法
什么是pdnsd
p dns d -> Proxy DNS Daemon
安装pdnsd执行tcp查询,主要配置如下
官方文档
1 2 3 4 5 6 7 8 9 10 11 12 13
| server { label = "root-servers"; root_server=on; ip = 8.8.8.8; timeout = 5; uptest = query; interval = 30m; ping_timeout = 300; purge_cache = off; exclude = .localdomain; policy = included; preset = off; }
|
启动本地DNS服务:
1
| sudo pdnsd --tcp -mto -d
|
为了开机启动pdnsd,编辑 /etc/default/pdnsd 文件,修改下列行:
接下来修改/etc/resolv.conf,将DNS改为127.0.0.1即可