1and0
V2EX  ›  Ubuntu

ubuntu 有办法让终端走 proxy 吗?

  •  
  •   1and0 · May 5, 2020 · 6525 views
    This topic created in 2373 days ago, the information mentioned may be changed or developed.
    ubuntu 设置了系统级的 proxy,但是自带终端不走,添加了 export http_proxy=socks5:********后,能从 google 下载 gpg 了,不过 k8s 的镜像拉不下来。

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

    基于 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
    lionseun
    May 5, 2020 via Android
    10
    不同工具代理方式不一样,9 楼正解
    isir1234
    isir1234
    May 5, 2020
    11
    我是拉的阿里云镜像然后打官方镜像的 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
    shenfu1991
    May 5, 2020 via iPhone
    12
    有,看我之前帖子
    shenfu1991
    shenfu1991
    May 5, 2020 via iPhone❤️1
    13
    @shenfu1991 #12 错了,不是帖子,之前有人问过一样的问题,搜索一下
    huazhuhotels
    huazhuhotels
    May 5, 2020
    14
    privoxy

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

    https://github.com/rofl0r/proxychains-ng
    huobazi
    huobazi
    May 5, 2020
    28
    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
    polaa
    May 5, 2020
    29
    @ysc3839 ...好吧 之前 socks5 都是走 all_proxy 的
    HytonightYX
    HytonightYX
    May 5, 2020❤️1
    30
    写入 bashrc 或者 zshrc

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

    随后需要代理敲 setproxy,关闭就 unsetproxy
    itgoyo
    itgoyo
    May 5, 2020
    31
    proxychains
    wdlth
    wdlth
    May 5, 2020
    32
    docker 是以服务形式运行的,要在 systemd 的配置加 Environment 设置环境变量。
    gleport
    gleport
    May 5, 2020
    33
    proxychains 对 Go 编译出来的无效。docker 可以参考 https://github.com/hmgle/graftcp/issues/14
    ronman
    ronman
    May 5, 2020 via Android
    34
    @polaa ???本来不就是这样设置吗
    polaa
    polaa
    May 5, 2020
    35
    @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
    ronman
    May 5, 2020 via Android
    36
    @polaa 是这样的,相当于把终端的 http 通过本机的 socks 来代理,后面可以是多种协议,只要你本地有
    toptyloo
    toptyloo
    May 5, 2020
    37
    安利 Graftcp
    DefoliationM
    DefoliationM
    May 5, 2020
    38
    http proxy 你搞个 socks5 协议都对不上
    tinkerer
    tinkerer
    May 5, 2020 via Android
    39
    tsocks
    lixingcong
    lixingcong
    May 5, 2020
    41
    ss-redir+iptables+chinaroute
    love
    love
    May 5, 2020
    42
    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
    my3157
    May 5, 2020
    43
    $ 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
    charlie21
    May 5, 2020
    44
    关键词 网络流量转发 终端
    illusionist
    illusionist
    May 5, 2020 via iPhone
    45
    13 楼的就可以了,我自己用的就是这个,包括拖 Android AOSP 两百多 G 的 mirror 镜像代码,都是 OK 的。
    wangbenjun5
    wangbenjun5
    May 5, 2020
    46
    其实很多人说的已经很明白了,在 Linux 下不是所有应用都走系统代理的,其实 Windows 也一样,比如 chrome 默认是走系统代理,但是 Firefox 则需要单独设置,具体问题具体分析,docker 这种复杂应用,必然也是有自己单独的配置选项
    darknoll
    darknoll
    May 5, 2020 via Android
    47
    是 all_proxy
    feelinglucky
    feelinglucky
    May 5, 2020
    48
    关于 K8s 拉不下来的话,可以参考我前几天整理的 Guide

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

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

    1. 如果程序支持代理,最简单的是设置环境变量比如 all_proxy, http_proxy
    2. 如果程序不支持环境变量设置代理,或者不知道它读的是哪个变量,支持哪个协议,用 proxhchains,通过劫持 libc API 实现,只支持 TCP
    3. 如果上面都不行,最后还有 mellow,通过 TUN/TAP 来实现,基本上可以强制代理所有的程序
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1508 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 146ms · UTC 23:01 · PVG 07:01 · LAX 15:01 · JFK 18:01
    ♥ Do have faith in what you're doing.