在 Vagrant VM 上禁用互联网(外部访问)

Haz*_*hak 7 networking virtual-machine vagrant

我正在尝试在 Vagrant 的帮助下使用本地计算机模拟生产环境。该虚拟机不应该有任何互联网访问权限。

尝试取消 VirtualBox 设置上的“电缆连接”,但我无法通过 SSH 连接到虚拟机,这达不到目的。

流浪文件

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
Run Code Online (Sandbox Code Playgroud)

确认

curl www.google.com  ## This should return error/ cannot found?
Run Code Online (Sandbox Code Playgroud)

预先感谢各位!

Ste*_*ker 1

我想到了 2 个解决方案:

  1. 启动盒子时显示 VirtualBox GUI 并使用 GUI 与你的盒子交互:

    config.vm.provider "virtualbox" do |vb|
      vb.gui = true
    end
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用软件防火墙阻止所有传入、传出和转发的流量,但端口 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
    
    Run Code Online (Sandbox Code Playgroud)

    INPUT这将设置、FORWARDOUTPUT链接到并仅允许端口 22 上的传入 TCP 连接的默认策略。DROP它还允许已建立连接的出站流量流动(响应传入 SSH 流量)。