rustdesk-api icon indicating copy to clipboard operation
rustdesk-api copied to clipboard

可否考虑API端口与管理网页端口分开。

Open sparkyuanquan opened this issue 6 months ago • 11 comments

您好大佬, 由于API端口必须开放公开给客户端连接使用,这个没有问题,但是管理网页端口同时使用API端口会有点小问题, 因为国内个别运营商不允许家宽开放网页服务,避免自建钓鱼网站,如果检测到开放网页服务,会引起一些不必要的一些麻烦,如果限制IP访问后台网页,又会造成客户端无法连接API,所以大佬是否可以考虑把API端口与和管理后台网页端口分开的功能, 这样的话,可以在防火墙上控制指定的IP访问后台网页,或者不对外开放后台管理,只内网连接后台网页使用网页客户端。谢谢。

sparkyuanquan avatar Jun 25 '25 03:06 sparkyuanquan

前后端其实是分离的 后台的页面在 lejianwen/rustdesk-api-web 之后后面感觉做到一起更方便

你可以在要禁用网页的服务器(家宽)上用nginx反代禁止 /_admin 或限制IP访问

lejianwen avatar Jun 25 '25 13:06 lejianwen

的确我也觉得同一个端口非常不安全,而且是http,需要后面操作的东西多了

zjbbqlive avatar Jun 26 '25 03:06 zjbbqlive

我也是觉得API端口与管理网页端口分开为好。

justwho avatar Jun 26 '25 03:06 justwho

前后端其实是分离的 后台的页面在 lejianwen/rustdesk-api-web 之后后面感觉做到一起更方便

你可以在要禁用网页的服务器(家宽)上用nginx反代禁止 /_admin 或限制IP访问

感谢大佬的回复,有试过在nginx 里反代禁止/_admin/

