如果你只有一个入站端口,但是有N个内网的RDP需要远程连接,就可以找个机子做RD网关,然后就可以跳转到所有机器。
这个是windows server的功能,
可以先装一个Windows Server 2019 Datacenter (Desktop Experience)
ed2k://|file|cn_windows_server_2019_updated_july_2020_x64_dvd_2c9b67da.iso|5675251712|19AE348F0D321785007D95B7D2FAF320|/
装完之后
可以先打补丁更新系统
sconfig
然后
1.打开“服务器管理器” → 添加角色和功能,直接一直下一步到“服务器角色”界面,勾选“远程桌面服务”的“远程桌面网关”,然后继续下一步到底,其中会自动关联安装IIS(web)模块。
2.服务器管理器 → 工具 → IIS 管理器(一般是第一个)→展开左边 Sites → 右键点 Default Web Site→“编辑绑定”,把HTTPS的默认443可以改成你自己的可以入站的端口,然后powershell执行
iisreset
3.服务器管理器 → 工具 → Remote Desktop Services → RD Gateway Manager
(1)Connection Authorization Policy(CAP)(连接授权策略)
控制谁可以通过网关
新建策略:
名称:AllowGroupAccess
允许用户组:比如添加 Administrators 或你自己的域账户组
认证方式:默认使用密码,也可勾选智能卡
(2)Resource Authorization Policy(RAP)(资源授权策略)
控制他们能连谁
新建策略:
名称:AllowToLAN
用户组:同上
资源组:可以写成 *(允许连接所有主机),或指定 IP/domain
协议:允许 RDP
(3)配置证书(必须做)
回到左侧树 → 右键你的服务器名 → 属性
切换到“SSL 证书”标签页
有两个选项:
使用你已有的合法证书(推荐)
没有的话点击“创建自签名证书”
勾选“允许使用此证书”
(4)改端口(将 443 改为xxxxx)
因为你没有 443 端口,做如下操作:
打开 IIS 管理器(服务器管理器 → 工具 → IIS)
展开左侧树,找到 “默认网站”
右键 → 绑定 → 选择 HTTPS → 编辑
把端口从 443 改成 xxxxx
然后再打开“RD Gateway Manager”:
在主界面右键服务器名 → 属性 → SSL标签页 → 也改成 xxxxx
4.接下来就可以在远程的电脑上用mstsc了,可以在“高级”里面设置RD网关,填入IP和端口号就可以了,然后登录的时候IP和端口直接填第二部的内网的就可以,到时候需要输两次密码,第一次是RD网关的,RD网关验证这里注意不要直接使用用户名,肯定错,要用 计算机名\用户名 或者 .\用户名 ,这样就对了。
---------------------------------------------------------------------------------------------
Let’s Encrypt域名证书格式不是pfx或者p12该怎么办
Linux / WSL / Git Bash / Cygwin 环境下有 OpenSSL,运行这个命令即可:
openssl pkcs12 -export \
-out cert.pfx \
-inkey privkey.pem \
-in fullchain.pem \
-certfile fullchain.pem
参数说明:
-inkey privkey.pem 是你的私钥
-in fullchain.pem 是服务器证书
-certfile fullchain.pem 是证书链(有时是 chain.pem)
它会让你输入一个密码(这个密码你必须记住!RD Gateway 导入时要用)
是其他格式,可以用
openssl pkcs12 -export \
-out domain.pfx \
-inkey domain.key \
-in domain.crt \
-certfile ca_bundle.crt
如果你没有 ca_bundle.crt,也可以临时省略 -certfile:
openssl pkcs12 -export \
-out domain.pfx \
-inkey domain.key \
-in domain.crt