Dan*_*ich 116 portforwarding vagrant
我正在开发一个Web服务架构.我有一些软件需要在本机主机上运行,而不是在Vagrant中运行.但我想在访客上运行一些客户服务.
Vagrant的config.vm.forwarded_port参数将打开主机上的端口并将数据发送给guest虚拟机.但是如何在guest虚拟机上打开端口并将数据发送给主机?(它仍然是端口转发,但反方向.)
wlr*_*chi 127
当你运行时vagrant ssh,它实际上使用这个底层命令:
ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o IdentitiesOnly=yes -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1
SSH支持使用该-R guestport:host:hostport选项按所需方向转发端口.因此,如果您想连接到12345guest 虚拟机上的端口并将其转发到localhost:80,请使用以下命令:
ssh -p 2222 -R 12345:localhost:80 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o IdentitiesOnly=yes -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1
正如Eero正确评论一样,您也可以使用该命令vagrant ssh -- -R 12345:localhost:80,该命令在更简洁的命令中具有相同的效果.
Min*_*gyu 97
在Vagrant: Up and Running由Vagrant的创建者撰写的书(Pub.date:2013年6月12日)中,他提到客户机无法访问在主机上运行的服务.
Forwarded Ports您可以使用设置专用网络而不是使用Host-Only Networks.
使用的优点Host-Only Networks在Forwarded Ports
来宾计算机可以访问主机上运行的服务
此功能可以解决您的问题.
来宾计算机可以访问在其他来宾计算机上运行的服务
此功能对于将服务分离到多台计算机上以更准确地模拟生产环境非常有用.
安全
外部计算机无法访问客户机上运行的服务
减少工作量
无需配置每一个 Forwarded Port
如何配置 Host-Only Networks
config.vm.network :"hostonly", "192.168.0.0" #Vagrant版本#1
config.vm.network :private_network, ip: "192.168.0.0" #Vagrant版本#2
在您的Vagrantfile意志中使用此行将指示vagrant创建具有静态IP地址的专用网络:192.168.0.0
主机的IP地址始终是相同的IP地址,但最终的八位字节为1.在前面的示例中,主机具有IP地址192.168.0.1.
Aje*_*i32 63
您可以通过来宾操作系统内的默认网关访问主机上的端口.(通常具有IP 10.0.2.2.)
例如,如果您的主机上有端口8000运行的Web服务器...
echo 'Hello, guest!' > hello
python -m SimpleHTTPServer 8000
Run Code Online (Sandbox Code Playgroud)
您可以从Vagrant VM内部访问它10.0.2.2:8000(提供的10.0.2.2是访客默认网关的IP):
vagrant ssh
curl http://10.0.2.2:8000/hello # Outputs: Hello, guest!
Run Code Online (Sandbox Code Playgroud)
要在guest虚拟机操作系统中查找默认网关的IP,请运行netstat -rn(或ipconfig在Windows guest虚拟机上)并查找目标IP为0.0.0.0(或Windows上标记为"Default Gateway"的字段)的行:
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.33.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Run Code Online (Sandbox Code Playgroud)
您可以使用以编程方式提取此IP netstat -rn | grep "^0.0.0.0 " | tr -s ' ' | cut -d " " -f2.
来源:如何从vagrant virtualbox机器连接主机PostgreSQL ; 从VirtualBox来宾操作系统连接到主机?
~/.ssh/config在主机上添加以下内容:
Host 127.0.0.1
RemoteForward 52698 127.0.0.1:52698
Run Code Online (Sandbox Code Playgroud)
只要您通过登录,它就允许您从Vagrant访问主机端口52698上的服务vagrant ssh.
您可以通过netstat -lt在vagrant VM上运行并在以下行中记录来确认它是否有效:
tcp 0 0 localhost:52698 *:* LISTEN
tcp6 0 0 ip6-localhost:52698 [::]:* LISTEN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41350 次 |
| 最近记录: |