使用cloudflared进行内网穿透
#代理 #网络
因为目前使用的网络环境大部分为临时公网IP进行NAT,如果想要对外开放一个服务访问会因为不是固定IP以及运营商的限制,无法让外网直接访问到内网的某些服务。 这里就介绍用Cloudflare的“Cloudflare Zero Trust”来进行内网穿透,实现访问内网的服务。
要求:
注册cloudflare账号
有一个域名,并将DNS修改为cloudflare的DNS,以方便后面自动添加CNAME
目前该服务支持常见的操作系统,客户端下载地址
这里以Ubuntu 18.04系统为例进行安装说明
# 下载deb安装包
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
# 安装
dpkg -i cloudflared-linux-amd64.deb
# 登录cloudflare账号,如果是在命令行界面操作的话可以将用于授权认证的URL复制到浏览器中打开,登录账号,选择指定域名授权即可
# 授权完成后会在~/目录下创建一个.cloudflare/目录,并生成cert.pem密钥文件
cloudflared tunnel login
# 创建一个隧道,将${Tunnel_NAME}替换为自己想要定义的名称,创建完之后会在本地生成一个json文件,记录这个隧道的相关信息
cloudflared tunnel create ${Tunnel_NAME}在~/.cloudflare/目录创建一个config.yaml配置文件,内容参考下面的配置示例
# 内网要对外服务的服务地址,也支持其它协议,例如SSH协议 ssh://1.1.1.1:22 ,TPC协议 TCP://1.1.1.1:8000 ,RDP协议 rdp://1.1.1.1:3389 ,甚至是Unix Socks unix:/home/production/echo.sock
url: http://192.168.3.88:80
tunnel: 3ea5e018-2f6b-423f-a1e8-654d15ab6173
credentials-file: /root/.cloudflared/3ea5e018-2f6b-423f-a1e8-654d15ab6173.json# 添加流量路由,该操作会在域名的DNS中自动添加一个www的CNAME,用于访问
cloudflared trunnel route dns ${Tunnel_NAME} www.domain.com
# 启动隧道
cloudflared tunnel run ${Tunnel_NAME}
# 如果不在配置文件的目录,则需要指定配置文件的具体路径
cloudflared tunnel --config PATH/config.yml run这时通过www.domain.com就能访问对应的内网服务
以上就是基本配置了,其它的网络穿透方案可以参考[[局域网穿透工具]]
错误处理记录
运行cloudflare tunnel run提示解析不到对应域名
cloudflare tunnel run提示解析不到对应域名ERR Error looking up Cloudflare edge IPs: the DNS query failed error="lookup _v2-origintunneld._tcp.argotunnel.com on 192.168.3.1:53: no such host"
ERR Please try the following things to diagnose this issue:
ERR 1. ensure that argotunnel.com is returning "origintunneld" service records.
ERR Run your system's equivalent of: dig srv _origintunneld._tcp.argotunnel.com
ERR 2. ensure that your DNS resolver is not returning compressed SRV records.
ERR See GitHub issue https://github.com/golang/go/issues/27546
ERR For example, you could use Cloudflare's 1.1.1.1 as your resolver:
ERR https://developers.cloudflare.com/1.1.1.1/setting-up-1.1.1.1/解决方案
检查OpenWRT路由器上DNS是否开启了“过滤无用包”,如有开启,请关闭。
最后更新于