背景

人生在于折腾,特别是对于咱们程序员更是如此。这不手上有两台云主机,就想着怎么折腾一下来打造一个属于自己的云服务开发环境

同云主机通讯可以使用公网IP或者使用SecureCRT终端工具的隧道代理,但这两种方案都不完美

  1. 在公网IP暴露开发环境不安全
  2. 隧道一个个建麻烦
  3. 云主机上的服务无法访问本地的服务

既然是开发环境,就要实现局域网的通讯效果,本地能访问云主机,云主机也能访问本地
所以就需要用到虚拟专业网络了,这里使用的是Openxxx
由于相关关键字原因,文中使用xxx中文虚拟专业网络代替三个字母的缩写

最终要实现的效果如下

云主机

Open Server安装

官网上的安装步骤异常复杂,github上有个傻瓜式的安装脚本,按照提示一步步操作即可
https://github.com/Nyr/openxxx-install
1、获取安装脚本

wget https://raw.githubusercontent.com/Angristan/openxxx-install/master/openxxx-install.sh -O centos7-xxx.sh

2、修改权限

chmod +x centos7-xxx.sh

3、运行脚本

sudo ./centos7-xxx.sh

4、进入安装步骤
第一步,会列出局域网IP

Welcome to the Openxxx installer!
The git repository is available at: https://github.com/angristan/openxxx-installI need to ask you a few questions before starting the setup.
You can leave the default options and just press enter if you are ok with them.I need to know the IPv4 address of the network interface you want Openxxx listening to.
Unless your server is behind NAT, it should be your public IPv4 address.
IP address: 192.168.0.5

5、第二步,输入公网IP

It seems this server is behind NAT. What is its public IPv4 address or hostname?
We need it for the clients to connect to the server.
Public IPv4 address or hostname: 100.100.100.100

6、第三步,是否启用IPv6,默认否

Checking for IPv6 connectivity...Your host does not appear to have IPv6 connectivity.Do you want to enable IPv6 support (NAT)? [y/n]: n

7、第四步,选择Openxxx服务端口,默认1194

What port do you want Openxxx to listen to?1) Default: 11942) Custom3) Random [49152-65535]
Port choice [1-3]: 1

8、第5步,选择服务协议,默认UDP

What protocol do you want Openxxx to use?
UDP is faster. Unless it is not available, you shouldn't use TCP.1) UDP2) TCP
Protocol [1-2]: 1

9、第6步,选择DNS服务器
因为我们只是局域网IP跟云主机通讯即可,所以这里选1

What DNS resolvers do you want to use with the xxx?1) Current system resolvers (from /etc/resolv.conf)2) Self-hosted DNS Resolver (Unbound)3) Cloudflare (Anycast: worldwide)4) Quad9 (Anycast: worldwide)5) Quad9 uncensored (Anycast: worldwide)6) FDN (France)7) DNS.WATCH (Germany)8) OpenDNS (Anycast: worldwide)9) Google (Anycast: worldwide)10) Yandex Basic (Russia)11) AdGuard DNS (Russia)
DNS [1-10]: 1

10、第7步,是否启用压缩,默认否
启用压缩会节省带宽,但会消耗CPU

Do you want to use compression? It is not recommended since the VORACLE attack make use of it.
Enable compression? [y/n]: n

11、第8步,是否自定义安全设置,默认否

Do you want to customize encryption settings?
Unless you know what you're doing, you should stick with the default parameters provided by the script.
Note that whatever you choose, all the choices presented in the script are safe. (Unlike Openxxx's defaults)
See https://github.com/angristan/openxxx-install#security-and-encryption to learn more.Customize encryption settings? [y/n]: n

12、最后回车,将开始自动安装
安装完后,会自动进入客户端配置文件创建步骤

1、第1步,输入客户端名称,可以理解为用户名称

Tell me a name for the client.
Use one word only, no special characters.
Client name: test1

2、第2步,是否需要配置密码,默认否

Do you want to protect the configuration file with a password?
(e.g. encrypt the private key with a password)1) Add a passwordless client2) Use a password for the client
Select an option [1-2]: 1

回车后,配置文件就生成了

Write out database with 1 new entries
Data Base Updated
cp: cannot create regular file ‘/home/root/test1.oxxx’: No such file or directory
./centos7-xxx.sh: line 952: /home/root/test1.oxxx: No such file or directory

