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

问题描述 投票:0回答:1

我正在尝试在 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?

提前谢谢大家!

networking vagrant virtual-machine
1个回答
0
投票

想到2个解决方案:

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

    config.vm.provider "virtualbox" do |vb|
      vb.gui = true
    end
    
  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
    

    这将

    INPUT
    FORWARD
    OUTPUT
    链的默认策略设置为
    DROP
    并且仅允许端口 22 上的传入 TCP 连接。它还允许出站流量流向已建立的连接(响应传入的 SSH交通)。

© www.soinside.com 2019 - 2024. All rights reserved.