前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux代理配置

Linux代理配置

作者头像
码客说
发布2022-09-23 09:43:42
3.4K0
发布2022-09-23 09:43:42
举报
文章被收录于专栏:码客

准备

代码语言: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

末尾增加下面内容,/后面是代理服务器的地址:端口,注意最后还有个.

代码语言:javascript
复制
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别名,从而提供一键启用/关闭代理的命令

代码语言:javascript
复制
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 文件,修改下列行:

代码语言:javascript
复制
START_DAEMON=yes

接下来修改/etc/resolv.conf,将DNS改为127.0.0.1即可

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 代理测试
  • 系统全局HTTP代理
  • 转换Socks代理
  • 配置Socks5代理软件
  • 全局Socks5配置
  • DNS污染的解决办法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档