准备
代码语言:javascript复制sudo yum -y install curl
sudo yum -y install wget
sudo yum -y install telnet
测试方法
代码语言:javascript复制curl https://www.baidu.com
wget https://www.baidu.com
telnet www.baidu.com 443
代理测试
HTTP代理测试
代码语言:javascript复制curl --proxy http://127.0.0.1:10808 www.google.com
curl --proxy http://127.0.0.1:3128 www.google.com
如果是Socks5代理,可以参考下面的代码
代码语言:javascript复制curl --socks5 127.0.0.1:10808 www.google.com
curl --socks5 127.0.0.1:10808 www.baidu.com
系统全局HTTP代理
注意
这种方式只适合http代理
设置全局代理,需要编辑profile文件
代码语言:javascript复制vi /etc/profile
末尾添加以下代理配置,参考代理是否需要用户名密码
代码语言:javascript复制#无用户名密码
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
如
代码语言:javascript复制export http_proxy=http://127.0.0.1:10808
export https_proxy=http://127.0.0.1:10808
或者建议这样配置
代码语言:javascript复制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。
生效配置文件
代码语言:javascript复制source /etc/profile
查看当前已设置代理
代码语言:javascript复制echo $http_proxy
echo $https_proxy
测试
代码语言:javascript复制wget www.google.com
# 或者
telnet google.com 80
转换Socks代理
系统代理只能设置HTTP代理,但是使用privoxy
将socks5转换为http代理
安装privoxy
代码语言:javascript复制yum install -y privoxy
配置privoxy
代码语言:javascript复制vim /etc/privoxy/config
末尾增加下面内容,/
后面是代理服务器的地址:端口
,注意最后还有个.
forward-socks5t / 127.0.0.1:10808 .
启动服务
代码语言:javascript复制systemctl start privoxy
设置一下系统代理变量
代码语言:javascript复制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 安装
代码语言:javascript复制sudo apt-get install tsocks
2 配置
修改配置文件:
代码语言:javascript复制sudo vim /etc/tsocks.conf
将其内容改成以下几行并保存退出:
代码语言:javascript复制local = 192.168.1.0/255.255.255.0 #local表示本地的网络,也就是不使用socks代理的网络
server = 127.0.0.1 # SOCKS 服务器的 IP
server_type = 5 # SOCKS 服务版本
server_port = 10808 # SOCKS 服务使用的端口
3 使用
代码语言:javascript复制tsocks 你的软件 &
全局Socks5配置
代码语言:javascript复制sudo iptables -t nat -F # 清空nat表规则
sudo iptables -t nat -N SSR # 新建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链专门来设置白名单
代码语言:javascript复制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
设置白名单
代码语言:javascript复制release_domain="cip.cc"
sudo iptables -t nat -I SSR -j RETURN -m comment --comment '白名单域名:'"$release_domain" -d $release_domain
由于这个操作很频繁,所以我写了一行交互式的脚本
代码语言:javascript复制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链规则
代码语言:javascript复制sudo iptables -t nat -nvL SSR --line-number
添加自定义命令在.bashrc
中添加alias
别名,从而提供一键启用/关闭代理的命令
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查询,主要配置如下 官方文档
代码语言:javascript复制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服务:
代码语言:javascript复制sudo pdnsd --tcp -mto -d
为了开机启动pdnsd,编辑 /etc/default/pdnsd
文件,修改下列行:
START_DAEMON=yes
接下来修改/etc/resolv.conf
,将DNS改为127.0.0.1
即可