但这里有个小坑,生成的文件路径是/home/root,如果不存在这个路径就报错了,不过没关系创建/home/root目录后,重新运行sudo ./centos7-xxx.sh

因为已经安装过了Openxxx所以这里列出了你可能想做的操作,选1即可

Welcome to Openxxx-install!
The git repository is available at: https://github.com/angristan/openxxx-installIt looks like Openxxx is already installed.What do you want to do?1) Add a new user2) Revoke existing user3) Remove Openxxx4) Exit
Select an option [1-4]: 1

查看Openxxx运行情况

$ ps -ef |grep openxxx
$ obody    1441     1  0 16:06 ?        00:00:00 /usr/sbin/openxxx --cd /etc/openxxx/ --config server.conf

ifconfig查看云主机IP会发现多了一个10.8.0.1,这个IP网段就是我们xxx局域网的网段了

tun1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500inet 10.8.0.1  netmask 255.255.255.0  destination 10.8.0.1inet6 fe80::88:292b:be94:78ec  prefixlen 64  scopeid 0x20<link>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3  bytes 144 (144.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

客户端登录

1、拿着刚才生成的/home/root/test1.oxxx在本地连接一下xxx server
我使用的是Tunnelblick直接将test1.oxxx拖拽到Tunnelblick上面会自动识别

2、连接后会在日志中看到,对云主机公网IP的1194端口发起连接,即xxx server

3、在后面的日志,可以看到给test1客户端分配的IP是10.8.0.2,且将10.8.0.0网段的通讯都路由到了10.8.0.2上

4、验证一下,在客户端ping云主机

$ ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1): 56 data bytes
64 bytes from 10.8.0.1: icmp_seq=0 ttl=64 time=18.920 ms
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=214.863 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=250.860 ms

5、在云主机ping客户端

$ ping 10.8.0.2
PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.
64 bytes from 10.8.0.2: icmp_seq=1 ttl=64 time=15.9 ms
64 bytes from 10.8.0.2: icmp_seq=2 ttl=64 time=64.3 ms

可见双向都是可以ping通的

云主机另一台服务器加入

现在同192.168.0.4的云主机已经能双向通讯了,但同另一台192.168.0.5还不能通讯。两台云主机是处于同一局域网的,这里有两个办法

方式一
1、在Openxxx server的配置文件/etc/openxxx/server.conf增加如下配置
push "route 192.168.0.5 255.255.255.0"
或者将整个192.168.0.0都下推
push "route 192.168.0.0 255.255.255.0"
2、重启服务端
systemctl restart openxxx@server
3、客户端重连

可以看到192.168.0.5被送到了客户端路由
4、验证一下

$ ping 192.168.0.5
PING 192.168.0.5 (192.168.0.5): 56 data bytes
64 bytes from 192.168.0.5: icmp_seq=0 ttl=63 time=22.751 ms
64 bytes from 192.168.0.5: icmp_seq=1 ttl=63 time=17.832 ms

如果是将192.168.0.0下推,那么192.168.0.4也是可以ping通的
这个办法有个问题就是如果本地的局域网也是192.168.0.0网段的,会造成本地的网络服务异常,一般家庭wifi就是192.168.0.0网段的。另外这个192.168.0.5同10.8.0.1不是一个网段看着也别扭

方式2
将192.168.0.5也作为一个xxx的客户端连接到192.168.0.4的xxx server
步骤如前所述,创建一个客户端配置文件,需要注意的是,默认oxxx文件中的xxx server地址是192.168.0.4公网IP,这里并不需要用公网IP,所以可以改成192.168.0.4

登录xxx将会分配10.8.0.3给192.168.0.5
这样一来两台云主机同本地就形成了一个局域网,如同开头的最终效果图

安全策略

云主机默认是开放所有端口给公网访问的,3306、8080暴露在外总是不好的
现在我们已经有了xxx局域网,所以公网的端口就可以关掉了
对0.0.0.0只开发22、1194这两个端口

以192.168.0.4为例,对10.8.0.2和192.168.0.5开放所有端口即可

