背景:出差开发项目,需要在客户那里部署基本成型的系统。这套系统需要一个公网的ip地址(一个后台管理系统,使用花生壳提供域名服务、一个公网的tcp server,java io实现),但是客户那里无法提供一个公网ip地址,而且ip地址是自动分配的(经过了2级路由),每次获取都不一样,在客户那里的花生壳就用不上了。经过各种探索,一个同事突发奇想,可以使用VPN+端口映射的方法来访问搭建的客户那里的系统,具体思路如下:

1、还是需要一个公网ip地址,这个服务器(暂且称为company_server)在哪里就不重要了,反正公司里面有一台,就用它吧;

2、在有公网ip地址的服务器上面做两件事:搭建VPN Server和配置路由的端口映射;

3、在客户那里的服务器(暂且称为customer_client)上面做vpn client,这样company_server就可以通过vpn隧道连接到customer_client(这里连接的方向很重要,不是customer_client去连接company_server,vpn技术使我们在感觉上两台服务器是在同一个局域网里面);

4、把系统部署在customer_client上;

5、访问的地址就变成了company_server的地址,端口号就是做了端口映射的地址,一旦访问此ip:port,就会转发给customer_client上,然后上面的系统就会受到请求。

好了,以上就是通过vpn+端口映射解决项目部署的思路;

从中我们也真切的体会到:

1、ipv4地址确实正在枯竭,ipv6应该会在不久的将来得到普及;

2、深入连接tcp/ip对开发人员尤其重要,很多东西其实都是tcp/ip的东西,本文中的vpn,其实就可以看作一个tcp_server和tcp_client把持了一个长连接,然后端口映射就在此连接上传输数据。

最新文章

  1. Android开发学习之路-使用AsyncTask进行异步操作
  2. PC端和移动端地址适配
  3. 电赛菜鸟营培训(三)——STM32F103CB之串口通信
  4. redhat linux 安装mysql5.6.27
  5. Linux之top命令
  6. 用PHP的socket实现客户端到服务端的通信
  7. ssh-add命令
  8. centos6 x86 安装 oracle 11g2r 日志
  9. Android发送通知栏通知
  10. 当Evernote结合MindManager
  11. 得到文件的MD5值
  12. [Angular Tutorial] 10 -More Templating
  13. 【转】Hibernate和IBatis对比
  14. _0_web_基础
  15. [LeetCode] 25. k个一组翻转链表
  16. cisco 下CEF(简介)[转载]
  17. centos 7 挂载U盘
  18. 记录一次JQuery 动态参数使用
  19. centos7 关闭防护墙
  20. 我的主机是win 7 虚拟机是vmware,solaris10连接主机

热门文章

  1. javac 不是内部或外部命令
  2. css3内处理
  3. CSS3新增伪类
  4. 举例详解CSS中的继承
  5. Navicat for PostgreSQL 必须知道的十大功能
  6. ES2015 ——let命令的暂时性死区
  7. Mongod(5):启动命令mongod参数说明
  8. 最近的学习的linux命令笔记
  9. 【转】MYISAM表批量压缩
  10. Java输出1~1000之间所有可以被3整除又可以被5整除的数