如何在VirtualBox中为NAT网络配置端口转发

时间:2020-01-09 10:37:45  来源:igfitidea点击:

在virtualbox命令行中配置端口转发。
virtualbox端口转发到主机。
virtualbox端口转发范围。
vmware端口转发。
virtualbox ssh连接被拒绝。
从另一台计算机ssh进入virtualbox。
vmware player端口转发。
从客户到主机的virtualbox端口转发。
ssh使用腻子从Windows到在virtualbox上运行的虚拟机。
在NAT网络的virtualbox中配置端口转发。
在oracle virtualbox中配置nat端口转发。

在Oracle VirtualBox中,我们有两种类型的NAT网络模式。

  • NAT

  • NAT网络

NAT很像路由器后面的专用网络,虚拟机是不可见的,并且无法从外部Internet到达。
除非设置端口转发,否则无法以这种方式运行服务器。

我将假定环境中已经安装了Oracle VirtualBox。

在VirtualBox中为NAT配置端口转发

在NAT模式下,默认情况下,来宾网络接口分配给IPv4范围10.0.x.0/24,其中x对应于NAT接口+2的实例。
因此,当只有一个NAT实例处于活动状态时,x为2. 在这种情况下,将访客分配给地址10.0.2.15,将网关设置为10.0.2.2,并且可以在10.0.2.3处找到名称服务器。

另请阅读:

如何使用桥接和NAT网络在VMware和VirtualBox中启用虚拟机并将其连接到Internet连接

在VirtualBox中配置或者更改默认NAT子网

该子网在内部为NAT联网模式定义。
我们还可以将此子网更改为自己的值。
可以使用WindowsBox上VirtualBox主目录下的Windows命令,为单个虚拟机更改默认NAT网络。

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "VM name" --natnet1 "192.168.100.0/24"

此命令将为" VM名称"的第一个NAT网络实例保留从192.168.100.0到192.168.100.254的网络地址。
访客IP将分配给192.168.100.15,默认网关位于192.168.100.2.

验证分配给我们接口的新IP地址

# ip addr show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:d5:cb:b6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.15/24 brd 192.168.100.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86138sec preferred_lft 86138sec
    inet6 fe80::a00:27ff:fed5:cbb6/64 scope link
       valid_lft forever preferred_lft forever

在VirtualBox中将NAT子网值还原为默认值

再次删除对NAT网络的自定义更改并恢复为默认子网

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "VM name" --natnet1  default

使用CLI配置NAT的端口转发

提示:

其中来宾是指我的Linux虚拟机位于oracle VirtualBox上,而主机将是我其中安装了VirtualBox软件的Windows笔记本电脑。

添加具有DHCP CLient IP的来宾的端口转发规则

我们将需要知道该服务在来宾上使用的端口,并决定要在主机上使用哪些端口。
我们可能要在客户机和主机上使用相同的端口。
我们可以使用主机上尚未被服务使用的任何端口。

例如,要在来宾中建立到ssh服务器的入站NAT连接,请使用以下命令:

C:>cd C:Program FilesOracleVirtualBox

重要的提示:

在VirtualBox中配置端口转发之前,虚拟机必须处于关机状态

导航到VirtualBox主目录后,执行以下命令以配置VirtualBox中用于NAT的端口转发

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "CentOS8" --natpf1 "centos8,tcp,,2222,,22"

在上面的示例中,任何主机接口上到达端口2222的所有TCP通信都将转发到来宾中的端口22. 协议名称tcp是必填属性,用于定义应使用哪种协议进行转发,也可以使用udp。
名称centos8纯粹是描述性的,如果省略,它将自动生成。
与其他VBoxManage命令一样,"-natpf"后的数字表示网卡。

要删除此转发规则,请使用以下命令:

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "CentOS8" --natpf1 delete "centos8"

为具有静态IP的访客添加端口转发规则

如果由于某种原因,来宾使用了未从内置DHCP服务器租用的静态分配的IP地址,则在注册转发规则时需要指定来宾IP,如下所示:

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"

此示例与上一个示例相同,不同之处在于,它被告知NAT引擎可以在10.0.2.19地址找到该来宾。

要将所有传入流量从特定主机接口转发到来宾,请按以下方式指定该主机接口的IP:

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"

此示例将所有通过端口2222到达本地主机接口的127.0.0.1处的TCP通信通过端口2222转发到来宾中的端口22.

