Dokodemo-door

English German Russian

Dokodemo door(任意门)是一个传入数据协议,它可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。

  • 名称:dokodemo-door
  • 类型:Inbound
  • 配置:
  1. {
  2. "address": "8.8.8.8",
  3. "port": 53,
  4. "network": "tcp",
  5. "timeout": 0,
  6. "followRedirect": false,
  7. "userLevel": 0
  8. }

其中:

  • address: 指定服务器的地址,可以是一个 IPv4、IPv6 或者域名,字符串类型。
    • followRedirect(见下文)为 true 时,address 可为空。
  • port: 指定服务器的端口,数值类型。
  • network: 指定服务器的网络协议类型,可选值为“tcp”或“udp”。
  • timeout (V2Ray 3.1 后等价于对应用户等级的 connIdle 策略): 传入数据的时间限制(秒),默认值为 300。
  • followRedirect: 当值为 true 时,dokodemo-door 会识别出由 iptables 转发而来的数据,并转发到相应的目标地址。
    • 目前只支持 Linux。
    • 支持 TCP/IPv4 连接。
    • 支持 UDP/IPv4 连接,需要 root (CAP_NET_ADMIN) 权限。
  • userLevel: 用户等级,所有连接都会使用这个用户等级。

透明代理配置样例 {#example}

V2Ray 中增加一个 dokodemo-door 的传入协议:

  1. {
  2. "network": "tcp,udp",
  3. "timeout": 30,
  4. "followRedirect": true
  5. }

配置 iptables:

  1. # Create new chain
  2. root@Wrt:~# iptables -t nat -N V2RAY
  3. root@Wrt:~# iptables -t mangle -N V2RAY
  4. root@Wrt:~# iptables -t mangle -N V2RAY_MARK
  5. # Ignore your V2Ray server's addresses
  6. # It's very IMPORTANT, just be careful.
  7. root@Wrt:~# iptables -t nat -A V2RAY -d 123.123.123.123 -j RETURN
  8. # Ignore LANs and any other addresses you'd like to bypass the proxy
  9. # See Wikipedia and RFC5735 for full list of reserved networks.
  10. root@Wrt:~# iptables -t nat -A V2RAY -d 0.0.0.0/8 -j RETURN
  11. root@Wrt:~# iptables -t nat -A V2RAY -d 10.0.0.0/8 -j RETURN
  12. root@Wrt:~# iptables -t nat -A V2RAY -d 127.0.0.0/8 -j RETURN
  13. root@Wrt:~# iptables -t nat -A V2RAY -d 169.254.0.0/16 -j RETURN
  14. root@Wrt:~# iptables -t nat -A V2RAY -d 172.16.0.0/12 -j RETURN
  15. root@Wrt:~# iptables -t nat -A V2RAY -d 192.168.0.0/16 -j RETURN
  16. root@Wrt:~# iptables -t nat -A V2RAY -d 224.0.0.0/4 -j RETURN
  17. root@Wrt:~# iptables -t nat -A V2RAY -d 240.0.0.0/4 -j RETURN
  18. # Anything else should be redirected to Dokodemo-door's local port
  19. root@Wrt:~# iptables -t nat -A V2RAY -p tcp -j REDIRECT --to-ports 12345
  20. # Add any UDP rules
  21. root@Wrt:~# ip route add local default dev lo table 100
  22. root@Wrt:~# ip rule add fwmark 1 lookup 100
  23. root@Wrt:~# iptables -t mangle -A V2RAY -p udp --dport 53 -j TPROXY --on-port 12345 --tproxy-mark 0x01/0x01
  24. root@Wrt:~# iptables -t mangle -A V2RAY_MARK -p udp --dport 53 -j MARK --set-mark 1
  25. # Apply the rules
  26. root@Wrt:~# iptables -t nat -A OUTPUT -p tcp -j V2RAY
  27. root@Wrt:~# iptables -t mangle -A PREROUTING -j V2RAY
  28. root@Wrt:~# iptables -t mangle -A OUTPUT -j V2RAY_MARK