Skip to content

使用Docker配置透明代理 (Transparent Proxy)

Liang Yi edited this page Jul 22, 2020 · 1 revision

Intro

要配置一个完整的透明代理,我们需要配置如下三个内容

  • Route Rule,用于指示旁路网关接收到的流量应该转发到何处
  • Proxy,用于将流量转发到远端服务器
  • DNS,用于抗DNS污染

Route Rule

在这篇Wiki中我将使用 TProxy 这个 Docker Image 作为转发规则

  TProxy:
    image: ly0007/tproxy:latest
    cap_add:
      - NET_ADMIN
    network_mode: "host"
    volumes:
      - /etc/tproxy:/config
    environment:
      - ENABLE_MINI_MODE=1
      - ENABLE_OUTPUT_REROUTE=0

使用以上配置来建立一个转发器,以下为环境变量的解释

  1. REDIR_PORT 设置最终转发到的端口,默认为 10800
  2. SERVER_PORT 设置放行端口,默认为 10863 (当关闭 ENABLE_OUTPUT_REROUTE 时不需要设置此参数)
  3. ENABLE_MINI_MODE 启用这个设置来关闭自动下载 CN GEOIP 的功能,此时会将所有流量转发至 REDIR_PORT
  4. ENABLE_OUTPUT_REROUTE 启用这个配置来转发本机流量,请注意配置 SERVER_PORT 防止回环

Proxy & DNS

此 Wiki 推荐使用 Clash 同时完成 Proxy 和 DNS 的功能

  Clash:
    image: dreamacro/clash-premium:latest
    network_mode: "host"
    restart: unless-stopped
    volumes:
      - /etc/tproxy/clash:/root/.config/clash/

使用以上配置来启用 Clash,Clash 的示例配置如下

redir-port: 10800
allow-lan: true
mode: rule
log-level: error
dns:
  enable: true
  ipv6: false
  listen: ':53'
  default-nameserver:
    - 114.114.114.114
  enhanced-mode: redir-host
  nameserver:
    - tls://dos.pub
    - tls://dns.alidns.com
  fallback:
    - tls://dns.google
  fallback-filter:
    geoip: true
    ipcidr:
      - 240.0.0.0/4
hosts:
  # Fill Google IP here
  # '+.google.cn': 127.0.0.1
proxy-providers:
  # Your Proxy Providers
rule-providers:
  Local_Net:
    type: http
    behavior: classical
    path: ./rules/local.yaml
    url: http://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Providers/LocalAreaNetwork.yaml
    interval: 43200
  Apple_China:
    type: http
    behavior: classical
    path: ./rules/AppleCN.yaml
    url: http://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Providers/Ruleset/Apple.yaml
    interval: 43200
  Google_China:
    type: http
    behavior: classical
    path: ./rules/GoogleCN.yaml
    url: http://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/Providers/Ruleset/GoogleCN.yaml
    interval: 43200
rules:
  - RULE-SET,Local_Net,DIRECT
  - RULE-SET,Apple_China,DIRECT
  - RULE-SET,Google_China,DIRECT
  - DOMAIN-SUFFIX,.cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,auto

在这个配置中我启用了 Clash 的转发和 DNS 功能,请注意在 Docker 中将网段设置为 host 或手动转发相应的 redir-port 和 53 端口

请确保 Clash 中的 redir-port 和 TProxy 中的 REDIR_PORT 配置完全相同

收尾

完整的 Docker-Compose 如下

version: '2' 
services: 
  Clash:
    image: dreamacro/clash-premium:latest
    network_mode: "host"
    restart: unless-stopped
    volumes:
      - /etc/tproxy/clash:/root/.config/clash/
  TProxy:
    image: ly0007/tproxy:latest
    cap_add:
      - NET_ADMIN
    network_mode: "host"
    volumes:
      - /etc/tproxy:/config
    environment:
      - ENABLE_MINI_MODE=1
      - ENABLE_OUTPUT_REROUTE=0
Clone this wiki locally