zoukankan      html  css  js  c++  java
  • 如何在Vagrant中配置网络

    Vagrant之所以受到开发者和DevOps工程师的欢迎,是因为他们可以在本地系统上继续使用现有的开发工具(如编辑器、浏览器、调试器等)。例如,开发人员可以将客机上的文件同步到本地系统,使用他们最喜欢的编辑器来编辑这些文件,最后再同步回客机上。同样,如果他们在虚拟机上创建了一个Web应用程序,他们可以从本地系统的Web浏览器访问和测试该应用程序。在本指南中,我们将看到如何在Vagrant中配置网络,以提供从本地主机系统访问客人机的功能。
    在Vagrant中配置网络
    Vagrant提供以下三种网络选择:
    1、端口转发
    2、专用网络(仅主机网络)
    3、公共网络(桥接网络)
    1、配置端口转发
    默认情况下,我们可以使用ssh通过ssh访问Vagrant VM vagrant ssh。当我们通过SSH访问VM时,Vagrant将端口22从来宾计算机转发到主机中的开放端口。这称为端口转发。Vagrant会自动处理此端口转发过程,而无需任何用户干预。您还可以转发您选择的特定端口。例如,如果将来宾计算机中的端口80转发到主机上的端口8080,则可以通过导航到主机上的http://localhost:8080来访问Web服务器。
    可以在“ Vagrantfile”中配置端口转发。转到您的Vagrant项目目录,然后在您喜欢的编辑器中打开Vagrantfile。
    找到以下行:
    Vagrant.configure("2") do |config|
    [...]
    # config.vm.network "forwarded_port", guest: 80, host: 8080
    end
    取消注释,并定义将哪些端口转发到哪里。在此示例中,我将来宾中的端口80转发到主机中的端口8080。
    Vagrant.configure("2") do |config|
    [...]
    config.vm.network "forwarded_port", guest: 80, host: 8080
    end

    现在,使用更新的Vagrantfile重新启动Vagrant计算机:
    $ vagrant reload --provision
    您将在输出中看到配置了端口转发:

    您也可以销毁VM,然后使用更新的Vagrantfile重新运行它:
    $ vagrant destroy <VM-name>
    $ vagrant up
    现在,使用以下命令SSH登录到客户机:
    $ vagrant ssh
    在其中安装Apache Web服务器。如果虚拟机基于Deb,请运行:
    $ sudo apt install apache2
    如果是基于RHEL的系统,请运行以下命令:
    $ sudo yum install httpd
    启动Apache服务:
    $ sudo systemctl enable --now httpd
    现在,在主机系统中打开Web浏览器,然后从浏览器导航到http://localhost:8080地址。您将在浏览器上看到Apache测试页。

    即使我们在主机系统中使用URLhttp://localhost:8080访问Web服务器,也不会从本地Web服务器提供该服务器。来宾虚拟机正在提供实际的网站(即Apache测试页),并且所有实际的网络数据都将发送给来宾。
    1.1、如果另一个应用程序正在使用端口8080,该怎么办?
    在前面的示例中,我们将端口80从来宾转发到主机中的端口8080。换句话说,发送到端口8080的流量实际上已转发到客户机上的端口80。如果其他应用程序当前正在使用端口8080怎么办?运行多个虚拟机时发生端口冲突。您可能在不知不觉中转发了已使用的端口。别担心!Vagrant具有检测端口冲突的内置支持。如果该端口已被其他应用程序使用,则Vagrant会在输出中报告该端口,因此您可以释放该端口或使用其他端口。
    Vagrant也足够智能,可以自动查找和纠正端口冲突。如果发现某个端口与另一个端口冲突,它将通过使用任何其他未使用的端口来自动更正它。
    要启用自动校正,请auto_correct: true在Vagrantfile的端口转发定义中添加一个附加选项。
    Vagrant.configure("2") do |config|
    [...]
    config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true end
    默认情况下,Vagrant将在端口2200和端口2250之间选择自动校正端口。您还可以通过在Vagrantfile中定义以下行来选择自己的自定义范围,如下所示。
    config.vm.usable_port_range = (2200..2250)
    重新启动Vagrant机器以使更改生效:
    1.2、更改网络协议
    默认情况下,Vagrant使用TCP协议进行端口转发。但是,如果要转发UDP数据包,则可以使用UDP协议。要使用UDP端口,请在Vagrantfile中添加以下定义:
    config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true protocol: "udp"
    重新启动Vagrant VM,以使更改生效。
    2、配置专用网络
    在专用或仅主机网络中,将在主机系统和主机系统上的VM之间创建网络连接。专用网络是使用对主机操作系统可见的虚拟网络适配器创建的。网络上的其他系统无法与VM通信。主机系统中允许所有网络操作。
    专用网络还可以充当DHCP服务器,并具有自己的子网。专用网络中的每个VM将从该IP空间获得一个IP地址。因此,我们可以使用主机系统中的IP直接访问VM。
    要使用静态IP地址在Vagrant中配置专用或仅主机网络,请打开Vagrantfile,找到以下行并将其取消注释。
    config.vm.network "private_network", ip: "192.168.121.60"
    在这里,192.168.121.60是虚拟机的IP地址。用您自己的IP替换它。
    重新启动VM,以使更改生效。
    如果要通过DHCP自动设置IP地址,请按如下所示修改专用网络定义:
    config.vm.network "private_network", type: "dhcp"
    将为虚拟机分配一个随机IP地址。为了找到虚拟机的IP,您需要使用vagrant sshcommand SSH进入它,然后使用command找到它的IP地址ip。
    3、配置公共网络
    在公共或桥接网络中,所有VM都将与您的主机位于同一网络中。每个VM将从DHCP服务器(如果在本地网络中可用)接收其自己的IP地址。因此,所有VM都将像网络上的另一个物理系统一样工作,并且它们可以与网络中的任何系统进行通信。
    要配置公共或桥接网络,请编辑Vagrantfile,找到以下行并取消注释:
    config.vm.network "public_network"
    保存并关闭文件。重新启动VM以应用更改。VM将自动获取IP地址。
    如果要设置静态IP,只需修改网络定义,如下所示:
    config.vm.network "public_network", ip: "192.168.121.61"
    4、设置主机名
    您可以使用config.vm.hostname Vagrantfile中的设置定义主机名 。
    在您喜欢的编辑器中编辑Vagrantfile并添加/修改以下行:
    config.vm.hostname = "myhost.ostechnix.example"
    保存并关闭文件。上面的定义将myhost.ostechnix.example 在/etc/hosts文件中添加行。
    重新启动Vagrant VM,以使更改生效。
    验证主机名是否已更改:
    [vagrant@myhost ~]$ hostname -f
    myhost.osechnix.example
    您也可以直接检查/etc/hosts文件的内容。
    $ cat /etc/hosts
    样本输出:
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    127.0.1.1 myhost.osechnix.example myhost
    5、启用多个网络选项
    每个网络选项都有其自身的优势和劣势。由于某些原因,您可能希望将所有网络选项配置到单个VM。如果是这样,Vagrant可以启用多个网络选项。您所要做的只是在Vagrantfile中一个接一个地定义网络选项,如下所示:
    config.vm.hostname = "myhost.ostechnix.example"
    config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true
    config.vm.network "private_network", ip: "192.168.121.60"
    使用此Vagrantfile创建新的VM时,vagrant将创建具有以下网络详细信息的VM:
    将主机名设置为myhost.ostechnix.example
    配置端口转发
    用静态IP 192.168.121.60配置一个私有网络
    除了配置多种类型的网络外,我们还可以定义多种网络。例如,您可以定义多个具有不同IP地址的仅主机网络,如下所示。
    config.vm.network "private_network", ip: "192.168.121.60"
    config.vm.network "private_network", ip: "192.168.121.61"
    在此阶段,您可能已经从命令行获得了有关Vagrant网络类型以及如何在Vagrant中配置网络的基本概念。还有更多的东西要学习。我建议您查看Vagrant的官方文档以获取更多详细配置。

    A5互联https://www.a5idc.net/

  • 相关阅读:
    数据库生成连续编号 前几位为零
    C#中图片与BASE64码互相转换
    C#基于Socket的CS模式的完整例子
    一个公共类
    HttpCookie 操作Cookie
    C#打包SQL数据库部署安装
    <转>遍历 进程 内的内核对象
    《windows核心编程》–Windows内存体结构(二)
    《windows核心编程》–Windows内存体结构(一)
    《windows 核心编程》 探索虚拟内存
  • 原文地址:https://www.cnblogs.com/a5idc/p/13594370.html
Copyright © 2011-2022 走看看