找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 44|回复: 4

Linux使用代理

[复制链接]

13

主题

15

回帖

587

积分

高级会员

积分
587
发表于 2024-8-9 17:06:24 | 显示全部楼层 |阅读模式
背景需求,国内云服务器,虚拟机能够更方便得连接学术网站,例如GitHub,docker等
方案1 配置proxychains
优点,简单,傻瓜式,在需要代理的命令前加上proxychains即可
方案2 配置透明代理
为了简化流程,我写了个服务单元,并把脚本上传到对象存储,这样就能保证被墙,用户也不需要麻烦去配置
命令行一键配置
bash [ol]
  • #!/bin/bash
  • cat 复制代码
    启动脚本内容:
    [ol]
  • #!/bin/bash
  • # 代理服务器配置
  • PROXY_URL="socks5://127.0.0.1:1080"
  • # 设置环境变量
  • echo "Setting environment variables..."
  • export http_proxy=$PROXY_URL
  • export https_proxy=$PROXY_URL
  • export all_proxy=$PROXY_URL
  • # 将代理环境变量添加到用户的 shell 配置文件
  • echo "export http_proxy=$PROXY_URL" >> ~/.bashrc
  • echo "export https_proxy=$PROXY_URL" >> ~/.bashrc
  • echo "export all_proxy=$PROXY_URL" >> ~/.bashrc
  • # 配置apt使用代理
  • echo "Acquire::http::Proxy "$PROXY_URL";" >>/etc/apt/apt.conf.d/proxy.conf
  • echo "Acquire::https::Proxy "$PROXY_URL";" >>/etc/apt/apt.conf.d/proxy.conf
  • echo "Acquire::socks::Proxy "$PROXY_URL";" >>/etc/apt/apt.conf.d/proxy.conf
  • # 配置wget, git, docker代理
  • # wget
  • echo "Configuring wget..."
  • echo "use_proxy = on" >> ~/.wgetrc
  • echo "http_proxy = $PROXY_URL" >> ~/.wgetrc
  • echo "https_proxy = $PROXY_URL" >> ~/.wgetrc
  • # git
  • echo "Configuring git..."
  • git config --global http.proxy $PROXY_URL
  • git config --global https.proxy $PROXY_URL
  • # Docker
  • DOCKER_CONF_DIR="/etc/systemd/system/docker.service.d"
  • mkdir -p $DOCKER_CONF_DIR
  • echo "[Service]
  • Environment="HTTP_PROXY=$PROXY_URL"
  • Environment="HTTPS_PROXY=$PROXY_URL"
  • " | tee $DOCKER_CONF_DIR/http-proxy.conf
  • # 重新加载并重启Docker服务
  • systemctl daemon-reload
  • systemctl restart docker
  • echo "配置全局加速成功,执行source ~/.bashrc以应用加速!"[/ol]复制代码
    停止脚本内容:
    [ol]
  • #!/bin/bash
  • # 清除环境变量
  • echo "正在清除环境变量..."
  • unset http_proxy
  • unset https_proxy
  • unset all_proxy
  • # 从用户的 shell 配置文件中移除代理环境变量
  • sed -i '/http_proxy/d' ~/.bashrc
  • sed -i '/https_proxy/d' ~/.bashrc
  • sed -i '/all_proxy/d' ~/.bashrc
  • echo "正在清除应用配置..."
  • # 清除wget代理配置
  • sed -i '/use_proxy = on/d' ~/.wgetrc
  • sed -i '/http_proxy/d' ~/.wgetrc
  • sed -i '/https_proxy/d' ~/.wgetrc
  • # 清除git代理配置
  • git config --global --unset http.proxy
  • git config --global --unset https.proxy
  • # 删除Docker代理配置,并重新加载及重启
  • DOCKER_CONF_DIR="/etc/systemd/system/docker.service.d"
  • sudo rm -f $DOCKER_CONF_DIR/http-proxy.conf
  • sudo systemctl daemon-reload
  • sudo systemctl restart docker
  • echo "清除配置成功! 执行 "source ~/.bashrc " 以应用更改"
  • [/ol]复制代码
    求助各位前辈,目前这种方法无法清除当前连接终端的shell变量
    需要手动执行
    unset https_proxy
    unset http_proxy
    unset all_proxy
    才能清除变量,求助优化脚本,能让用户更傻瓜式操作
  • 回复

    使用道具 举报

    25

    主题

    8516

    回帖

    1万

    积分

    论坛元老

    积分
    18543
    发表于 2024-8-9 17:06:58 | 显示全部楼层
    这谁啊,还用oss呢
    回复

    使用道具 举报

    13

    主题

    15

    回帖

    587

    积分

    高级会员

    积分
    587
     楼主| 发表于 2024-8-9 17:10:02 | 显示全部楼层

    HOH 发表于 2024-8-9 17:06

    这谁啊,还用oss呢

    方便,systemctld可以直接读取oss的启动脚本
    回复

    使用道具 举报

    0

    主题

    95

    回帖

    464

    积分

    中级会员

    积分
    464
    发表于 2024-8-9 17:06:00 | 显示全部楼层
    很赞!
    回复

    使用道具 举报

    50

    主题

    381

    回帖

    1498

    积分

    金牌会员

    积分
    1498
    发表于 2024-8-9 17:15:10 | 显示全部楼层
    已学习
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-11-14 11:11 , Processed in 0.076346 second(s), 11 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5 |   访问量:   |   访客量:  

    © 2001-2024 Discuz! Team. |   今日访问量:    |   今日访客量:  

    快速回复 返回顶部 返回列表