打通云主机实现局域网相关推荐

  1. python: 使用socket实现局域网不同主机通信。解决ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    目录 1 socket的使用 1.1 TCP方法 1.2 UDP方法 2 局域网内连接 2.1 总结 1 socket的使用 1.1 TCP方法 在socket中使用socket.socket建立会话 ...

  2. 【计算机网络大题】一个自治系统有6个局域网,其连接图如下图所示。LAN1至LAN6上的主机数分别为:10、12、240、110、50和20台。该自治系统分配到的IP地址为161.26.118.0/23

    4.一个自治系统有6个局域网,其连接图如下图所示.LAN1至LAN6上的主机数分别为:10.12.240.110.50和20台.该自治系统分配到的IP地址为161.26.118.0/23.试给出每一个 ...

  3. 局域网内同时使用两台路由器的配置方法

    假设你通过第一台路由器使用的PPPOE上网     WAN口连接类型选择 :PPPOE (一般为静态IP,动态IP,PPPOE,动态DHCP)     LAN口设置如下:IP:192.168.1.1掩 ...

  4. mac远程redis_Linux:使用Mac远程(局域网内)访问Ubuntu主机上的Redis服务

    1. 前言 本文介绍的方法,是通过配置 Redis,在 Mac 上通过 ssh 协议访问 Ubuntu 主机的 Redis 服务: 注意:如果 Ubuntu 不做 Redis 配置,Mac 直接访问 ...

  5. pc,移动端局域网文件共享

    直接上 CuteHttpFileServer/chfs,下载链接 该软件主要是用于在局域网内共享文件 PC端: 可以开机自启, 移动端访问只需要在同一局域网内输入地址即可, 或者其他PC在主机的局域网 ...

  6. 测试局域网路的MTU最大值

    测试Linux主机与局域网路由器192.168.1.1之间的MTU最大值 sudo ping -c 3 -s 1472 -M do 192.168.1.1 测试Linux主机与中国电信公共DNS主机1 ...

  7. 华为智能家居app未能连接上远程云服务_华为云主机远程连接不上 华为云服务登录手机版...

    华为企业云主机如何远程? 1.从华为企业云的控制台进入获取默认的服务器账号和密码(华为企业云也会主动发送给你账户密码),完成后,再登录服务器. 2.windows系列的,使用开始运行-&gt ...

  8. 网络基础2---->网络数据传输(局域网)

    目录 一.认识IP和MAC 1.IP 2.MAC 二.网络数据传输的特性 三.网络输出传输流程 1.网络互连的方式 2.局域网交换机组网的方式 3.局域网交换机+路由器组网的方式 一.认识IP和MAC ...

  9. MAC主机eclipse连接parallels内win7虚拟机oracle

    step 1. 关闭windows防火墙 开始 -> 控制面板 -> 系统和安全 -> windows防火墙 -> 打开和关闭防火墙 (这步后需要重启) step 2. 配置虚 ...

  10. python arp协议分析_通过python对本局域网进行ARP扫描获取MAC

    #!/usr/local/bin/python3 """ 对本局域网进行ARP扫描 ARP (Address Resolution Protocol,ARP); 以太网M ...

最新文章

  1. 利用三层交换机实现VLAN的通信实验报告
  2. Nginx负载均衡+tomcat+session共享
  3. python integer_【Python】string/list/integer常用函数总结
  4. MatConvnet中集成的损失函数(孪生网络的思考)
  5. Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll
  6. 如何测量太阳距离地球的距离
  7. 【MyBatis笔记】17-多对多做左连接查询(查询老师,并且把关联的学生也查出来)
  8. 中国摊铺和混凝土浇筑设备市场趋势报告、技术动态创新及市场预测
  9. Darabonba:多语言SDK开发终极解决方案
  10. 关于家庭路由器网络布线
  11. “黑客帝国”装B特效,不分linux版本
  12. Python之堆排序算法实现
  13. gitee的上传步骤
  14. 世界500强企业名称中英对照
  15. Python格式化字符串f-string概览
  16. kafka中的核心概念
  17. 在proteus中的排阻的查找_PROTEUS中这个排阻怎么找到?
  18. vue渲染大量数据优化_vue大数据表格卡顿问题的完美解决方案
  19. Minitab中的一些最常用的功能和任务。
  20. 【MyBatis】关联查询

热门文章

  1. EditPlus下载安装和汉化
  2. 生成均匀分布次序统计量的伪随机数 生成删失伪随机样本
  3. 内网渗透-信息收集整合
  4. 中国互联网史就是一部流氓史!
  5. C盘100G不够,如何用D盘(或者E、F)空间给C盘扩容?
  6. python制作gif动图_PIL生成透明GIF动图
  7. bat 删除文件名前N个字符
  8. NYOJ-57-6174问题-2013年6月29日11:58:06
  9. iOS 为View添加蒙版 当点击背景View移除
  10. Cookie的path和diamon