v2fly / v2ray-step-by-step

This repo is a fork of ToutyRater/v2ray-guide, we aim to provide a new step-by-step guide of v2ray
https://guide.v2fly.org
Creative Commons Attribution 4.0 International
765 stars 431 forks source link

请问dokodemo-door协议的setting项是否一定要写端口? #122

Closed vainquit closed 4 years ago

vainquit commented 4 years ago

请问dokodemo协议的setting是否一定要写端口?

我在看透明代理(tproxy)的教程时有一些疑惑,因为看到了inbound里用到了dokodemo协议,但setting里并没有写要转发到哪个端口

  "inbounds": [
    {
      "tag":"transparent",
      "port": 12345,
      "protocol": "dokodemo-door",
      "settings": {
        "network": "tcp,udp",
        "followRedirect": true
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls"
        ]
      },
      "streamSettings": {
        "sockopt": {
          "tproxy": "tproxy" // 透明代理使用 TPROXY 方式
        }
      }
    },
    {
      "port": 1080, 
      "protocol": "socks", // 入口协议为 SOCKS 5
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth"
      }
    }
  ]

可是我在看v2ray手册时,对于dokodemo-door协议的介绍中,port好像是一定要填写的

port: number 

将流量转发到目标地址的指定端口,范围[1, 65535],数值类型。必填参数。

所以我这就有点懵逼了。。。不好意思,刚入门不久,不太清楚。。。

kslr commented 4 years ago

同级设置

vainquit commented 4 years ago

同级设置

好快-o-! 才刚编辑完。。。 请问同级设置是什么意思呢?按照我的理解,dokodemo是个端口转发,那么它会接受12345端口的流量,然后转发到另外一个端口的流量,可这里没写另外一个端口的流量,那最后流量是到了哪里去了?

kslr commented 4 years ago

这里面的ip和port都是目标,那么数据从哪里来呢? 看这里 https://www.v2ray.com/chapter_02/05_transport.html 的 tproxy

vainquit commented 4 years ago

这里面的ip和port都是目标,那么数据从哪里来呢? 看这里 https://www.v2ray.com/chapter_02/05_transport.html 的 tproxy

额,tproxy的文档的介绍太过简洁,感觉无比深奥。。。不过我又仔细查看了一下透明代理的iptable设置部分,好像明白了一点。。在iptables中有这么2个设置是和12345端口相关的:

iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1 # 给 UDP 打标记 1,转发至 12345 端口
iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1 # 给 TCP 打标记 1,转发至 12345 端口

也就是说,最先监测到流量的是iptables,它将流量打上标记后转发到12345端口(类似于switchyOmega的那种?)。于是在v2ray的inbound设置中收到了12345端口的流量,于是其标签“transparent”就匹配routing的inboundTag

   { // 劫持 53 端口 UDP 流量,使用 V2Ray 的 DNS
        "type": "field",
        "inboundTag": [
          "transparent"
        ],
        "port": 53,
        "network": "udp",
        "outboundTag": "dns-out" 
      }

最后就按照rule的规则,流量被转发到53号端口、且从tag为"dns-out"的outbound口出去。

但我没搞明白这和socks协议的差别在哪里。。。

kslr commented 4 years ago

看看白话文下面的参考资料

vainquit commented 4 years ago

看看白话文下面的参考资料

好吧,看来还有很多东西要补。谢谢了。

2576168920 commented 7 months ago

这里面的ip和port都是目标,那么数据从哪里来呢? 看这里 https://www.v2ray.com/chapter_02/05_transport.html 的 tproxy

额,tproxy的文档的介绍太过简洁,感觉无比深奥。。。不过我又仔细查看了一下透明代理的iptable设置部分,好像明白了一点。。在iptables中有这么2个设置是和12345端口相关的:

iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1 # 给 UDP 打标记 1,转发至 12345 端口
iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1 # 给 TCP 打标记 1,转发至 12345 端口

也就是说,最先监测到流量的是iptables,它将流量打上标记后转发到12345端口(类似于switchyOmega的那种?)。于是在v2ray的inbound设置中收到了12345端口的流量,于是其标签“transparent”就匹配routing的inboundTag

   { // 劫持 53 端口 UDP 流量,使用 V2Ray 的 DNS
        "type": "field",
        "inboundTag": [
          "transparent"
        ],
        "port": 53,
        "network": "udp",
        "outboundTag": "dns-out" 
      }

最后就按照rule的规则,流量被转发到53号端口、且从tag为"dns-out"的outbound口出去。

但我没搞明白这和socks协议的差别在哪里。。。

搞懂了没,我也有些疑惑,既然只监听了12345端口,那么53端口为何会有数据?