我正在尝试在 Vagrant 的帮助下使用我的本地计算机模拟生产环境。虚拟机不应该有任何互联网访问权限。
试图取消勾选 VirtualBox 设置上的“已连接电缆”,但我将无法通过 SSH 连接到 VM,这会破坏目的。
Vagrantfile:
config.vm.define "second" do |second|
second.vm.box = "centos/7"
second.vm.box_check_update = false
second.vm.hostname = 'second'
second.vm.network :private_network, ip: "111.111.11.111"
second.vm.provider :virtualbox do |v|
v.name = "second"
end
second.vm.synced_folder "/devdir", "/vagrant_data"
end
验证:
curl www.google.com ## This should return error/ cannot found?
提前谢谢大家!
想到2个解决方案:
启动盒子时显示 VirtualBox GUI 并使用 GUI 与您的盒子交互:
config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
使用软件防火墙阻止所有传入、传出和转发的流量,除了到端口 22 的传入 SSH 连接。例如,使用
iptables
:
config.vm.provision "shell", inline: <<-SHELL
sudo iptables -F
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P OUTPUT DROP
SHELL
这将
INPUT
、FORWARD
和 OUTPUT
链的默认策略设置为 DROP
并且仅允许端口 22 上的传入 TCP 连接。它还允许出站流量流向已建立的连接(响应传入的 SSH交通)。