内网穿透教程

出于跨公司联调需要,我们需准备能让对方公司访问到的URL。如果公司并不具备这个条件(或者拒绝开通环境),我们如何自行准备环境呢?

计划以内网穿透方法进行联调之前,请留意自己公司的管理制度里面有没有网络限制,以免倒霉被抓挨罚。如果能以遵守制度的方式将内网端口映射到公网,建议走公司的手续。

操作之前需要去搞一台VPS服务器。VPS有国内、国外的,优缺点分别如下:

地区 优势 缺点 代表厂商
国内(不含香港) 网速快
网络稳定
价格较贵,多数需月付
未经备案通常会禁止使用80、443、8080等端口,而备案耗时较长,会延误工作
阿里云、腾讯云等
香港 网速快
不需要备案,可直接使用80、443等端口
价格较贵
有被墙的风险
暂无推荐,可自行Google查询
国外 价格便宜,有些厂商甚至可按实际使用时间支付,随时买随时扔
不需要备案
网络不稳定,容易被墙
需要能付外币的信用卡
Vultr、DigitalOcean、Linode

以Vultr为例。选择该厂商,有以下几个原因:

  • 随时用,随时扔,按实际使用时间付费
  • 可以使用微信、支付宝付款

不过该厂商服务器也有几个坑需要留意:

  • 数据中心建议选东京或洛杉矶,这两个网络相对而言比较好
  • 不要选择$2.5的机器,那个是纯IPv6访问,你可能连不上
  • 由于中国人经常买这家服务器来翻墙,Vultr的服务器在国内访问效果并不太好,有时需要刷IP(买新机器然后删除旧机器)才能在国内连接上。服务器Ping不通,或者能Ping通但是SSH连接超时,这都是被墙的表现,再买一台新机器并删除旧的机器即可。另外有时候需要多刷几次。

为了方便,新机器操作系统选择Ubuntu。启动完成之后,先在公司Ping一下,没问题的话就可以用PuTTY等软件建立连接了。输入Vultr网站上面给你提供的服务器IP(端口22)、用户名和密码,然后

sudo nano /etc/ssh/sshd_config

将其中的GatewayPorts no改成yes,没找到的话就在文件末尾追加一行,保存。然后

sudo systemctl restart sshd

准备工作就做好了。

如果选择CentOS,它会默认开启防火墙,所以要确认一下防火墙状态,然后关闭防火墙或者开放待使用端口。

联调时先去下载PuTTY,启动,在里面输入服务器地址和端口(默认22),并且按下图进行设置

PuTTY设置

不要忘记点Add按钮。假如本机是http://172.18.106.3:8080,服务器IP是198.13.60.108,你选择的端口是8080,那么登录成功后就可以通过http://198.13.60.108:8080来访问自己的应用了。

因为是外国服务器,所以连接可能不太稳定,需要不定期检查连接,断了的话随时重新连。

如果需要域名,可以去国外的Namecheap上面购买个便宜的外国域名(注意:需要准备Visa/MasterCard信用卡)。如果还需要HTTPS,可以使用Let's Encrypt。国内域名也可以,除了需要实名认证以外通常也没什么问题(国内域名、国外服务器不用备案,国内服务器才需要备案)。