原文地址

Vagrantfile 配置文件中公共网络的标识符:public_network,例如:

config.vm.network "public_network"

Vagrant 公共网络的确切含义因 provider 而异,因此是含糊不清的定义。尽管私有网络决不允许公众访问你的机器,但公共网络可以。

困惑吗?我们也是。公共网络很可能会在将来的版本中被替换为桥接网络,因为这通常是公共网络应该做的事情,而不支持桥接的 provider 通常没有任何其他映射到公共网络的功能。

警告:默认情况下 Vagrant box 是不安全的,设计、公开密码、用于 SSH 访问的不安全密钥对、可能允许通过 SSH 进行根访问等都会导致问题。凭借这些已知的凭据,网络中的任何人都可以轻松访问你的 box。在配置 Vagrant 使用公共网络之前,请考虑所有潜在的安全隐患并检查默认的配置以识别潜在的安全风险。

1. DHCP

最简单的使用公共网络的方式是通过 DHCP 分配 IP:

Vagrant.configure("2") do |config|
config.vm.network "public_network"
end

使用 DHCP 时,可以通过 vagrant ssh 登录到机器后,使用合适的命令行工具(ifconfig 等)可以查看分配到的 IP 地址。

使用 DHCP 分配的默认路由

某些情况下需要 DHCP 分配的默认路由不变。在这些情况下,可以指定 use_dhcp_assigned_default_route 选项。举个例子:

Vagrant.configure("2") do |config|
config.vm.network "public_network",
use_dhcp_assigned_default_route: true
end

2. 静态 IP

根据你的设置,你可能希望手动设置桥接接口的 IP。在网络定义中添加 ip: "xx.xx.xx.xx" 子句:

config.vm.network "public_network", ip: "192.168.0.17"

3. 默认网络接口

如果宿主机上有多个网络接口可用,Vagrant 会提示你选择虚拟机要桥接到的接口。可以在网络定义部分使用 bridge 选项指定默认接口。

config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"

标识所需接口的字符串必须与可用接口的名称完全匹配。如果无法找到,Vagrant 会再次提示你从可用网络接口列表中选择。

对于某些 provider,可以指定一个适配器列表来桥接,Vagrant 会按顺序尝试,直到找到存在且桥接成功的网络适配器:

config.vm.network "public_network", bridge: [
"en1: Wi-Fi (AirPort)",
"en6: Broadcom NetXtreme Gigabit Ethernet Controller",
]

这个例子中,会使用第一个存在且可以成功用于桥接的网络适配器。

4. 关闭自动配置

如果需要手动配置网络接口,可以通过 auto_config 选项关闭 Vagrant 的自动配置特性:

Vagrant.configure("2") do |config|
config.vm.network "public_network", auto_config: false
end

然后 shell 配置程序可以用来配置接口的 ip 地址:

Vagrant.configure("2") do |config|
config.vm.network "public_network", auto_config: false # manual ip
config.vm.provision "shell",
run: "always",
inline: "ifconfig eth1 192.168.0.17 netmask 255.255.255.0 up" # manual ipv6
config.vm.provision "shell",
run: "always",
inline: "ifconfig eth1 inet6 add fc00::17/7"
end

5. 默认路由器

根据设置,你可能希望手动覆盖默认的路由器配置。如果需要通过公共网络从其他网络访问 Vagrant box,则这是必需的。为此,可以使用 shell 配置程序脚本:

Vagrant.configure("2") do |config|
config.vm.network "public_network", ip: "192.168.0.17" # default router
config.vm.provision "shell",
run: "always",
inline: "route add default gw 192.168.0.1" # default router ipv6
config.vm.provision "shell",
run: "always",
inline: "route -A inet6 add default gw fc00::1 eth1" # delete default gw on eth0
config.vm.provision "shell",
run: "always",
inline: "eval `route -n | awk '{ if ($8 ==\"eth0\" && $2 != \"0.0.0.0\") print \"route del default gw \" $2; }'`"
end

注意,上述内容相当复杂,并且可能特定于操作系统,但我们记录了如何操作的粗略想法,因为这是一个常见问题。

