Proxy Docker redsocks代理位于HTTP代理之后,没有internet DNS 网络环境 没有可用的internet DNS 允许在端口3128上进行HTTP和HTTPS通信的公司squid代理 Docker环境

Proxy Docker redsocks代理位于HTTP代理之后,没有internet DNS 网络环境 没有可用的internet DNS 允许在端口3128上进行HTTP和HTTPS通信的公司squid代理 Docker环境,proxy,docker,iptables,Proxy,Docker,Iptables,Docker正在OS X上的VirtualBox中运行Ubuntu15.04 guest 在主机的网络基础结构上运行的容器docker forgetproxy()运行时: $ docker run -it --rm --net=host --privileged \ -e http_proxy=$http_proxy \ -e https_proxy=$https_proxy \ klabs/d

Docker正在OS X上的VirtualBox中运行Ubuntu15.04 guest

在主机的网络基础结构上运行的容器
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上的数据包,会发现来自apt get容器的archive.ubuntu.com的DNS解析试图转到我的域DNS服务器(无法执行internet查找)如果我将DNS服务器设置为
docker0
的DNS服务器,那么它似乎被172.16.0.0/12 iptables规则捕获,因为今天它是172.17.42.1

这适用于Ubuntu Xenial主机

在主机上的“连接信息”下,获取您当前的DNS地址;在我的例子中,
172.21.17.212
172.21.17.210

/etc/default/docker
下,在
docker\u 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
然后:


这适用于Ubuntu Xenial主机

在主机上的“连接信息”下,获取您当前的DNS地址;在我的例子中,
172.21.17.212
172.21.17.210

/etc/default/docker
下,在
docker\u 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
然后:

更多信息请访问github页面更多信息请访问github页面