文档
1.入门指南
1.1.cpolar下载与安装
预编译的二进制zip格式压缩包可在官网下载中找到。下载对应平台的压缩包,解压后即可使用。
Windows安装方式
- 在官网下载下载适用于Windows平台的zip压缩包,解压后得到cpolar.exe,然后通过命令行带参数运行即可。
- 通过Chocolatey包安装管理器安装:
choco install cpolar --version=3.2.82
macOS安装方式
- 在官网下载下载适用于macOS平台的zip压缩包,解压后得到cpolar,然后通过命令行带参数运行即可。
- 通过Homebrew包管理器安装:
brew tap probezy/core && brew install cpolar
Linux安装方式
- 手动安装方式:在官网下载下载适用于Linux平台的zip压缩包,解压后得到cpolar,然后通过命令行带参数运行即可。
- 自动安装方式:一键自动安装脚本
一键自动安装脚本
环境需求:
该脚本适用于Ubuntu16.04/18.04/20.04及以后,Centos7/8及以后版本,树莓派最新官方镜像,及支持systemd的新式Linux操作系统,该脚本会自动判断CPU架构(i386/amd64/mips/arm/arm64等等),自动下载对应cpolar客户端,并自动部署安装。
1. cpolar 安装(国内使用)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
或 cpolar短链接安装方式:(国外使用)
curl -sL https://git.io/cpolar | sudo bash
2. 查看版本号,显示3.2.82
cpolar version
3. token认证
登录后台,查看自己的认证token,之后将token贴在命令行里
cpolar authtoken xxxxxxx
4. 简单穿透测试
cpolar http 8080
按ctrl+c退出
5. 向系统添加服务
sudo systemctl enable cpolar
6. 启动cpolar服务
sudo systemctl start cpolar
7. 查看服务状态
sudo systemctl status cpolar
8. 登录后台,查看隧道在线状态
https://dashboard.cpolar.com/status
9. 安装完成
可以去入门指南进一步了解cpolar的使用方法。
注: cpolar 卸载方法
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash -s -- --remove
安装说明:
- cpolar默认安装路径 /usr/local/bin/cpolar,
- 安装脚本会自动配置systemd服务脚本,启动以后,可以开机自启动。
- 如果第一次安装,会默认配置一个简单的样例配置文件,创建了两个样例隧道,一个web,一个ssh
- cpolar配置文件路径: /usr/local/etc/cpolar/cpolar.yml
1.2.配置token认证令牌
cpolar服务的许多高级功能,需要与您注册的帐户关联才能使用。一旦您注册成功,您需要在后台仪表板上显示的authtoken参数配置cpolar客户端。它将授予您访问自己帐户的功能权限。 cpolar客户端有一个简单的’authtoken’命令,它使用起来很简单。
安装你的认证token
cpolar authtoken <YOUR_AUTHTOKEN>
1.3.将本地Web服务器公开到Internet
cpolar允许您将本地计算机上运行的Web服务器公开到Internet。告诉cpolar您的Web服务器正在侦听哪个端口。
如果您不知道Web服务器正在侦听哪个端口,则可能是80端口,即HTTP的默认端口。
示例:将本地计算机的端口80上的Web服务器公开到Internet
cpolar http 80
启动cpolar时,它将在终端中显示一个UI,其中包含隧道的公共URL以及有关通过隧道建立的连接的其他状态和度量信息。
cpolar控制台用户界面
cpolar by @bestExpresser
Tunnel Status online
Version 2.0/2.0
Web Interface http://127.0.0.1:4040
Forwarding http://92832de0.cpolar.io -> localhost:80
Forwarding https://92832de0.cpolar.io -> localhost:80
Connnections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
2.HTTP 隧道
2.1.二级子域名
cpolar将分配一个随机子域名给您的HTTP隧道,这对于一次性个人用途是可以的。
然而,如果你在黑客马拉松上显示网址或者与第三方Web API集成时,如果隧道名称是随机的,可能会令人沮丧或难以阅读。这时,您可以使用自定义域名功能,为隧道URL指定一个有容易记忆的子域名。它可以在命令行下使用-subdomain
参数开关启动。
示例:打开包含子域名为’myapp’的隧道.
cpolar http -subdomain=myapp 80
显示结果
cpolar by @bestExpresser
...
Forwarding http://myapp.cpolar.io -> 127.0.0.1:80
Forwarding https://myapp.cpolar.io -> 127.0.0.1:80
2.2.重写主机Host头域
当转发到本地端口时,cpolar不会修改隧道传输的 HTTP 请求,它们会在收到时逐字节复制到您的服务器。一些应用服务器如 WAMP、MAMP 和 pow 使用 Host
标头来确定要显示的开发站点。因此,cpolar可以使用修改后的 Host 标头重写您的请求。使用 -host-header
开关重写传入的 HTTP 请求。
如果值指定了rewrite
,Host
头将被重写以匹配转发地址的主机名部分。任何其他值都会导致 Host
标头被重写为该值。
将主机头重写为site.dev
cpolar http -host-header=rewrite site.dev:80
将 Host
头重写为“example.com”
cpolar http -host-header=example.com 80
2.3.http重定向至https
增加http重定向功能,使http地址跳转至https同域名地址,客户端命令行增加参数-redirect-https=true
,如果需要在配置文件中配置加参数redirect_https: true
例如:
cpolar http -redirect-https=true -region=cn 8080
2.4.本地站点使用HTTPS协议通讯
cpolar假定要转发到的服务器正在侦听未加密的HTTP流量,但是如果您的服务器正在侦听加密的HTTPS流量怎么办? 您可以使用https://
协议指定URL,以请求cpolar对本地服务器使用HTTPS。
通过指定https://
协议转发到https服务器
cpolar http https://localhost:8443
2.5.自定义域名
您可以使用自己的域名运行cpolar隧道上,而不是将您的隧道显示为cpolar.io
的子域名。
例如:要在dev.bestexpresser.com
域名上建立隧道,请按照下列步骤操作:
- 在cpolar后台–>
预留
–>保留自定义域名
选项卡下:
- 选择
地区
,输入您的域名dev.bestexpresser.com
作为保留域名,点击保留
按钮。 这保证了没有其他人可以使用自己的隧道劫持您的域名。
-
在仪表板上,复制cpolar系统提供给您的CNAME目标地址
-
在您自己的域名提供商,DNS解析中,加入一条CNAME记录。在此示例中:名称:
dev
,值:5983fcc1.cname.cpolar.io
- 假设本示例中的域名
bestexpresser.com
是在阿里云注册的,则我们需要登录阿里云,在阿里云的云解析DNS
里,bestexpresser.com
域名下,添加一条CNAME
记录。
- 设置记录类型为
CNAME
,并填写cpolar提供提cname地址,点击确认
- 添加后的效果,解析生效需要等待10分钟
- 假设本示例中的域名
-
大约5-10分钟后,ping您的自定义域名(dev.bestexpresser.com),看是否已经解析到了cpolar提供cname地址
ping dev.bestexpresser.com
- 如果ping返回的地址中,包含cpolar的cname地址,说明已经解析成功。
- 示例:在自定义域名上运行隧道
cpolar http -hostname=dev.bestexpresser.com 8080
- 配置成功,您现在就可以用dev.bestexpresser.com自定义域名访问本地站点了。
注意: 此时通过HTTPS访问自定义域隧道仍然有效,但证书不匹配。接下来,我们来添加证书。
-
自定义域名证书从哪里获得?
自定义域名的HTTPS证书,您可以从DNS运营商那里免费获得或购买。 -
如果您已经有了TLS证书/密钥对,请尝试使用按如下命令创建自定义域名隧道。
cpolar http -hostname=dev.bestexpresser.com -key=/path/to/tls.key -crt=/path/to/tls.crt 8080
参数说明:
- hostname: 您的自定义域名
- crt: HTTPS证书文件路径(全路径)
- key: HTTPS证书密钥文件路径(全路径)
- 8080:本地web服务器侦听端口
- 关于服务器地区的选择:
目前国内地区有cn、cn_vip、cn_top地区
海外有us、hk地区国内地区,所有自定义域名都需要提前已备案,才能部署。
国外地区,则不需要备案。如果您的域名已备案,可以部署在国内地区,cn地区域名自动过白名单。cn_vip、cn_top地区,需要的人工域名过白名单,请联系官网QQ客服,让他帮您提交过白申请。
如果您的域名未备案,可以使用us和hk地区,则不需要域名过白名单步骤。
2.6.自定义域名使用自有HTTPS证书
当使用自己的自定义域名时,您可能无法访问公开的https服务,因为HTTPS证书不同。 cpolar客户端可以轻松为您完成此操作,使您可以端到端加密通迅,而不必担心本地服务是否具有HTTPS支持。 您只需要在命令行中指定-crt
和-key
两个参数,以指定TLS证书和密钥的文件系统路径,cpolar客户端将负责为您握手TLS连接。
使用cpolar客户端启动自定义域名的HTTPS连接。
cpolar http -hostname=secure.example.com -key=/path/to/tls.key -crt=/path/to/tls.crt 80
2.7.用密码保护你的隧道
任何可以猜测您的隧道URL的人都可以访问您的本地Web服务器,除非您使用密码保护它。 您可以使用-httpauth
开关确保隧道安全。 这将使用您指定为参数的用户名和密码对所有请求强制执行HTTP Basic Auth。
示例:用密码保护您的隧道
cpolar http -httpauth="username:password" 8080
2.8.Websockets
Websocket端点通过cpolar的http隧道工作,无需任何更改。 但是,目前还没有支持监听初始化连接时,返回临时状态码101时的交换消息。
3.TCP 隧道
并非您希望公开的所有服务都是基于HTTP的。 cpolar TCP隧道允许您公开通过TCP运行的任何网络服务。 这通常用于公开SSH,游戏服务器,数据库等。 启动TCP隧道很容易。
例如:公开一个在端口1234上运行的基于TCP的服务
cpolar tcp 1234
3.1.举例
公开在默认端口上侦听的SSH服务器
cpolar tcp 22
公开Postgres服务器监听默认端口
cpolar tcp 5432
暴露Minecraft服务器侦听默认端口
cpolar tcp 25565
3.2.保留固定TCP地址
通常,每次启动 TCP 隧道时都会随机分配远程TCP地址和端口,它会在24小时后随机变化, 对于生产环境的服务或经常访问的TCP地址,很不方便。您通常需要一个稳定的、固定端口的远程TCP地址。
为此,让我们来配置一个永久固定的公网TCP地址。
首先,登录您的 cpolar后台,在cpolar后台
-> 预留
-> 保留 TCP 地址
部分,添加一条记录。
选择地区
,和填写描述
,然后点击保留
按钮。
系统会分配给您一个该地区的固定TCP地址,可供长期稳定使用。
在调用 cpolar 时使用 -remote-addr
选项参数,值为系统分配给您的保留 TCP 地址。
命令行使用举例:
- 将后台预留的TCP地址绑定到本地SSH端口
cpolar tcp -remote-addr=1.tcp.vip.cpolar.cn:20046 22
- 公网用户连接SSH测试
ssh root@1.tcp.vip.cpolar.cn -p 20046
注意:由于公网端口变成20046,所以请求时,ssh命令要加上-p
参数, 值为指定的cpolar公网端口号。
配置文件举例:
如果需要在配置文件中配置,需要在指定隧道下添加remote_addr
参数.
authtoken: xxxxxxxxxx
tunnels:
ssh:
proto: tcp
addr: 22
remote_addr: 1.tcp.vip.cpolar.cn:20046
region: cn_vip
注意:配置文件中的remote_addr
参数为下划线,与命令行中使用的-remote-addr
中划线不同。
4.FTP 隧道
由于FTP协议是个多端口协议,它需要侦听本地TCP 21端口和一个数据传输端口段(1024-65535),所以通常难以穿透。以下为cpolar给出的解决方案:
cpolar ftp 21
如图:系统共返回4个隧道,一个ftp信令隧道和三个数据隧道.
ftp信令隧道:ftp://
开头地址
ftp数据隧道:data://
开头地址
ftp信令隧道,用于连接FTP服务器的信令端口TCP 21.
ftp数据隧道,用于链接FTP服务器的数据端口段。(全例为:25057-25059)
2)配置你的FTP服务器,将FTP服务器配置成被动模式
2.1 数据端口段:配置成与cpolar提供的一致(25057-25059),
2.2 User the following IP: 填写1.tcp.cpolar.io的公网IP地址.
本例的IP地址为34.92.101.174
2.3 去掉最下面勾选项。(本地客户端访问仍使用公网IP,因为cpolar客户端是从本地访问)
注:如果使用中国区,会获取1.tcp.cpolar.cn的公网地址,当前的公网IP为:132.232.121.150
3)使用FTP客户端,连接FTP服务器。
4) 链接成功。
5.TLS 隧道
HTTPS隧道使用cpolar.com证书限制cpolar.com服务器上的所有TLS(SSL)通信。 对于生产级服务,您需要使用自己的TLS密钥和证书对隧道通信进行加密。 cpolar使用TLS隧道使此操作异常简单。
将TLS流量转发到端口443上的本地HTTPS服务器
cpolar tls -subdomain=encrypted 443
隧道运行后,尝试使用curl进行访问。
curl --insecure https://encrypted.cpolar.io
5.1.加密的TLS连接
您尝试公开的服务可能无法限制TLS连接。 cpolar客户端可以为您执行此操作,以便您可以端对端加密通信,而不必担心本地服务是否支持TLS。 同时指定-crt和-key命令行选项,以指定TLS证书和密钥的文件系统路径,然后cpolar客户端将为您限制TLS连接。
cpolar tls -region=cn -hostname secure.example.com -key=/path/to/tls.key -crt=/path/to/tls.crt 80
5.2.通过TLS隧道运行非HTTP服务
cpolar TLS隧道不对正在传输的基础协议进行任何假设。 本文档中的所有示例都使用HTTPS,因为它是最常见的用例,但是您可以在TLS隧道上运行任何TLS封装的协议(例如imaps,smtps,sip等),而无需进行任何更改。
5.3.没有证书警告的TLS隧道
注意前面的curl命令示例中的--insecure
选项吗?您需要指定,因为您的本地HTTPS服务器没有终止任何cpolar.io子域的通信所需的TLS密钥和证书。如果您尝试在网络浏览器中加载该页面,则会注意到它告诉您该页面可能不安全,因为证书不匹配。
如果要使证书匹配并免受中间人攻击,则需要两件事。首先,您需要为拥有的域名购买SSL(TLS)证书,并将本地Web服务器配置为使用该证书及其私钥来终止TLS连接。如何执行此操作仅针对您的Web服务器和SSL证书提供者,不在本文档的讨论范围之内。为了举例说明,我们假设为您颁发了域secure.example.com
的SSL证书。
获得密钥和证书并正确安装它们之后,现在该在您自己的自定义域名上运行TLS隧道了。设置的说明与HTTP隧道部分中描述的相同:“自定义域上的隧道”。您注册的自定义域应与SSL证书(secure.example.com
)中的域相同。设置自定义域后,使用-hostname参数在您自己的域上启动TLS隧道。
通过您自己的自定义域转发TLS流量
cpolar tls -region=us -hostname=secure.example.com 443
5.4.客户端兼容性
TLS隧道通过检查传入TLS连接上的服务器名称信息(SNI)扩展中存在的数据来工作。 并非所有启动TLS连接的客户端都支持设置SNI扩展数据。 这些客户端无法与cpolar的TLS隧道一起正常使用。 幸运的是,几乎所有现代浏览器都使用SNI。 某些现代软件库却没有。 以下客户端列表不支持SNI,并且不适用于TLS隧道:
- Microsoft Internet Explorer 6.0
- Microsoft Internet Explorer 7 & 8 on Windows XP or earlier
- Native browser on Android 2.X
- Java <=1.6
- Python 2.X, 3.0, 3.1 [if required modules are not installed](https://stackoverflow.com/questions/18578439/using-requests-with-tls-doesnt-give-sni-support/18579484#18579484 “if required modules are not installed”)
- 可以在Wikipedia上的Server Name Indiciation页面上找到更完整的列表。
6.高级的隧道选项
6.1.泛域名
cpolar允许您将HTTP和TLS隧道绑定到通配符域名(泛域名)。 所有通配符域(泛域名),甚至是cpolar.io子域的通配符必须首先保留在仪表板上的帐户中。 使用-hostname
或-subdomain
时,请指定前导*星号以绑定通配符域。
绑定隧道以接收** example.com`的所有子域的流量**
cpolar http -hostname=*.example.com 80
6.2.泛域名规则
使用通配符域会在cpolar.com服务的某些方面产生歧义。 以下规则用于解决这些情况,对于了解您是否使用通配符域非常重要。
出于示例的目的,假设您已为您的帐户保留地址*.example.com
。
- 与嵌套子域的连接(例如
foo.bar.baz.example.com
)将路由到您的通配符隧道。 - 您可以在
example.com
的任何有效子域上绑定隧道,而无需创建其他保留域条目。 - 没有其他帐户可以保留
foo.example.com
或与其他帐户保留的通配符域匹配的任何其他子域。 - 连接将在线路由到最具体的匹配隧道。 如果您为
foo.example.com
和* .example.com
运行隧道,对foo.example.com
的请求将始终路由到foo.example.com
6.3.转发到不同计算机上的服务器(非本地服务)
cpolar可以转发到未在本地计算机上运行的服务。 而不是指定端口号,只需指定网络地址和端口。
示例:转发到其他计算机上的Web服务器
cpolar http 192.168.1.1:8080
7.全球基础设施
7.1.地理位置
cpolar在世界各地的数据中心运行隧道服务器。 给定区域内的数据中心的位置可能在没有通知的情况下改变(例如,欧洲服务器可能从法兰克福转移到伦敦)。
- us – 美国(俄亥俄州)
- cn – 中国(北京)
- cn_vip – 中国 VIP China
- cn_top – 中国 Top China 支持微信公众号、微信小程序(基础套餐及以上支持)
- hk – 中国(香港)
- eu – 欧洲(法兰克福) (即将开放)
- ap – 亚太地区(新加坡) (即将开放)
- au – 澳大利亚(悉尼) (即将开放)
7.2.使用方法
如果您没有明确选择某个区域,您的隧道将托管在默认区域美国。 选择离您最近的区域就像指定设置-region
命令行标志或在配置文件中设置region
属性一样简单。 例如,要在中国地区启动隧道:
cpolar http -region=cn 8080
为特定区域(默认情况下为美国区域)分配保留域和保留地址。 保留域或地址时,必须选择目标区域。 您不得绑定在分配给其他区域以外的其他区域中保留的域或地址。 尝试这样做会产生错误并阻止您的隧道会话初始化。
8.IP白名单隧道访问
您可以将帐户中的隧道端点列入白名单。 白名单由cpolar.com服务器强制执行。 它全局应用于所有隧道端点。 检查与任何隧道端点的任何传入连接,以确保连接的源IP地址与白名单中的至少一个条目匹配。 如果连接与白名单不匹配,则会立即终止,并且永远不会转发给cpolar客户端。
作为一种特殊情况,如果您的白名单为空,则允许所有连接。
8.1.管理白名单
您可以在cpolar仪表板的验证选项卡上管理IP白名单。 在“IP白名单”部分下输入新的IP地址,然后单击添加白名单条目。 对IP白名单的更改最多可能需要30秒才能生效。
8.2.IP范围
有时,您可能希望将整个IP范围列入白名单。 您可以使用[[1] CIDR_notation] [CIDR_notation]指定IP地址块,而不是仅输入单个IP地址。 例如,要允许从10.1.2.0到10.1.2.255的所有IP地址,您需要将10.1.2.0/24添加到白名单。
[CIDR_notation]:https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation“CIDR_notation”
9.cpolar配置文件
有时您的cpolar配置太复杂,无法在命令行选项中表达。 cpolar支持一个可选的,非常简单的YAML配置文件,它为您提供同时运行多个隧道的功能,以及调整一些cpolar更神秘的设置。
9.1.指定配置文件路径
您可以使用-config
选项将路径传递给显式配置文件。 建议所有生产部署使用此方法。
明确指定配置文件位置
cpolar http -config=/opt/cpolar/conf/cpolar.yml 8000
9.2.默认配置文件路径
如果没有为配置文件指定位置,则cpolar会尝试从默认位置$HOME/.cpolar/cpolar.yml
中读取一个位置。 配置文件是可选的; 如果该路径不存在,则不会发出错误。
在默认路径中,$HOME是操作系统定义的当前用户的主目录。 它不是环境变量$HOME, 尽管它们通常是相同的。 对于主要操作系统,如果您的用户名是john
,则可能会在以下路径中找到默认配置:
操作系统 | 默认配置文件路径 |
---|---|
OS X | /Users/john/.cpolar/cpolar.yml |
Linux | /home/john/.cpolar/cpolar.yml |
Windows | C:\Users\john\.cpolar\cpolar.yml |
9.3.配置选项
authtoken
此选项指定用于在连接到cpolar服务时对此客户端进行身份验证的身份验证令牌。 创建cpolar帐户后,您的后台管理界面将显示分配给您帐户的authtoken。
cpolar.yml指定一个authtoken
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
console_ui
true
|
启用控制台UI界面 | |
false
|
禁用控制台UI界面 | |
iftty
|
default
|
仅当标准输出是TTY(不是文件或管道)时才启用UI |
console_ui_color
transparent
|
显示控制台UI时不要设置背景颜色 | |
black
|
default
|
将控制台UI的背景设置为黑色 |
http_proxy
用于建立隧道连接的HTTP代理的URL。 许多HTTP代理具有连接大小和持续时间限制,这将导致cpolar失败。 像许多其他网络工具一样,如果设置了cpolar,它也会尊重环境变量http_proxy
。
经过身份验证的HTTP代理上的cpolar示例
http_proxy: http://user:password@proxy.company:3128
socks5_proxy
用于建立与cpolar服务器的连接的SOCKS5代理服务的地址。
经过身份验证的socks5代理的cpolar示例
socks5_proxy: socks5://user:password@proxy.company:1080
inspect_db_size
positive integers | 内存上限的大小(以字节为单位),用于分配以通过HTTP隧道保存请求以进行检查和重放。 | |
0
|
default
|
使用默认分配限制,50MB |
-1
|
禁用监听数据库; 这具有禁用所有隧道监听的有效行为 |
log_level
根据日志的记录详细程度,依次可能值是:crit
,warn
,error
,info
,debug
log_format
输出日志记录的格式。
logfmt
|
人机友好的键/值对 | |
json
|
换行符分隔的JSON对象 | |
term
|
default
|
如果标准输出是TTY,则自定义彩色格式,否则相同logfmt |
log
将日志写入此目标。
stdout
|
写入到标准输出 | |
stderr
|
写入到标准错误输出 | |
false
|
default
|
禁用日志输出 |
其它值 | 将日志记录写入磁盘上的文件路径 |
log: /var/log/cpolar.log
metadata
不透明的,用户提供的字符串,将作为cpolar.com API响应的一部分返回给此客户端启动的所有隧道的List Online Tunnels资源。 这是通过您自己的设备或客户标识符识别隧道的有用机制。 最多4096个字符。
metadata: bad8c1c0-8fce-11e4-b4a9-0800200c9a66
region
选择cpolar客户端将连接的区域来托管其隧道。
us
|
default
|
美国 |
cn
|
中国 | |
hk
|
香港 | |
eu
|
欧洲 | |
ap
|
亚太 | |
au
|
澳大利亚 |
root_cas
根证书颁发机构用于验证与cpolar服务器的TLS连接。
trusted
|
default
|
仅使用cpolar.com隧道服务的可信证书根目录 |
host
|
使用主机操作系统信任的根证书。 您可能希望使用此选项连接到第三方cpolar服务器。 | |
其它值 | 指定路径的颁发机构要信任的磁盘上的证书PEM文件 |
socks5_proxy
用于建立与cpolar服务器的连接的SOCKS5代理的URL。
socks5_proxy: "socks5://localhost:9150"
tunnels
隧道定义的名称映射。有关详细信息,请参阅隧道定义
update
true
|
如果可用,自动将cpolar更新为最新版本 | |
false
|
default
|
除非用户手动启动,否则永远不要更新cpolar |
update_channel
更新通道确定要更新的已发布版本的稳定性。 对所有生产部署使用“稳定”。
stable
|
默认
|
在可用时更新到稳定版本 |
beta
|
在可用时更新到新的beta版本 |
web_addr
要绑定的网络地址,用于提供本地Web界面和api。
网络地址 | 绑定到此网络地址 | |
127.0.0.1:4040
|
默认
|
默认网络地址 |
false
|
禁用Web UI |
9.4.隧道定义
配置文件的最常见用途是定义隧道配置。 定义隧道配置很有用,因为您可以从命令行按名称启动预配置的隧道,而不必每次都记住所有正确的参数。
隧道定义为配置文件中tunnels
属性下的name – > configuration映射。
定义两个名为httpdev
和demo
的隧道
tunnels:
httpdev:
proto: http
addr: 8000
subdomain: alan
demo:
proto: http
addr: 9090
hostname: demo.bestexpresser.com
inspect: false
auth: "demo:secret"
启动名为httpdev
的隧道
cpolar start httpdev
您定义的每个隧道都是配置选项名称到值的映射。 配置选项的名称通常与其对应的命令行开关相同。 每个隧道都必须定义proto
和addr
。 其他属性可用,许多属性是特定于协议的。
隧道配置属性
proto
|
required
all
|
隧道协议名称, http , tcp 可选。 |
addr
|
required
all
|
将流量转发到该本地端口号或网络地址 |
region
|
all
|
全球地理区域,默认 us 美国区域,可选 cn 中国区域 |
inspect
|
all
|
启用监听HTTP请求 |
auth
|
http
|
HTTP基本身份验证凭据以强制执行隧道请求 |
host_header
|
http
|
将HTTP Host标头重写为此值,或保留 以保持不变 |
bind_tls
|
http
|
bind an HTTPS or HTTP endpoint or both true , false , or both |
subdomain
|
http
tls
|
要请求的子域名。 如果未指定,则使用隧道名称 |
hostname
|
http
tls
|
要求的主机名(需要保留名称和DNS CNAME) |
crt
|
http
tls
|
此路径上的PEM TLS证书可在本地转发之前终止TLS流量 |
key
|
http
tls
|
PEM TLS此路径上的私钥,用于在本地转发之前加密认证TLS数据流 |
client_cas
|
http
tls
|
此路径上的PEM TLS证书颁发机构将验证传入的TLS客户端连接证书。 |
remote_addr
|
tcp
tls
ftp
|
保留的公网TCP地址及端口号 |
redirect_https
|
http
|
为true 将Web站点http请求重定向至https协议同域名站点 |
9.5.示例配置文件
示例配置文件如下所示。 后续部分包含这些示例中显示的所有配置参数的完整文档。
创建一个名为website的Web站点及ssh隧道,域名地址随机变化(24小时-48小时)
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
website:
addr: 8080
proto: http
ssh:
addr: 22
proto: tcp
创建两个隧道,website和ssh,随机地址,地区不同
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
website:
addr: 8080
proto: http
region: cn_vip
ssh:
addr: 22
proto: tcp
region: cn
参数说明:
region: 地区参数,可以为us,cn, cn_vip,hk等,具体请参阅在线文档说明。
不同地区的带宽,网速不同,请根据您的所在地选择合适的地区。
创建二级子域名(dev.cpolar.cn)Web站点(在cn中国区)及ssh隧道
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
website:
addr: 8080
proto: http
subdomain: dev
region: cn
ssh:
addr: 22
proto: tcp
创建固定TCP端口的ssh隧道
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
ssh:
addr: 22
proto: tcp
remote_addr: 1.tcp.vip.cpolar.cn:20050
客户端ssh访问举例:(需要加-p 参数)
ssh root@1.tcp.cpolar.cn -p 20050
参数说明:
– -p :参数为指定公网端口(默认ssh为22端口时不用指定,但在使用cpolar时,由于公网端口变为20050,所以需要加上)
– 1.tcp.cpolar.cn:20050地址: 是在后台
–>保留
–>保留TCP地址
创建.
– root:为您服务主机的用户名
如果是树莓派,则上例可改为:
ssh pi@1.tcp.cpolar.cn -p 20050
为多个虚拟托管开发站点运行隧道
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
app-foo:
addr: 80
proto: http
host_header: app-foo.dev
app-bar:
addr: 80
proto: http
host_header: app-bar.dev
使用您自己的证书在http和https上配置自定义域名
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
myapp-http:
addr: 80
proto: http
hostname: example.com
bind_tls: false
mypp-https:
addr: 443
proto: http
hostname: example.com
通过隧道暴露cpolar的Web监查界面
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
myapp-http:
addr: 4040
proto: http
subdomain: myapp-inspect
auth: "user:secretpassword"
inspect: false
包含所有选项的示例配置文件
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
region: us
console_ui: true
http_proxy: false
inspect_db_size: 50000000
log_level: info
log_format: json
log: /var/log/cpolar.log
metadata: '{"serial": "00012xa-33rUtz9", "comment": "For customer alan@example.com"}'
root_cas: trusted
socks5_proxy: "socks5://localhost:9150"
update: false
update_channel: stable
web_addr: localhost:4040
tunnels:
website:
addr: 8888
auth: bob:bobpassword
bind_tls: true
host_header: "myapp.dev"
inspect: false
proto: http
subdomain: myapp
custdomain:
addr: 9000
proto: http
hostname: myapp.example.com
crt: /path/to/example.pem
key: /path/to/example.key
ssh-access:
addr: 22
proto: tcp
remote_addr: 1.tcp.cpolar.io:20031
9.6.同时运行多个隧道
您可以将多个隧道名称传递给cpolar start
,而cpolar将同时运行它们。
从配置文件中启动三个命名隧道
cpolar start admin ssh metrics
cpolar by @bestexpresser
Tunnel Status online
Version 2.0/2.0
Web Interface http://127.0.0.1:4040
Forwarding http://admin.cpolar.io -> 10.0.0.1:9001
Forwarding http://device-metrics.cpolar.io -> localhost:2015
Forwarding https://admin.cpolar.io -> 10.0.0.1:9001
Forwarding https://device-metrics.cpolar.io -> localhost:2015
Forwarding tcp://0.tcp.cpolar.io:48590 -> localhost:22
...
您还可以要求cpolar使用start-all子命令启动配置文件中定义的所有隧道。
启动配置文件中定义的所有隧道
cpolar start-all
10.使用 cpolar …
10.1.Wordpress
要使用Wordpress安装正常工作,通常需要做两件事:
1.您必须确保Wordpress发布相对URL。 您可以通过安装以下插件之一来完成此操作
- https://github.com/optimizamx/odt-relative-urls
- http://wordpress.org/plugins/relative-url/
- http://wordpress.org/plugins/root-relative-urls/
2.您必须确保Wordpress了解它是为了通过隧道主机名提供服务。 您可以通过修改wp-config
来配置Wordpress以包含以下行:
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
10.2.虚拟主机 (pow, MAMP, WAMP, and others)
流行的Web服务器(如MAMP和WAMP)依赖于一种通常被称为“虚拟主机”的技术,这意味着它们会查询HTTP请求的“主机”标头,以确定它们应该为多个站点服务。 要公开这样的网站,可以要求cpolar重写所有隧道请求的主机头,以匹配您的Web服务器所期望的。 您可以使用-host-header
选项(请参阅:重写主机标头)来选择要定位的虚拟主机。 例如,要路由到本地站点myapp.dev
,您将运行:
cpolar http -host-header=myapp.dev 80
10.3.出站代理
cpolar通过HTTP或SOCKS5代理正常工作。 cpolar尊重标准的unix环境变量http_proxy。 您还可以在cpolar配置文件中显式设置代理配置:
11.故障排除
11.1.CORS与HTTP基本身份验证
是的,但你不能使用cpolar的-httpauth
选项。 cpolar的http隧道允许您指定基本身份验证凭据以保护您的隧道。 但是,cpolar对所有请求强制执行此策略,包括CORS规范要求的预检“OPTIONS”请求。 在这种情况下,您的应用程序必须实现自己的基本身份验证 有关更多详细信息,请参阅this github issue
12.常见问题
12.1.我的隧道存储了哪些信息?
cpolar不会记录或存储通过隧道连接传输的任何数据。 cpolar会记录有关用于调试目的的连接的一些信息,以及隧道名称和连接持续时间等指标。 要获得完整的端到端安全性,请使用TLS隧道
。
12.2.我怎么发音cpolar?
拼读:si-polar
- see:看见, polar:极点
- 望穿-极点