使用GUI配置NAT的端口转发

我们还可以使用"虚拟机"的"设置"页面在VirtualBox中配置端口转发。

  • 从Oracle Virtual Box的顶部面板菜单中单击"计算机",然后选择"设置"。

  • 接下来,从左侧面板菜单中选择"网络"

  • 选择我们要用来在VirtualBox中配置端口转发的适配器

  • 点击"高级"

  • 接下来单击"端口转发"以配置规则。
    其中我们可以添加/修改/删除相应虚拟机的端口转发规则

  • 单击窗口左侧面板上的"加号",然后根据要求添加规则。

  • "名称"可以是任何名称,"协议"可以是TCP或者UDP,具体取决于我们打算在客户机上使用的端口类型,"主机端口"可以是主机上可用的任何可用端口,"来宾端口"是端口我们希望从主机连接到的主机

  • 在此示例中,我们正在执行端口转发以使用SSH并连接到来宾Linux计算机

另请阅读:

16个ip命令示例,用于配置网络接口(备忘单)

在VirtualBox中为NAT网络配置端口转发

网络地址转换(NAT)服务的工作方式与家用路由器类似,将使用该服务的系统分组到一个网络中,并防止该网络外部的系统直接访问其内部的系统,但允许内部的系统相互通信并与之通信。
外部系统使用基于IPv4和IPv6的TCP和UDP。

使用CLI配置NAT网络的端口转发

要创建NAT网络,请首先导航至VirtualBox的主目录:

C:>cd C:Program FilesOracleVirtualBox

接下来,创建一个新的NAT网络,并使用子网值启用该网络。

C:Program FilesOracleVirtualBox>VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable

此处," natnet1"是要使用的内部网络的名称,而" 192.168.15.0/24"是NAT服务接口的网络地址和掩码。
默认情况下,在此静态配置中,将为网关分配地址192.168.15.1,该地址位于接口地址之后,但是此地址可能会更改。

要将DHCP服务器连接到内部网络,请修改示例命令,如下所示:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable --dhcp on

要将DHCP服务器添加到现有网络,请使用以下命令:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork modify --netname natnet1 --dhcp on

要禁用DHCP服务器,请使用以下命令:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork modify --netname natnet1 --dhcp off

要启动NAT服务,请使用以下命令:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork start --netname natnet1

如果网络连接了DHCP服务器,则它将与NAT网络服务一起启动。

要停止NAT网络服务以及所有DHCP服务器,请执行以下操作:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork stop --netname natnet1

删除NAT网络服务:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork remove --netname natnet1

如果在内部网络上启用了DHCP服务器,则该命令不会删除DHCP服务器。

支持端口转发,对IPv4使用--port-forward-4开关,对IPv6使用--port-forward-6
例如:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:[]:1022:[192.168.15.5]:22"

这会将端口转发规则从主机的TCP 1022端口添加到IP地址为192.168.15.5的客户机上的端口22. 主机端口,来宾端口和来宾IP是必填项。

要删除规则,请使用以下命令:

C:Program FilesOracleVirtualBox>VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete ssh

使用GUI配置NAT网络的端口转发

我们还可以选择将NAT网络作为Oracle VirtualBox中的网络模式。
但是,在选择Nat Network之前,我们必须拥有一个网络,虚拟机将使用该网络获取DHCP租用的IP。

为NAT网络创建网络

  • 从顶部面板菜单中单击"文件",然后选择"首选项"

  • 接下来,从左侧面板菜单中选择"网络"

  • 在右侧面板上,我们将获得创建NAT网络的选项。

  • 单击"加号"以添加新的NAT网络。
    接下来选择新创建的NAT网络,然后单击描述"编辑所选NAT网络"的按钮。

  • 我们可以在此处更改NAT网络名称,并分配用于该网络的子网值

  • 单击"支持DHCP"以启用DHCP租约

  • 单击"端口转发"以在VirtualBox中配置端口转发

在"网络"下为规则命名,根据计划从访客转发的端口,使用TCP或者UDP作为"协议","主机IP"可以是127.0.0.1或者保留为空白,"主机端口"可以是主机未使用的任何端口,来宾IP是来宾计算机使用的IP,来宾端口是我们希望从来宾节点使用的端口。

其中我从来宾Linux VM创建了端口22(SSH)的端口转发规则