利用FRP和Caddy穿透Dell iDRAC8到公网:配置与问题解析

在本文中,我将详细介绍如何通过FRP和Caddy将Dell iDRAC8的网页服务安全地暴露在公网,同时解决在过程中遇到的TLS版本问题以及请求头的配置问题。我们还将解释为何在FRP中需要使用TCP转发而不是HTTPS转发,以及如何配置VNC功能的端口转发。

请注意:对于大多数服务来说,反向代理不需要这么复杂,请直接阅读https://blog.motorbottle.site/archives/168

警告
在将iDRAC暴露到公网之前,请务必确保服务器的安全。建议关闭root用户登录,使用具有复杂密码的非root用户登录系统,以降低被攻击的风险。此外,建议配置防火墙规则,限制对iDRAC端口的访问,以确保只有可信IP能够访问管理界面。

遇到的问题

在设置过程中,我遇到了以下几个主要问题:

  1. 不支持TLS 1.3:iDRAC8默认不支持TLS 1.3,这导致现代浏览器和客户端在尝试连接时会发生握手失败的情况。即使尝试连接,弱DH密钥也会引发安全协议错误,使得连接无法建立。
  2. 必须使用443端口:iDRAC8强制要求使用443端口进行HTTPS访问,其他端口不可用。即使尝试通过其他端口访问,也会导致自动跳转回443端口。这使得在配置反向代理和FRP时遇到了一些挑战。
  3. 自动跳转和SSL/TLS验证:由于iDRAC8使用自签名或过期的SSL证书,导致浏览器和反向代理在尝试连接时出现证书验证错误。如果没有正确配置反向代理,可能会陷入重定向循环或SSL协议错误的陷阱。

如果你也遇到了类似的问题,那么这篇文章可能会对你有一定的帮助。

如何配置

配置FRP

FRP(Fast Reverse Proxy)是一款高效的反向代理工具,它可以帮助我们将内网中的服务暴露到公网。在这个场景中,我们将使用FRP将Dell iDRAC8的443端口(HTTPS)和5900端口(VNC)转发到VPS(公网服务器)。

1. 配置FRP客户端(frpc)

在用于穿透iDRAC的服务器上,配置FRP客户端,将iDRAC的443端口和5900端口转发到VPS上的相应端口。值得注意的是,FRP的配置格式已经从传统的ini格式更改为toml格式。如果你之前使用的是旧格式,请确保配置文件已更新,更新相关内容可以参考https://blog.motorbottle.site/frpc-new-config/

FRPC 代码示例:

serverAddr = "your_vps_domain"
serverPort = 7000
auth.method = "token"
auth.token = "your_secure_token"

[[proxies]]
name = "idrac"
type = "tcp"
localIP = "192.168.50.128"
localPort = 443
remotePort = 18080

[[proxies]]
name = "idracVNC"
type = "tcp"
localIP = "192.168.50.128"
localPort = 5900
remotePort = 5900

在上述配置中:

  • localPort 指的是iDRAC本地的端口,例如443(HTTPS)和5900(VNC)。
  • remotePort 指的是VPS上的端口,我使用的分别为18080和5900。

2. 配置FRP服务器(frps)

在VPS上,配置FRP服务器以接收来自客户端的转发请求。

FRPS 代码示例:

bindAddr = "0.0.0.0"
bindPort = 7000
auth.method = "token"
auth.token = "your_secure_token"
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "your_username"
webServer.password = "your_secure_password"

配置Caddy

Caddy是一款易于使用的Web服务器,它能够帮助我们将iDRAC通过域名暴露在公网。我们将使用Caddy将通过FRP转发到VPS的iDRAC服务进一步反向代理到一个域名上。

我个人更喜欢用caddy,因为它简单易用,如果你更喜欢nginx等服务也可以选择。但是本文教程只讲caddy怎么配置。

配置Caddy反向代理

配置Caddy将VPS上的18080端口反向代理到指定的域名,并处理TLS连接。

Caddyfile配置示例:

relay.yourdomain.com {
    reverse_proxy 127.0.0.1:18080 {
        header_up Host relay.yourdomain.com
        transport http {
            tls
            tls_insecure_skip_verify
            versions tls1.2
        }
    }
}

在上述配置中:

  • header_up Host relay.yourdomain.com 确保请求头中的 Host 字段与客户端访问的域名一致,避免由于SNI(服务器名称指示)问题导致的TLS握手失败。
  • tls_insecure_skip_verify 忽略了iDRAC自签名证书的验证,解决了证书验证失败的问题。

配置VNC

iDRAC8提供了VNC功能,允许管理员远程访问服务器的控制台。为了启用这一功能,我们需要将iDRAC的VNC端口5900通过FRP转发到VPS上的同一端口。

我们已经在FRP客户端配置中将iDRAC的VNC端口5900转发到了VPS上的5900端口。此时,你可以直接通过VPS的IP地址和端口5900访问iDRAC的VNC功能。注意别忘记在穿透的服务器上解禁5900端口。

总结

通过配置FRP和Caddy,我们成功将Dell iDRAC8的Web界面和VNC功能穿透到公网。在配置过程中,我们遇到了TLS版本不兼容、强制使用443端口、证书验证失败等问题,并通过合理的配置和调整一一解决。希望本文能够为其他需要暴露iDRAC管理界面的管理员提供有价值的参考。

如果你在配置过程中遇到任何问题,欢迎随时交流讨论。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