Hyper-V内网穿透策略

在家里弄了一台Hyper-V的小服务器,作为服务器,自然得能从公网访问。所以,就需要进行一些策略配置来达到公网访问(内网穿透)的目的。

基本信息:

  1. Hyper-V服务器一台,部署两台虚拟机
    • Hyper-V: 192.168.1.100
    • Windows: 192.168.1.101
    • CentOS: 192.168.1.102
  2. ASUS路由器一台
    • IP: 192.168.1.1
    • DDNS: zivers.asuscomm.com
  3. 公网域名:zivers.com
  4. 公网服务器一台:111.111.111.111

需求:

  1. 在公网使用SSH连接到CentOS虚拟机
  2. 在公网使用公网域名home.zivers.com访问到CentOS中的网站
  3. 在公网通过远程桌面登录到Hyper-V服务器和Windows虚拟机

下面是内网穿透方法。

路由器绑定

内网穿透的关键在于将域名绑定到路由器,这一步完成后,只需要通过端口转发将路由器端口与服务器内网IP绑定即可。

华硕路由器提供了自己的DDNS域名,如果不是使用华硕路由器,也可以用花生壳或No-IP域名替代,如果也不想用花生壳之流,可以使用ngrok插件实现。由于电信运营商提供的IP一直在变,所以想要访问到路由器,只能通过DDNS这种方式。DDNS实现了从DDNS域名 -> 实际IP的映射,那么我们只需要完成公网域名home.zivers.com -> DDNS域名的映射,实际上就是绑定了公网域名和路由器实际IP。而这一步,仅需要在DNS解析处设置一个CNAME解析记录即可。

端口转发

完成了路由器的绑定,下面只需要在路由器上设置端口规则。比如,在路由器上建立了如下规则:

这样访问home.zivers.com:8081实际上将会将请求转到192.168.1.102的80端口处理。也能通过端口来区分不同服务器上的同一服务。例如,我需要通过远程桌面分别访问到Hyper-V服务器和Windows虚拟机,这样我就需要开启两个端口转发规则,分别指向这两台服务器的3389端口。

Nginx反向代理

由于电信运营商封闭了80端口,所以在路由器上直接进行zivers.asuscomm.com:80 -> 192.168.1.102:80的端口转发是行不通的。那么,势必不能用常用的端口,所以我选择了8081,于是就成了:

但是,这样也会有一个问题,就是正常用户不会在公网上使用带端口号的域名访问网站,所以这里就需要加上一层Nginx反向代理。将www.zivers.com代理到home.zivers.com:8081。这样只需要在公网访问www.zivers.com实际上访问的就是192.168.1.102:80了。下面是Nginx规则:

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注