Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于端口 反向代理内网穿透 问题 #1839

Closed
onlineyh opened this issue Aug 9, 2019 · 13 comments
Closed

关于端口 反向代理内网穿透 问题 #1839

onlineyh opened this issue Aug 9, 2019 · 13 comments
Labels

Comments

@onlineyh
Copy link

onlineyh commented Aug 9, 2019

提交 Issue 之前请先阅读 Issue 指引,然后回答下面的问题,谢谢。
除非特殊情况,请完整填写所有问题。不按模板发的 issue 将直接被关闭。
如果你遇到的问题不是 V2Ray 的 bug,比如你不清楚要如何配置,请使用Discussion进行讨论。

  1. 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明)
    根据https://toutyrater.github.io/app/reverse.html配置
    A 端: 使用docker镜像 v2ray/official
    docker run -d --name v2ray3 -v /test3:/etc/v2ray v2ray/official v2ray -config=/etc/v2ray/config.json
    B端:使用 V2Ray 4.19.1 centos7.6

  2. 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。
    使用反向代理映射端口

  3. 你看到的不正常的现象是什么?(请描述具体现象,比如访问超时,TLS 证书错误等)
    我现在连接端口222不正常 无法登陆
    想着是不是登陆222端口到docker内部端口 没有到宿主机端口
    我给如何改善 docker 端口 要映射端口
    docker run -d --name v2ray3 -v /test3:/etc/v2ray v2ray/official v2ray -config=/etc/v2ray/config.json
    这个A端 要如何映射?

  4. 你期待看到的正确表现是怎样的?

  5. 请附上你的配置(提交 Issue 前请隐藏服务器端IP地址)。

服务器端配置: B端

    {  
"log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "warning"
    },
  "reverse":{
    "portals":[  
      {  
        "tag":"portal",
        "domain":"yun.cloud.com"
      }
    ]
  },
  "inbounds": [
    {  
      "tag":"external",
      "port":222,
      "protocol":"dokodemo-door",
        "settings":{  
          "address":"127.0.0.1",
          "port":22,
          "network":"tcp"
        }
    },
    {  
      "tag": "tunnel",
      "port":18629,
      "protocol":"vmess",
      "settings":{  
        "clients":[  
          {  
            "id":"cd070e27-1b59-4df2-993a-1179288271fe",
            "alterId":64
          }
        ]
      }
    }
  ],
  "routing":{  
    "rules":[  
      {
        "type":"field",
        "inboundTag":[  
          "external"
        ],
        "outboundTag":"portal"
      },
      {
        "type":"field",
        "inboundTag":[  
          "tunnel"
        ],
        "domain":[  
          "full:yun.cloud.com"
        ],
        "outboundTag":"portal"
      }
    ]
  }
}

客户端配置: A端

    {  
  "reverse":{ 
    "bridges":[  
      {  
        "tag":"bridge",
        "domain":"yun.cloud.com"
      }
    ]
  },
  "outbounds": [
    {   
      "tag":"tunnel",
      "protocol":"vmess",
      "settings":{  
        "vnext":[  
          {  
            "address":"B端外网ip地址",
            "port":16823,
            "users":[  
              {  
                "id":"b831381d-6324-4d53-ad4f-8cda48b30811",
                "alterId":64
              }
            ]
          }
        ]
      }
    },  
    {  
      "protocol":"freedom",
      "settings":{  
      },
      "tag":"out"
    }    
  ],
  "routing":{   
    "rules":[  
      {  
        "type":"field",
        "inboundTag":[  
          "bridge"
        ],
        "domain":[  
          "full:yun.cloud.com"
        ],
        "outboundTag":"tunnel"
      },
      {  
        "type":"field",
        "inboundTag":[  
          "bridge"
        ],
        "outboundTag":"out"
      }
    ]
  }
}
  1. 请附上出错时软件输出的错误日志。在 Linux 中,日志通常在 /var/log/v2ray/error.log 文件中。

服务器端错误日志:

    // 在这里附上服务器端日志

客户端错误日志:

    // 在这里附上客户端日志
  1. 请附上访问日志。在 Linux 中,日志通常在 /var/log/v2ray/access.log 文件中。
    2019/08/09 14:19:55 xx.xx.xx.xx:46524 accepted tcp:yun.cloud.com:0
  1. 其它相关的配置文件(如 Nginx)和相关日志。

  2. 如果 V2Ray 无法启动,请附上 --test 输出。

