Vagrant 仅主机模式跨网段互通
一、背景
virtual Box的仅主机模式创建一个私有网络,默认以一台仅主机模式同网段的主机作为接入口,可以和仅主机模式的主机进行通信,通过这台接入口的机器,配置ipv4地址转发并在其他主机上添加去往其他网段的静态路由,实现让不同的仅主机网络跨网段通信。
二、Vagrant配置
- 三台主机默认开启NAT网络(eth0,IP:10.0.2.15 GW:10.0.2.2)
- HOST2配置了两个仅主机模式,分别和HOST1构成192.168.55.0/24,和HOST3构成192.168.66.0/24网段
config.vm.network "private_network",ip: "192.168.55.11"
会创建一个仅主机模式的网卡,并指定IP为192.168.55.11
若同时配置多行,则创建多个
<details> <summary>点击此处显示/隐藏完整代码</summary>
Vagrant.configure("2") do |config|
config.vm.define "web01" do |config|
config.vm.box = "centos/7"
config.vm.hostname = "web-node-1"
config.vm.network "private_network",ip: "192.168.55.11"
config.vm.provider "virtualbox" do |vb|
vb.name = "web-host01"
vb.cpus = 1
vb.memory = "1024"
end
end
config.vm.define "web02" do |config|
config.vm.box = "centos/7"
config.vm.hostname = "web-node-2"
config.vm.network "private_network",ip: "192.168.66.12"
config.vm.network "private_network",ip: "192.168.55.20"
config.vm.provider "virtualbox" do |vb|
vb.name = "web-host02"
vb.cpus = 1
vb.memory = "1024"
end
end
config.vm.define "web03" do |config|
config.vm.box = "centos/7"
config.vm.hostname = "web-node-3"
config.vm.network "private_network",ip: "192.168.66.13"
config.vm.provider "virtualbox" do |vb|
vb.name = "web-host03"
vb.cpus = 1
vb.memory = "2048"
end
end
</details>
三、配置路由
HOST1
- 下一跳指向HOST2的网卡地址192.168.55.20(eth1)
- 度量值需要小于默认路由
route add default gw 192.168.55.20 dev eth1 metric 50
HOST3
- 下一跳指向HOST2的网卡地址192.168.66.12(eth2)
- 注意dev选择的网卡要和地址对应
- 度量值需要小于默认路由
route add default gw 192.168.66.12 dev eth2 metric 50
四、开启ipv4转发
HOST2 修改内核参数开启IPV4地址转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
五、测试
HOST1
HOST3