[GH-ISSUE #4471] [Feature Request] locaIP和ServerIP相同如何映射? #3534

Closed
opened 2026-05-05 14:16:15 -06:00 by gitea-mirror · 10 comments
Owner

Originally created by @Mrqqeat on GitHub (Oct 5, 2024).
Original GitHub issue: https://github.com/fatedier/frp/issues/4471

Describe the feature request

serverAddr = "101.42.123.123"
serverPort = 6688

proxies
name = "test-tcp"
type = "tcp"
localIP = "101.42.123.123"
localPort = 3000
remotePort = 3000

我想要此条frpc的配置能够运行。
Q:为什么要localIP和serverIp相同呢?
A:正常来说,是内网部署服务,然后映射到外网访问。但是某些特殊的服务端部署和给客户端访问的是同一个IP。
比如一个游戏服务端,部署服务是从数据库读的一个IP进行部署,而服务端给客户端连接的IP也是这条记录的这个IP。
这就导致部署IP和客户端访问IP是一个IP,所以肯定得用外网IP,不然客户端没办法访问,但是用外网IP那怎么部署呢,只能添加一个虚拟网络修改IP为外网这个IP然后部署到这个IP的网络上,于是就有了内网[101.42.123.123]映射到外网[101.42.123.123]的操作,但是frpc读取这样的配置会报错。有没有解决方法或者其他方案呢。
因为服务端都是编译好的,所以也没办法修改服务端。

Describe alternatives you've considered

No response

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
Originally created by @Mrqqeat on GitHub (Oct 5, 2024). Original GitHub issue: https://github.com/fatedier/frp/issues/4471 ### Describe the feature request serverAddr = "101.42.123.123" serverPort = 6688 [[proxies]] name = "test-tcp" type = "tcp" localIP = "101.42.123.123" localPort = 3000 remotePort = 3000 我想要此条frpc的配置能够运行。 Q:为什么要localIP和serverIp相同呢? A:正常来说,是内网部署服务,然后映射到外网访问。但是某些特殊的服务端部署和给客户端访问的是同一个IP。 比如一个游戏服务端,部署服务是从数据库读的一个IP进行部署,而服务端给客户端连接的IP也是这条记录的这个IP。 这就导致部署IP和客户端访问IP是一个IP,所以肯定得用外网IP,不然客户端没办法访问,但是用外网IP那怎么部署呢,只能添加一个虚拟网络修改IP为外网这个IP然后部署到这个IP的网络上,于是就有了内网[101.42.123.123]映射到外网[101.42.123.123]的操作,但是frpc读取这样的配置会报错。有没有解决方法或者其他方案呢。 因为服务端都是编译好的,所以也没办法修改服务端。 ### Describe alternatives you've considered _No response_ ### Affected area - [ ] Docs - [ ] Installation - [ ] Performance and Scalability - [ ] Security - [ ] User Experience - [ ] Test and Release - [ ] Developer Infrastructure - [ ] Client Plugin - [ ] Server Plugin - [ ] Extensions - [ ] Others
Author
Owner

@horizon86 commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

<!-- gh-comment-id:2395397125 --> @horizon86 commented on GitHub (Oct 6, 2024): 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的
Author
Owner

@Mrqqeat commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。
因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。

后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。
后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

<!-- gh-comment-id:2395401659 --> @Mrqqeat commented on GitHub (Oct 6, 2024): > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。
Author
Owner

@horizon86 commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。

后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?

<!-- gh-comment-id:2395403497 --> @horizon86 commented on GitHub (Oct 6, 2024): > > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 > > 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 > > 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。 既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?
Author
Owner

@Mrqqeat commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。
后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?

不是一个网卡,内网的[101.42.123.123]只是建的一个Microsoft KM-TEST 环回适配器,只是一个虚拟的内网网络,只有本机能访问,但是就是有这么个适配器的存在,所以frpc就没法映射到外网的[101.42.123.123]上面了。

<!-- gh-comment-id:2395422307 --> @Mrqqeat commented on GitHub (Oct 6, 2024): > > > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 > > > > > > 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 > > 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。 > > 既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射? 不是一个网卡,内网的[101.42.123.123]只是建的一个Microsoft KM-TEST 环回适配器,只是一个虚拟的内网网络,只有本机能访问,但是就是有这么个适配器的存在,所以frpc就没法映射到外网的[101.42.123.123]上面了。
Author
Owner

@horizon86 commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。
后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?

是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了

我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器?

但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器?

<!-- gh-comment-id:2395424289 --> @horizon86 commented on GitHub (Oct 6, 2024): > > > > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 > > > > > > > > > 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 > > > 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。 > > > > > > 既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射? > > 是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了 我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器? 但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器?
Author
Owner

@Mrqqeat commented on GitHub (Oct 6, 2024):

只是

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。
后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?

是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了

我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器?

但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器?

你的理解没问题,是我描述的问题,我有个云服务器部署了frps,就是[101.42.123.123]。
然后我自己的电脑架设了游戏服务器,想别人通过我的云服务器链接到我自己的电脑的游戏服务器。

问题就是我自己电脑没办法把内网映射到我的云服务器[101.42.123.123]上面,原因就是因为我自己电脑建的这个TEST环回适配器IP也是[101.42.123.123],就导致frpc识别错误从而不能正常映射。

<!-- gh-comment-id:2395425319 --> @Mrqqeat commented on GitHub (Oct 6, 2024): > 只是 > > > > > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 > > > > > > > > > > > > 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 > > > > 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。 > > > > > > > > > 既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射? > > > > > > 是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了 > > 我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器? > > 但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器? 你的理解没问题,是我描述的问题,我有个云服务器部署了frps,就是[101.42.123.123]。 然后我自己的电脑架设了游戏服务器,想别人通过我的云服务器链接到我自己的电脑的游戏服务器。 问题就是我自己电脑没办法把内网映射到我的云服务器[101.42.123.123]上面,原因就是因为我自己电脑建的这个TEST环回适配器IP也是[101.42.123.123],就导致frpc识别错误从而不能正常映射。
Author
Owner

@Mrqqeat commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。
后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?

是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了

我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器?

但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器?

如果你给自己电脑的网络创建一个适配器,将IPV4地址改成一个云服务器的IP,那frps的serverAddr将不能再使用那个云服务器的IP映射了。就会导致冲突,原因可能是frps把这个适配器和真正的外网IP混淆了。
但是路由器就没这个限制,所以frps如果能解决这个问题或者加个更详细的区分,那自由度应该会更高

<!-- gh-comment-id:2395427312 --> @Mrqqeat commented on GitHub (Oct 6, 2024): > > > > > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 > > > > > > > > > > > > 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 > > > > 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。 > > > > > > > > > 既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射? > > > > > > 是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了 > > 我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器? > > 但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器? 如果你给自己电脑的网络创建一个适配器,将IPV4地址改成一个云服务器的IP,那frps的serverAddr将不能再使用那个云服务器的IP映射了。就会导致冲突,原因可能是frps把这个适配器和真正的外网IP混淆了。 但是路由器就没这个限制,所以frps如果能解决这个问题或者加个更详细的区分,那自由度应该会更高
Author
Owner

@horizon86 commented on GitHub (Oct 6, 2024):

你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的

都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。
后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。

既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射?

是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了

我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器?
但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器?

如果你给自己电脑的网络创建一个适配器,将IPV4地址改成一个云服务器的IP,那frps的serverAddr将不能再使用那个云服务器的IP映射了。就会导致冲突,原因可能是frps把这个适配器和真正的外网IP混淆了。 但是路由器就没这个限制,所以frps如果能解决这个问题或者加个更详细的区分,那自由度应该会更高

所以你的朋友的电脑也弄了一个虚拟网卡,虚拟网卡的IP就是路由器的WAN侧IP?路由器没这个问题是因为路由器和你朋友的电脑可以主动通信,并且用的是内网IP(192.168.x.x)。这么看起来,游戏服务器是listen了0.0.0.0,那我猜测可以这么实现:

你在windows(先假定你用了windows)里面把101.42.123.123的路由规则删了(理论上应该有一条网关是在链路上,网络目标是101.42.123.123的路由规则),然后frp的localIP就写127.0.0.1或者是你的192.168.x.x,localPort就是游戏的port,serverIP就写正常的[101.42.123.123]
比如我的电脑路由表有一条这个:route print -4

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
192.168.255.228  255.255.255.255            在链路上   192.168.255.228    291

你应该找到类似:

101.42.123.123  255.255.255.255            在链路上   101.42.123.123    291

然后删除这条路由规则

P.S. 路由器可以用的根本原因在于路由器可以主动使用内网IP访问你的电脑,但是云服务器不可以,如果让frp支持的话,需要frp手动去绕开路由规则,而考虑到frp本身“跨平台”的设计思想,大概不会做和操作系统深度绑定的这么hack的操作,当然支持肯定更好。

<!-- gh-comment-id:2395434854 --> @horizon86 commented on GitHub (Oct 6, 2024): > > > > > > 你这个操作就很离奇,你是两个IP不在一个机器上?路由规则是分不清外网[101.42.123.123]和内网[101.42.123.123]的,你两个IP一样,当你访问101.42.123.123时,具体访问哪个就看你路由规则是怎么写的 > > > > > > > > > > > > > > > 都在一个机器上,emmmm但是如果frpc分不清外网[101.42.123.123]和内网[101.42.123.123]就没办法了。 因为服务端只能部署在[101.42.123.123]这个内网,不能部署在[192.168.xx.xx]这种内网上,原因就是给客户端的就是部署的IP,如果部署到192.168.xx.xx,那给客户端的IP也是192.168.xx.xx,客户端肯定连不上,所以给客户端的必须是外网,所以就得建个和外网IP一样的内网来进行部署到这个网络下。只能怪这个服务端神奇了 ,明明映射就可以解决非要这么部署emmm而且部署和客户端还用的同一IP。 > > > > > 后面发来不用非要映射内网的[101.42.123.123],映射内网的[192.168.xx.xx]也可以,但是如果建立了内网[101.42.123.123],那么就没办法把[101.42.123.123]作为serverAddr了,希望frpc还是能解决一下这个问题。 后面临时的解决方法是有个朋友有公网,部署到朋友电脑上,用他的路由器映射出去了,路由器没这个限制。 > > > > > > > > > > > > 既然在一个机器上,内网[101.42.123.123]和外网[101.42.123.123]是一张网卡的IP吗?那为什么还需要映射? > > > > > > > > > 是一个网卡,但是内网的[101.42.123.123]这个不是外网啊,只是建的一个内网网络,只有自己能访问,其他人访问不了 > > > > > > 我觉的你还是没描述清楚,所以你并没有一个可以被外网访问的[101.42.123.123]?我本来的理解是,你有一台公网的机器A,IP是[101.42.123.123],是可以被外网访问的,然后你在局域网中也设置了一个IP是[101.42.123.123]的机器B,用来部署游戏服务器。你希望访问公网机器A可以访问到你的游戏服务器? > > 但是看你之前的描述,你的公网服务器和内网机器是一台;而看你现在的描述,你并没有任何可以公网访问的机器? > > 如果你给自己电脑的网络创建一个适配器,将IPV4地址改成一个云服务器的IP,那frps的serverAddr将不能再使用那个云服务器的IP映射了。就会导致冲突,原因可能是frps把这个适配器和真正的外网IP混淆了。 但是路由器就没这个限制,所以frps如果能解决这个问题或者加个更详细的区分,那自由度应该会更高 所以你的朋友的电脑也弄了一个虚拟网卡,虚拟网卡的IP就是路由器的WAN侧IP?路由器没这个问题是因为路由器和你朋友的电脑可以主动通信,并且用的是内网IP(192.168.x.x)。这么看起来,游戏服务器是listen了0.0.0.0,那我猜测可以这么实现: 你在windows(先假定你用了windows)里面把101.42.123.123的路由规则删了(理论上应该有一条网关是`在链路上`,网络目标是`101.42.123.123`的路由规则),然后frp的localIP就写127.0.0.1或者是你的192.168.x.x,localPort就是游戏的port,serverIP就写正常的[101.42.123.123] 比如我的电脑路由表有一条这个:route print -4 ``` IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 192.168.255.228 255.255.255.255 在链路上 192.168.255.228 291 ``` 你应该找到类似: ``` 101.42.123.123 255.255.255.255 在链路上 101.42.123.123 291 ``` 然后删除这条路由规则 P.S. 路由器可以用的根本原因在于**路由器可以主动使用内网IP访问你的电脑**,但是云服务器不可以,如果让frp支持的话,需要frp手动去绕开路由规则,而考虑到frp本身“跨平台”的设计思想,大概不会做和操作系统深度绑定的这么hack的操作,当然支持肯定更好。
Author
Owner

@xqzr commented on GitHub (Oct 8, 2024):

通过一些 NAT 来满足...

<!-- gh-comment-id:2400301469 --> @xqzr commented on GitHub (Oct 8, 2024): 通过一些 NAT 来满足...
Author
Owner

@fatedier commented on GitHub (Oct 9, 2024):

你应该尽量考虑通用的解决方案,这个项目不太会做非常特殊的事情。

<!-- gh-comment-id:2401398703 --> @fatedier commented on GitHub (Oct 9, 2024): 你应该尽量考虑通用的解决方案,这个项目不太会做非常特殊的事情。
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#3534
No description provided.