通常的命令为 /usr/bin/v2ray/v2ray --test --config /etc/v2ray/config.json。请按实际情况修改。

  1. 如果 V2Ray 服务运行不正常,请附上 journal 日志。

通常的命令为 journalctl -u v2ray

请预览一下你填的内容再提交。

@kingwilliam
Copy link

您的"客户端配置: A端"有 192.168.x.x 吗? 可否在"服务器端配置: B端"的127.0.0.1改成192.168.x.x

@onlineyh
Copy link
Author

您好 根据你的提示将127.0.0.1 换成192.168.123.31 发现也不行
我访问 192.168.123.31:81
但是我访问 XX.XX.XX.XX:10629还是不行

{  
"log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "warning"
    },
  "reverse":{
    "portals":[  
      {  
        "tag":"portal",
        "domain":"yun.cloud.com"
      }
    ]
  },
  "inbounds": [
    {  
      "tag":"external",
      "port":10629,
      "protocol":"dokodemo-door",
        "settings":{  
          "address":"192.168.123.31",
          "port":81,
          "network":"tcp"
        }
    },
    {  
      "tag": "tunnel",
      "port":18629,
      "protocol":"vmess",
      "settings":{  
        "clients":[  
          {  
            "id":"cd070e27-1b59-4df2-993a-1179288271fe",
            "alterId":64
          }
        ]
      }
    }
  ],
  "routing":{  
    "rules":[  
      {
        "type":"field",
        "inboundTag":[  
          "external"
        ],
        "outboundTag":"portal"
      },
      {
        "type":"field",
        "inboundTag":[  
          "tunnel"
        ],
        "domain":[  
          "full:yun.cloud.com"
        ],
        "outboundTag":"portal"
      }
    ]
  }
}

@peter-tank
Copy link

貌似 2 配置里 tag 为 tunnel 的 userid 并不吻合。 如果只是反代本机 127.0.0.1 ,完全可以1个json写完,并且可以重用 external 为 tunnel 。 https://guide.v2fly.org/app/reverse2.html#b-%E7%9A%84%E9%85%8D%E7%BD%AE

Tips: 在 B 的配置中,可以使用同一个 VMess inbound 来接受 A 和 C 的请求来简化配置。

@onlineyh
Copy link
Author

您好 我目前的目的是映射端口供外网用户连接使用 基于 https://guide.v2fly.org/app/reverse.html#%E5%8E%9F%E7%90%86 至于反向代理2 我测试是成功的
如何将反向代理的端口映射做成功?我重新按照介绍做下 还是失败
下面是配置 A端在docker运行 B端是物理机运行
A端

    {  
  "reverse":{ 
    "bridges":[  
      {  
        "tag":"bridge",
        "domain":"private.cloud.com"
      }
    ]
  },
  "outbounds": [
    {  
      "tag":"tunnel",
      "protocol":"vmess",
      "settings":{  
        "vnext":[  
          {  
            "address":"B端外网ip",
            "port":18629,
            "users":[  
              {  
                "id":"b831381d-6324-4d53-ad4f-8cda48b30811",
                "alterId":64
              }
            ]
          }
        ]
      }
    },  
    {  
      "protocol":"freedom",
      "settings":{  
      },
      "tag":"out"
    }    
  ],
  "routing":{   
    "rules":[  
      {  
        "type":"field",
        "inboundTag":[  
          "bridge"
        ],
        "domain":[  
          "full:private.cloud.com"
        ],
        "outboundTag":"tunnel"
      },
      {  
        "type":"field",
        "inboundTag":[  
          "bridge"
        ],
        "outboundTag":"out"
      }
    ]
  }
}

B端

{  "log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "warning"
    },

  "reverse":{
    "portals":[  
      {  
        "tag":"portal",
        "domain":"private.cloud.com"
      }
    ]
  },
  "inbounds": [
    { 
      "tag":"external",
      "port":10629,
      "protocol":"dokodemo-door",
        "settings":{  
          "address":"127.0.0.1",
          "port":81,
          "network":"tcp"
        }
    }, 
    {  
      "tag": "tunnel",
      "port":18629,
      "protocol":"vmess",
      "settings":{  
        "clients":[  
          {  
            "id":"b831381d-6324-4d53-ad4f-8cda48b30811",
            "alterId":64
          }
        ]
      }
    }
  ],
  "routing":{  
    "rules":[  
      {
        "type":"field",
        "inboundTag":[  
          "external"
        ],
        "outboundTag":"portal"
      },
      {
        "type":"field",
        "inboundTag":[  
          "tunnel"
        ],
        "domain":[  
          "full:private.cloud.com"
        ],
        "outboundTag":"portal"
      }
    ]
  }
}