Vagrant 手册之网络 - 公共网络 public network的更多相关文章

  1. 深入理解openstack网络架构(4)-----连接到public network

    原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture3 译文转自:http://b ...

  2. Vagrant 手册之网络 - 私有网络 private network

    原文地址 Vagrantfile 配置文件中私有网络的标识符:private_network,例如: config.vm.network "private_network", ty ...

  3. Vagrant 手册之网络 - 端口转发

    原文地址 Vagrantfile 配置文件中端口转发的网络标识符:forwarded_port,例如: config.vm.network "forwarded_port", gu ...

  4. Vagrant 手册之网络 - 概述及基本用法

    原文地址 - 概述 原文地址 - 基本用法 为了访问创建的 Vagrant 环境,Vagrant 为端口转发.连接公共网络.创建私有网络等功能暴露了一些高层网络选项. 高层网络选项用于提供可以跨 pr ...

  5. Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  6. Android训练课程(Android Training) - 使用Volley传输网络数据(Transmitting Network Data Using Volley)

    使用Volley传输网络数据(Transmitting Network Data Using Volley) Volley 是一个 HTTP 库,它使得在Android应用程序中操作网络更容易,是重要 ...

  7. vagrant虚拟化之多网卡网络配置

    vagrant虚拟化之多网卡网络配置 一.network改为public 二.查看本地主机网络的ip地址范围(最佳解决方案) 三.vagrant优秀博文 vagrant虚拟化之多网卡网络配置,通过am ...

  8. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  9. 专注于HTTP的高性能高易用性网络库:Fslib.network库

    博客列表页:http://blog.fishlee.net/tag/fslib-network/ 原创FSLib.Network库(目前专注于HTTP的高性能高易用性网络库) FSLib.Networ ...

随机推荐

  1. HDFS启动过程概述及集群安全模式操作

    1.启动过程概述 Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作.一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件 ...

  2. java jdk12,安装路径没有jre文件夹

    (平台备注:win10系统,自测) 1.造成原因:JDK11之后没有直接的jre,要用户选择jre模块 2.如果需要,执行以下步骤可生成: 2.1 进入jdk安装目录下, 2.2 点击shift+右键 ...

  3. 设计模式:单例模式(Singletion)

    单例模式(Singletion):保证一个类仅有一个实例,并提供一个访问该实例的全局访问点. 单例模式主要作用是保证唯一的实例,可以严格地控制客户端怎样访问该实例以及何时访问它.可以简单的理解为对唯一 ...

  4. 基本数据类型间的运算(不包括boolean)

    一 基本数据类型的间的运算  (不包括boolean) 1.自动类型提升 : 小容量的变量和大容量的变量做运算结果用大容量的变量的类型来接收. byte , short , char -> in ...

  5. 本地部署 Misago Docker + 配置 HTTPS 笔记

    最近答应帮朋友做个论坛网站,想借此机会捡起 Python 在 GitHub 找了一圈,打算借用以 Python+Django 开发的 Misago 这个论坛系统 由于作者在今年更新的 Misago 0 ...

  6. installsheild2011打包程序internal build error 6213

    今天打包一个安装程序,总是出现报错,internal build error -6213,然后搜遍都没有找到什么解决方案.看到一个帖子,说是因为installsheild里面的build的时候自动扫描 ...

  7. JavaScript高级笔记

    # 今日内容:     1. JavaScript:         1. ECMAScript:         2. BOM:         3. DOM:             1. 事件 ...

  8. vue传值(小demo)

    vue+element ui实现的.解释大多在代码中(代码臭且长,有错误请指正)-- 代码如下: <template>  <div class="userList" ...

  9. VirtualBox中安装CentOS 7

    1.如下所示图,点击“新建”,创建一个新的虚拟机 2.类型选择Linux,版本选择Red Hat,下一步 3.分配内存大小,电脑8G内存,所以分给虚拟机2G,选择下一步 4.选择“现在创建虚拟硬盘” ...

  10. GitHub 搭建博客,出现 hexo g -d 报错

    想搭建一个个人博客,但是在将博客推送到Github上的时候在git bash 下运行hexo g -d命令出现错误: 错误如下:  fatal: HttpRequestException encoun ...