gpt4 book ai didi

proxy - Docker在没有Internet DNS的HTTP代理后面重新代理代理

转载 作者:行者123 更新时间:2023-12-02 20:26:08 28 4
gpt4 key购买 nike

网络环境

  • 没有可用的互联网DNS
  • 企业鱿鱼代理,允许在端口3128上进行HTTP和HTTPS流量

  • Docker环境

    Docker在OS X的VirtualBox内的Ubuntu 15.04客户机上运行。

    在主机的网络基础结构之上运行 docker-forgetproxy的容器 redsocks( https://github.com/k-labs/docker-forgetproxy),运行:
    $ docker run -it --rm --net=host --privileged \
    -e http_proxy=$http_proxy \
    -e https_proxy=$https_proxy \
    klabs/docker-forgetproxy

    通过发出以下命令来修改主机的iptables规则,其中 $1设置为 A:
    iptables -t nat -$1 PREROUTING -i docker0 -d 127.0.0.0/8 -j RETURN
    iptables -t nat -$1 PREROUTING -i docker0 -d 169.254.0.0/16 -j RETURN
    iptables -t nat -$1 PREROUTING -i docker0 -d 172.16.0.0/12 -j RETURN
    iptables -t nat -$1 PREROUTING -i docker0 -d 192.168.0.0/16 -j RETURN
    iptables -t nat -$1 PREROUTING -i docker0 -d 224.0.0.0/4 -j RETURN
    iptables -t nat -$1 PREROUTING -i docker0 -d 240.0.0.0/4 -j RETURN

    iptables -t nat -$1 PREROUTING -p tcp --dport 80 -i docker0 -j REDIRECT --to 12345 2>/dev/null
    iptables -t nat -$1 PREROUTING -p tcp --dport 8080 -i docker0 -j REDIRECT --to 12345 2>/dev/null
    iptables -t nat -$1 PREROUTING -p tcp --dport 53 -i docker0 -j REDIRECT --to 5300
    iptables -t nat -$1 PREROUTING -p tcp -i docker0 -j REDIRECT --to 12346

    并启动 redsocks
    base {
    log_debug = off;
    log_info = on;
    log = "stderr";
    daemon = off;
    user = redsocks;
    group = redsocks;
    redirector = iptables;
    }

    redsocks {
    type = http-relay;
    ip = http://my-proxy;
    port = 3128;
    local_ip = 0.0.0.0;
    local_port = 12345;
    }

    redsocks {
    type = http-connect;
    ip = http://my-proxy;
    port = 3128;
    local_ip = 0.0.0.0;
    local_port = 12346;
    }

    dnstc {
    local_ip = 127.0.0.1;
    local_port = 5300;
    }

    问题

    当我使用 docker run -it --rm ubuntu apt-get update启动一个新的docker容器时,似乎该容器的请求没有被重新路由到 redsocks容器。

    观察wireshark上的数据包,如果我将DNS服务器设置为 apt-get iface的DNS服务器,则 docker0容器中的archive.ubuntu.com的DNS解析会尝试转到我的域DNS服务器(无法执行Internet查找)似乎它已被172.16.0.0/12 iptables规则捕获,因为今天是172.17.42.1

    最佳答案

    这适用于 Ubuntu Xenial 主机。

    在主机上的“连接信息”下,获取当前的DNS地址;就我而言,是172.21.17.212172.21.17.210

    /etc/default/docker下,在DOCKER_OPTS上添加DNS地址:

    DOCKER_OPTS="--dns 172.21.17.212 --dns 172.21.17.210"

    使用以下命令创建 /etc/systemd/system/docker.service.d/ubuntu.conf:
    [Service]
    EnvironmentFile=/etc/default/docker
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

    然后:
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    关于proxy - Docker在没有Internet DNS的HTTP代理后面重新代理代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32953878/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com