ubuntu 有办法让终端走 proxy 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1and0
V2EX    Ubuntu

ubuntu 有办法让终端走 proxy 吗?

  •  
  •   1and0 2020-05-05 01:28:04 +08:00 5203 次点击
    这是一个创建于 1985 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ubuntu 设置了系统级的 proxy,但是自带终端不走,添加了 export http_proxy=socks5:********后,能从 google 下载 gpg 了,不过 k8s 的镜像拉不下来。

    为什么系统级的代理对终端不生效?
    54 条回复    2020-05-06 16:10:27 +08:00
    diggerdu
        1
    diggerdu  
       2020-05-05 01:32:03 +08:00 via iPhone   5
    proxychains
    polaa
        2
    polaa  
       2020-05-05 01:33:44 +08:00   1
    http_proxy 哎 然后你设置个 socks5 ???
    burringcat
        3
    burringcat  
       2020-05-05 01:34:24 +08:00 via Android   1
    “系统级”代理是指 gnome shell 的代理吗
    burringcat
        4
    burringcat  
       2020-05-05 01:36:38 +08:00 via Android
    K8s 下载应该是用它的守护进程,应该是要配它的 systemd 文件或者其他配置文件
    VDimos
        5
    VDimos  
       2020-05-05 01:36:59 +08:00 via Android
    proxychains,不过还是有些许问题,比如 nvm 就没办法代理
    caesarwoo
        6
    caesarwoo  
       2020-05-05 01:39:46 +08:00   2
    GNOME 所谓的系统级代理是指在 env中加入 http_proxy https_proxy 。 对于不支持代理环境变量读取的程序,可以考虑套一层 proxychains 。如果要使用最彻底的代理的话,建议直接用 iptables 进行流量转发透明代理。
    halfcrazy
        7
    halfcrazy  
       2020-05-05 02:01:22 +08:00
    docker 的 daemon.json 里配一个阿里的 registry 就行。
    Kobayashi
        8
    Kobayashi  
       2020-05-05 02:08:35 +08:00 via Android
    有图形界面试试 mellow 。https://github.com/mellow-io/mellow
    oahebky
        9
    oahebky  
       2020-05-05 02:16:58 +08:00   1
    不同的工具,环境变量是不一样的。

    基于 python 的是 all_proxy
    wget 是 http_proxy 和 https_proxy.
    git 可以用 -c "http.proxy=..."

    所以说让终端走代理是可以的(主机运行的要开启局域网可用)。
    但是配置的方法要对。

    docker 的话配阿里的 register 就可以,这里是一篇简单的教程:
    [ [docker] 阿里云镜像加速]( https://blog.csdn.net/qq_29757283/article/details/105740109)

    至于 docker 用什么环境变量 -- 我没用过,我已经把方法说了。
    lionseun
        10
    lionseun  
       2020-05-05 08:44:04 +08:00 via Android
    不同工具代理方式不一样,9 楼正解
    isir1234
        11
    isir1234  
       2020-05-05 08:52:11 +08:00
    我是拉的阿里云镜像然后打官方镜像的 tag, 一步到位.

    sudo apt update && sudo apt install -y apt-transport-https curl
    curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt update && sudo apt install -y kubelet kubectl kubeadm

    KUBE_VER=$(kubeadm version -o short)
    IMAGE_MIRROR="registry.cn-hangzhou.aliyuncs.com/google_containers"
    kubeadm config images list >/tmp/ki
    images=$(tail -n7 /tmp/ki | tr "\/" "\n" | awk '!(NR%2)')
    for imageName in ${images[@]}; do
    docker pull ${IMAGE_MIRROR}/${imageName}
    docker tag ${IMAGE_MIRROR}/${imageName} k8s.gcr.io/${imageName}
    docker rmi ${IMAGE_MIRROR}/${imageName}
    done
    shenfu1991
        12
    shenfu1991  
       2020-05-05 09:37:13 +08:00 via iPhone
    有,看我之前帖子
    shenfu1991
        13
    shenfu1991  
       2020-05-05 09:40:04 +08:00 via iPhone   1
    @shenfu1991 #12 错了,不是帖子,之前有人问过一样的问题,搜索一下
    huazhuhotels
        14
    huazhuhotels  
       2020-05-05 09:43:18 +08:00
    privoxy

    export http_proxy
    wujunzero
        15
    wujunzero  
       2020-05-05 09:56:34 +08:00
    all_proxy=sock5, 顺便写个脚本放 rc 里。
    tankren
        16
    tankren  
       2020-05-05 10:13:14 +08:00
    proxychains, 但是对 docker 无效
    conn4575
        17
    conn4575  
       2020-05-05 10:25:20 +08:00 via Android   2
    曾经我也折腾这些代理,后来我换路由器了,GTMD 局域网
    luassuns
        18
    luassuns  
       2020-05-05 10:27:16 +08:00 via iPhone
    还可以全局透明代理,v2ray 可用 qv2ray
    ossphil
        19
    ossphil  
       2020-05-05 10:27:40 +08:00
    用 socks5h,还有设置的 all_proxy 代理对 apt 不起作用,应该写成
    sudo apt -o Acquire::http::proxy="socks5h://${PROXY_SOCKS5}/" install
    这样的形式
    optional
        20
    optional  
       2020-05-05 10:52:57 +08:00
    docker 的命令只是个 rpc 请求,真正的网络在 dockerd 进程里面, 不过 pull 这需求像上面说的一样只要加一个 registry 就行。
    elfive
        21
    elfive  
       2020-05-05 10:53:10 +08:00 via iPhone
    export HTTP_PROXY=http://0.0.0.0:0000
    export HTTPS_PROXY=http://0.0.0.0:0000
    两句话解决
    venpong
        22
    venpong  
       2020-05-05 12:33:03 +08:00
    别折腾了,加个路由器吧。
    liuminghao233
        23
    liuminghao233  
       2020-05-05 12:38:44 +08:00 via iPhone
    用 dsvpn
    ysc3839
        24
    ysc3839  
       2020-05-05 12:39:45 +08:00 via Android
    @polaa 没问题,http_proxy 指的是 http 协议的请求使用这个代理服务器。socks5 是代理服务器的协议。
    ysc3839
        25
    ysc3839  
       2020-05-05 12:41:10 +08:00 via Android
    @oahebky 没记错的话 Python 也支持 http_proxy 和 https_proxy,git 底层使用的是 curl,也可以用环境变量配置代理。
    drackzy
        26
    drackzy  
       2020-05-05 12:42:22 +08:00
    proxychains zsh, 然后这个新的 zsh shell 基本都走代理了
    liuxu
        27
    liuxu  
       2020-05-05 12:49:17 +08:00
    具体问题我忘记了,几年前 proxychains 出过问题,功能有缺陷,所以换成了 proxychains-ng,修复了那个问题

    https://github.com/rofl0r/proxychains-ng
    huobazi
        28
    huobazi  
       2020-05-05 13:10:45 +08:00
    0. 安装 polipo, ref :https://github.com/jech/polipo
    2. 设置 polipo
    ```
    https://github.com/huobazi/dotfiles/blob/master/polipo

    3. 切换脚本, ref https://github.com/huobazi/dotfiles/blob/master/zshrc
    ```bash
    # proxy setting
    function unproxy(){
    unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY
    echo -e "\033[0;32m Proxy off ...\033[0m"
    curl cip.cc
    }
    function proxy() {
    export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
    export http_proxy="http://127.0.0.1:1090" https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy all_proxy=$http_proxy ALL_PROXY=$http_proxy
    echo -e "\033[0;32m Proxy on ...\033[0m"
    curl cip.cc
    }
    ```
    polaa
        29
    polaa  
       2020-05-05 13:41:34 +08:00
    @ysc3839 ...好吧 之前 socks5 都是走 all_proxy 的
    HytonightYX
        30
    HytonightYX  
       2020-05-05 14:03:27 +08:00   1
    写入 bashrc 或者 zshrc

    alias setproxy="export ALL_PROXY=socks5://127.0.0.1:XXXX"
    alias unsetproxy="unset ALL_PROXY"

    随后需要代理敲 setproxy,关闭就 unsetproxy
    itgoyo
        31
    itgoyo  
       2020-05-05 14:10:00 +08:00
    proxychains
    wdlth
        32
    wdlth  
       2020-05-05 14:12:04 +08:00
    docker 是以服务形式运行的,要在 systemd 的配置加 Environment 设置环境变量。
    gleport
        33
    gleport  
       2020-05-05 14:17:27 +08:00
    proxychains 对 Go 编译出来的无效。docker 可以参考 https://github.com/hmgle/graftcp/issues/14
    ronman
        34
    ronman  
       2020-05-05 14:36:08 +08:00 via Android
    @polaa ???本来不就是这样设置吗
    polaa
        35
    polaa  
       2020-05-05 14:38:45 +08:00
    @ronman 哈哈哈 我也不知道啊 我一般都是 export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7891 但是楼上说 socks5 也可以那样
    ronman
        36
    ronman  
       2020-05-05 15:25:10 +08:00 via Android
    @polaa 是这样的,相当于把终端的 http 通过本机的 socks 来代理,后面可以是多种协议,只要你本地有
    toptyloo
        37
    toptyloo  
       2020-05-05 15:42:41 +08:00
    安利 Graftcp
    DefoliationM
        38
    DefoliationM  
       2020-05-05 15:57:18 +08:00
    http proxy 你搞个 socks5 协议都对不上
    tinkerer
        39
    tinkerer  
       2020-05-05 16:13:00 +08:00 via Android
    tsocks
    ByteCat
        40
    ByteCat  
       2020-05-05 17:23:38 +08:00
    lixingcong
        41
    lixingcong  
       2020-05-05 17:31:32 +08:00
    ss-redir+iptables+chinaroute
    love
        42
    love  
       2020-05-05 17:40:59 +08:00
    http proxy 都说是 http 了,你给了一个 socks5 ?
    如果只有 socks5,用个工具转一下成 http proxy,比如 gost

    我平时是建了个文件比如 proxy.sh
    export http_proxy=http://localhost:8123
    export https_proxy=http://localhost:8123

    需要用代理时打一行
    . ~/proxy.sh
    就可以了
    my3157
        43
    my3157  
       2020-05-05 18:18:26 +08:00
    $ which proxy
    proxy () {
    export http_proxy="http://127.0.0.1:8123"
    export https_proxy="http://127.0.0.1:8123"
    }

    $ which unproxy
    unproxy () {
    unset http_proxy
    unset https_proxy
    }
    charlie21
        44
    charlie21  
       2020-05-05 21:47:28 +08:00
    关键词 网络流量转发 终端
    illusionist
        45
    illusionist  
       2020-05-05 21:51:22 +08:00 via iPhone
    13 楼的就可以了,我自己用的就是这个,包括拖 Android AOSP 两百多 G 的 mirror 镜像代码,都是 OK 的。
    wangbenjun5
        46
    wangbenjun5  
       2020-05-05 22:02:33 +08:00
    其实很多人说的已经很明白了,在 Linux 下不是所有应用都走系统代理的,其实 Windows 也一样,比如 chrome 默认是走系统代理,但是 Firefox 则需要单独设置,具体问题具体分析,docker 这种复杂应用,必然也是有自己单独的配置选项
    darknoll
        47
    darknoll  
       2020-05-05 22:17:44 +08:00 via Android
    是 all_proxy
    feelinglucky
        48
    feelinglucky  
       2020-05-05 23:17:30 +08:00
    关于 K8s 拉不下来的话,可以参考我前几天整理的 Guide

    https://github.com/mingcheng/deploy-k8s-within-aliyun-mirror

    话说国内的环境太差了,逼人科学访问网络,和谐用语
    stkevintan
        49
    stkevintan  
       2020-05-05 23:22:48 +08:00 via Android
    你需要透明代理: https://github.com/mellow-io/mellow
    milkpuff
        50
    milkpuff  
       2020-05-05 23:37:15 +08:00
    楼上说的 privoxy 可以,刚用过。
    ctro15547
        51
    ctro15547  
       2020-05-05 23:58:45 +08:00
    proxychains 这个挺好用的
    fox0001
        52
    fox0001  
       2020-05-06 00:25:32 +08:00 via Android
    @tinkerer #39 我也习惯用 tsocks
    gleport
        53
    gleport  
       2020-05-06 09:04:42 +08:00
    浏览了上面的回复,发现不少人对设置代理这方面存在误解。比如:
    设置环境变量 http_proxy=socks5:********。有人提到需要配置 HTTP 协议的而不是 sock5,其实这完全取决于要运行的这个程序认不认,很多软件是支持这种方式的。https://twitter.com/chenshaoju/status/1181780020345233408 这里也提到了。设置环境变量的方法是把选择权完全交给要运行的程序,具有一定局限性。程序读取什么名字的环境变量,怎么转换就是它自己的事情了,有些程序是不支持的。
    zerow0w
        54
    zerow0w  
       2020-05-06 16:10:27 +08:00
    总结下上面提到的:

    1. 如果程序支持代理,最简单的是设置环境变量比如 all_proxy, http_proxy
    2. 如果程序不支持环境变量设置代理,或者不知道它读的是哪个变量,支持哪个协议,用 proxhchains,通过劫持 libc API 实现,只支持 TCP
    3. 如果上面都不行,最后还有 mellow,通过 TUN/TAP 来实现,基本上可以强制代理所有的程序
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5725 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 01:36 PVG 09:36 LAX 18:36 JFK 21:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86