本人常用的虚拟机软件是VirtualBox,由于笔记本性能,磁盘存储大下限制,以及VirtualBox客户机无法在多个设备间直接方便的使用等原因,我把几个虚拟的系统全部移动到便携式服务器中。

移动之后,默认情况下是不能直接访问到这些虚拟系统的。

最直接的方式可能就是使用桥接模式了,但是我有多个虚拟系统,虚拟机互访,笔记本与虚拟机互访IP需要变换,还有就是多个虚拟机使用相同的端口号等这些因素,桥接模式可能满足不了我的需求。

划分子网

把所有虚拟机划分成一个子网,服务器充当网关的角色,笔记本等实体机器和服务器一个子网。

由于之前的虚拟机的网段一直是192.168.56.0,所以复制上去,就用它了,其他设备连接时也不要修改配置了,所以实体机子网7856之后,也是比较记忆,也方便手打输入。

网段分配

网段分配如表所示:

子网名称 子网网段 网关
虚拟机子网 192.168.56.0/24 192.168.56.2 虚拟网关
实体机子网 192.168.78.0/24 192.168.78.2 实体子网网关

服务器网络设置

服务器有两个接口 vboxnet0eno1

$ route
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0
192.168.78.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1

看路由,192.168.56.0网络用的虚拟接口是vboxnet0,通过它可以访问其他虚拟系统,具体怎么实现的,那都是这个虚拟网卡的事情了,这里不深究,能用就行。

实体子网配置,使用192.168.78.0

服务器配置静态IP地址

~$ cat /etc/systemd/network/78-static-eno1.network
[Match]
Name=eno1 [Network]
Address=192.168.78.2/24
Gateway=192.168.78.2

笔记本网络设置

这样两步配置后,笔记本就可以访问服务器了,一根网线直连,没有经过路由器,因为大部分时候,是没有路由器可用的,在家当然是有的,而且这样有个好处是,传输速度相当的好。

通过网关访问虚拟子网

服务器配置成网关服务器

设置允许转发

~$ cat /etc/sysctl.conf

net.ipv4.ip_forward=1

使之生效 sysctl -p

查看是否已经支持转发

~$ cat /proc/sys/net/ipv4/ip_forward

配置iptables的转发

sudo iptables -t nat -A POSTROUTING -s 192.168.78.0/24 -j MASQUERADE

或者

sudo iptables -t nat -A POSTROUTING -s 192.168.78.0/24 -o vboxnet0 -j SNAT --to-source 192.168.56.1

网络地址转换规则解释:对所有192.168.78.0网段的请求都由接口vboxnet0来处理并进行源地址转换为192.168.56.1

由于IP和接口都是固定的,所以可以使用第二种方式,说是,性能要好些。

有时候时灵时不灵的,可能时iptable规则由于某些原因没有生效、被覆盖了,用iptables save显示所有规则,自行排查。

设置笔记本路由

这时候还没有完,还差最后一步,windows10上添加路由

route add 192.168.56.0 mask 255.255.255.0 192.168.78.2

静态路由表添加

route add 192.168.56.0 mask 255.255.255.0 192.168.78.2 -p

这条路由规则,把所有到网段192.168.56.0的数据都经过网关192.168.78.2进行处理。

最后

就是这样,完成了78访问56,也不是很复杂,但是期间也是看了很长时间的iptables,搞定了,满满的成就感。

至于56访问78,我没这个必要,如果需要的话,可以自己尝试一下。

最新文章

  1. Android笔记:android的适配
  2. MAC使用MAMP构建自签名HTTPS环境
  3. MongoDB的下载与安装
  4. Saltstack系列5:Saltstack之pillar组件
  5. Hadoop 新 MapReduce 框架 Yarn 详解
  6. smart pointer (auto_ptr)
  7. iOS_25彩票_幸运转盘
  8. 安装Oracle 9i - 初学者系列 - 学习者系列文章
  9. sql 删除重复数据,保留重复数据第一条
  10. SQL中锁表语句简单理解(针对于一个表)
  11. Linux tar 解压的时候报错
  12. 百度和谷歌的逆地址解析及GPS、谷歌地图和百度地图坐标之间的转换(python版)
  13. 用Java为Hyperledger Fabric(超级账本)编写区块链智能合约链代码
  14. STM32L1X系列GPIO运用
  15. ShellExecute 打开网页、目录、邮箱
  16. ios不触发事件也能播放音频
  17. kali linux 安装virtualbox报错(rc=-1908)
  18. docker中的安全机制
  19. 转:iBatis简单入门教程
  20. Struts文件下载(静态)

热门文章

  1. The `.update()` method does not support writable nestedfields by default. Write an explicit `.update()` method for serializer `...`, or set `read_only=True` on nested serializer fields.解决办法
  2. 打卡node day04--express-get.post.路由
  3. c++ 继承访问控制初步
  4. python中利用openpyxl、xlsxwriter库操作Excel
  5. git 代码强制回滚操作整理(线上线下一起)
  6. Linux 看进程的线程数
  7. ATM+购物车导图
  8. 062_Apex使用Assert
  9. IIS10.0 Web平台安装程序无法安装URL重写工具
  10. 大唐电信AC集中管理平台弱口令漏洞