location = /_admin/ { # 仅允许指定IP访问 allow 222.621.126.122; deny all; # 拒绝其他所有IP 这样虽然是禁止了其它用户访问API管理界面,但是会返回 403 Forbidden nginx/1.21.6,
感觉还是没有直接管理后台单独一个端口,在防火墙上按规则放行来的彻底,对于运营商来说,随便你扫,都无法知道我映射开了这个网页端口。

Image

sparkyuanquan avatar Jun 26 '25 07:06 sparkyuanquan

前后端其实是分离的 后台的页面在 lejianwen/rustdesk-api-web 之后后面感觉做到一起更方便 你可以在要禁用网页的服务器(家宽)上用nginx反代禁止 /_admin 或限制IP访问

感谢大佬的回复,有试过在nginx 里反代禁止/_admin/

location = /_admin/ { # 仅允许指定IP访问 allow 222.621.126.122; deny all; # 拒绝其他所有IP 这样虽然是禁止了其它用户访问API管理界面,但是会返回 403 Forbidden nginx/1.21.6, 感觉还是没有直接管理后台单独一个端口,在防火墙上按规则放行来的彻底,对于运营商来说,随便你扫,都无法知道我映射开了这个网页端口。

Image

实际上真要扫都是抓包的,只要看到是HTTP请求就知道了,RustDesk会定期发心跳包到HTTP接口,对运营商来说403和直接通过了没啥区别。以及,建议使用HTTPS,无论境内外。

下面是我的Nginx反代配置和Docker的部分参数,你可以参考一下。

location /server { proxy_pass http://127.0.0.1:21118; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; } location /ws/relay { proxy_pass http://127.0.0.1:21119/ws/relay; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; } location / { proxy_pass http://127.0.0.1:21114; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; }

-e "RELAY=rd.123.cc"
-e "RUSTDESK_API_RUSTDESK_ID_SERVER=rd.123.cc/server"
-e "RUSTDESK_API_RUSTDESK_RELAY_SERVER=rd.123.cc/relay"
-e "RUSTDESK_API_RUSTDESK_API_SERVER=https://rd.123.cc" \

我是部署在香港服务器的,所以直接走网页。其实这俩配置还是有点小问题的,不过能用,主要是网页也是能用的,整体只需要开放https端口和21115-21119就可以了。我防火墙封锁了外网的21114端口。你是家庭宽带的话,可以对应修改一下。

Lightshadow86 avatar Jun 26 '25 12:06 Lightshadow86

前后端其实是分离的 后台的页面在 lejianwen/rustdesk-api-web 之后后面感觉做到一起更方便 你可以在要禁用网页的服务器(家宽)上用nginx反代禁止 /_admin 或限制IP访问

感谢大佬的回复,有试过在nginx 里反代禁止/_admin/ location = /_admin/ { # 仅允许指定IP访问 allow 222.621.126.122; deny all; # 拒绝其他所有IP 这样虽然是禁止了其它用户访问API管理界面,但是会返回 403 Forbidden nginx/1.21.6, 感觉还是没有直接管理后台单独一个端口,在防火墙上按规则放行来的彻底,对于运营商来说,随便你扫,都无法知道我映射开了这个网页端口。 Image

实际上真要扫都是抓包的,只要看到是HTTP请求就知道了,RustDesk会定期发心跳包到HTTP接口,对运营商来说403和直接通过了没啥区别。以及,建议使用HTTPS,无论境内外。

下面是我的Nginx反代配置和Docker的部分参数,你可以参考一下。

location /server { proxy_pass http://127.0.0.1:21118; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; } location /ws/relay { proxy_pass http://127.0.0.1:21119/ws/relay; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; } location / { proxy_pass http://127.0.0.1:21114; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; }

-e "RELAY=rd.123.cc" -e "RUSTDESK_API_RUSTDESK_ID_SERVER=rd.123.cc/server" -e "RUSTDESK_API_RUSTDESK_RELAY_SERVER=rd.123.cc/relay" -e "RUSTDESK_API_RUSTDESK_API_SERVER=https://rd.123.cc" \

我是部署在香港服务器的,所以直接走网页。其实这俩配置还是有点小问题的,不过能用,主要是网页也是能用的,整体只需要开放https端口和21115-21119就可以了。我防火墙封锁了外网的21114端口。你是家庭宽带的话,可以对应修改一下。

谢谢大佬的分享.话说/ws/relay 这里也要这么多设置吗

zjbbqlive avatar Jun 27 '25 03:06 zjbbqlive

前后端其实是分离的 后台的页面在 lejianwen/rustdesk-api-web 之后后面感觉做到一起更方便 你可以在要禁用网页的服务器(家宽)上用nginx反代禁止 /_admin 或限制IP访问

感谢大佬的回复,有试过在nginx 里反代禁止/_admin/ location = /_admin/ { # 仅允许指定IP访问 allow 222.621.126.122; deny all; # 拒绝其他所有IP 这样虽然是禁止了其它用户访问API管理界面,但是会返回 403 Forbidden nginx/1.21.6, 感觉还是没有直接管理后台单独一个端口,在防火墙上按规则放行来的彻底,对于运营商来说,随便你扫,都无法知道我映射开了这个网页端口。 Image

实际上真要扫都是抓包的,只要看到是HTTP请求就知道了,RustDesk会定期发心跳包到HTTP接口,对运营商来说403和直接通过了没啥区别。以及,建议使用HTTPS,无论境内外。 下面是我的Nginx反代配置和Docker的部分参数,你可以参考一下。

location /server { proxy_pass http://127.0.0.1:21118; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; } location /ws/relay { proxy_pass http://127.0.0.1:21119/ws/relay; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; } location / { proxy_pass http://127.0.0.1:21114; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; add_header Strict-Transport-Security "max-age=31536000"; }

-e "RELAY=rd.123.cc" -e "RUSTDESK_API_RUSTDESK_ID_SERVER=rd.123.cc/server" -e "RUSTDESK_API_RUSTDESK_RELAY_SERVER=rd.123.cc/relay" -e "RUSTDESK_API_RUSTDESK_API_SERVER=https://rd.123.cc" \

我是部署在香港服务器的,所以直接走网页。其实这俩配置还是有点小问题的,不过能用,主要是网页也是能用的,整体只需要开放https端口和21115-21119就可以了。我防火墙封锁了外网的21114端口。你是家庭宽带的话,可以对应修改一下。

谢谢大佬的分享.话说/ws/relay 这里也要这么多设置吗

emmm,我不怎么上线,没看到。

或许你已经弄完了。

我这么设置其实只是为了能用,至于为啥用的路径不一致,,,我也纳闷呢。我还是一个个端口号和路径以及Nginx配置文件改出来的。

如果你和我一样只是为了能用,那么到这里应该就足够了。

这个项目还是不错的,比官方的连接速度快是真的,我北方地区用香港的中继,哪怕中转也快的一批,而多数情况下我都是走直连的,更快了。而且网页被我折腾大半天也可以用了,延迟也能接受。

Lightshadow86 avatar Jun 30 '25 11:06 Lightshadow86

我最终还是放弃网页客户端了,使用本地客户端登录或链接直接启动本地客户端进行远控吧,网页客户端要使用起来还是有点麻烦。

sparkyuanquan avatar Jul 01 '25 02:07 sparkyuanquan

我最终还是放弃网页客户端了,使用本地客户端登录或链接直接启动本地客户端进行远控吧,网页客户端要使用起来还是有点麻烦。

网页客户端本质只是临时替代,如果都有完整的客户端了用客户端是最好的。网页是没办法打洞只能强行中继的

Lightshadow86 avatar Jul 01 '25 06:07 Lightshadow86

我也建议将网页部分分离到新的端口,这样就可以自行解决web部分到底在不在公网访问

SmallYuuu avatar Jul 03 '25 13:07 SmallYuuu

我也建议将网页部分分离到新的端口,这样就可以自行解决web部分到底在不在公网访问

我个人的看法是用nginx搞一下,反代个新端口顺带设置个规则也不错,毕竟这个API是不自带SSL的,公共网络环境还是SSL稳妥一些。

Lightshadow86 avatar Jul 03 '25 13:07 Lightshadow86