日志
2019/08/13 14:05:19 B端外网ip:40498 accepted tcp:private.cloud.com:0

@hardass
Copy link

hardass commented Aug 15, 2019

@onlineyh 我也遇到了同样的问题,反向代理1的将端口转发的方案不成功,我是用于访问内网机器的SSH时失败。关注你的问题。

@peter-tank
Copy link

peter-tank commented Aug 15, 2019

@onlineyh 撇开所有这些,应该给出你的B端 XX.XX.XX.XX:10629 这些端口确实是能正常通过的证据。(比如把 127.0.0.1 设置成 www.bing.com ,更直接地只作正常的转发:在B端 rules 里断掉反代,步子不要一下就跨那么大)
我直接上的反代2,并没发现有问题,除非 dokodemo-door 不过 rules。

虽然没用过,感觉更像是 docker 的配置问题

@onlineyh
Copy link
Author

同样的配置不使用docker测试可以正常连接,但是因为A端跑了很多V2RAY(有反向代理,透明代理),必须使用docker 能完美的隔开。我不知道我使用docker 错在哪? 如何改善?

@peter-tank
Copy link

peter-tank commented Aug 16, 2019

@onlineyh 你没看我发的链接? 甚至于有人为此专门搞了个 iptables 的转发:

https://github.com/qoomon/docker-host/blob/995850964d9906aad7a5391489ca64b0b6ca9e7f/entrypoint.sh#L10

你也可以先试试 host.docker.internal (如果只是转发到 host 的端口)看会不会正常(看你 host OS 吧),好像有其他人反映,关掉 docker 的 custom DNS 才有效。 docker/for-linux#264

@onlineyh
Copy link
Author

根据你的提示 可以了 需要将docker模式给出host
docker run -d --name v2ray3 --net=host -v /test3:/etc/v2ray v2ray/official v2ray -config=/etc/v2ray/config.json
在请问下 这种对udp协议支持效果好吗 ?如果我想映射多个端口配置如何修改?

@peter-tank
Copy link

@onlineyh 只是加端口,应当只需要加多几个 dokodemo-door 而已(注意 tcp/udp)。

@onlineyh
Copy link
Author

下面B端配置不知道错在哪?我重启V2ray后他只是监听下面一个端口9195/udp,不监听10629/tcp

{
  "log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "warning"
    },

  "reverse":{
    "portals":[  
      {  
        "tag":"portal",
        "domain":"private.cloud.com"
      }
    ]
  },
  "inbounds": [
    { 
      "tag":"external",
      "port":10629,
      "protocol":"dokodemo-door",
        "settings":{  
          "address":"127.0.0.1",
          "port":22,
          "network":"tcp"
        }
    }, 
    { 
      "tag":"external",
      "port":9195,
      "protocol":"dokodemo-door",
        "settings":{  
          "address":"127.0.0.1",
          "port":9195,
          "network":"udp"
        }
    }, 
    {  
      "tag": "tunnel",
      "port":18629,
      "protocol":"vmess",
      "settings":{  
        "clients":[  
          {  
            "id":"b831381d-6324-4d53-ad4f-8cda48b30811",
            "alterId":64
          }
        ]
      }
    }
  ],
  "routing":{  
    "rules":[  
      {
        "type":"field",
        "inboundTag":[  
          "external"
        ],
        "outboundTag":"portal"
      },
      {
        "type":"field",
        "inboundTag":[  
          "tunnel"
        ],
        "domain":[  
          "full:private.cloud.com"
        ],
        "outboundTag":"portal"
      }
    ]
  }
}

@peter-tank
Copy link

peter-tank commented Aug 16, 2019

@onlineyh tag 重复居然不是报错?
你应该关了这个 issue,讲真没人愿意这样手把手来教。

{
        "type":"field",
        "inboundTag":[  
          "external1", "external2"
        ],
        "outboundTag":"portal"
},

@github-actions
Copy link

This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants