Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 流浪汉韩元';t仅转发端口80_Macos_Centos_Firewall_Vagrant_Portforwarding - Fatal编程技术网

Macos 流浪汉韩元';t仅转发端口80

Macos 流浪汉韩元';t仅转发端口80,macos,centos,firewall,vagrant,portforwarding,Macos,Centos,Firewall,Vagrant,Portforwarding,我为流浪汉设置了港口转运 Vagrant.configure("2") do |config| config.vm.box = "centOS" config.vm.network :forwarded_port, guest: 80, host: 80 config.vm.network :forwarded_port, guest: 8443, host: 8443 config.vm.network :forwarded_port, guest: 8443, host: 9

我为流浪汉设置了港口转运

Vagrant.configure("2") do |config|
  config.vm.box = "centOS"
  config.vm.network :forwarded_port, guest: 80, host: 80
  config.vm.network :forwarded_port, guest: 8443, host: 8443
  config.vm.network :forwarded_port, guest: 8443, host: 9443
  config.vm.network :forwarded_port, guest: 8445, host: 8445
  config.vm.network :forwarded_port, guest: 8000, host: 8000 
  config.vm.hostname = "www.vagrant.com"
end
端口80已从“我的流浪者虚拟盒”打开

[vagrant@www ~]$ nmap -sT 0.0.0.0 -p 80 

Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-02 22:25 UTC
Nmap scan report for 0.0.0.0
Host is up (0.000063s latency).
PORT   STATE SERVICE
80/tcp open  http
但它是从我的主机关闭的

Ben-Fischer:~ bfischer$ nmap -sT 0.0.0.0 -p 80 

Starting Nmap 6.25 ( http://nmap.org ) at 2013-07-02 17:38 CDT
Nmap scan report for 0.0.0.0
Host is up (0.000086s latency).
PORT   STATE  SERVICE
80/tcp closed http
Ben-Fischer:~ bfischer$ sudo lsof -n -i4TCP:80 | grep LISTEN
[no output]
我的主机上的端口80上没有其他内容正在侦听

Ben-Fischer:~ bfischer$ nmap -sT 0.0.0.0 -p 80 

Starting Nmap 6.25 ( http://nmap.org ) at 2013-07-02 17:38 CDT
Nmap scan report for 0.0.0.0
Host is up (0.000086s latency).
PORT   STATE  SERVICE
80/tcp closed http
Ben-Fischer:~ bfischer$ sudo lsof -n -i4TCP:80 | grep LISTEN
[no output]
Iptables已关闭,我的mac防火墙也已关闭

[vagrant@www ~]$ sudo service iptables stop
所有其他转发端口都工作正常(844394484458000)

盒子是《流浪汉》中的一张图片,centOS 6.3和《厨师》


所以。。。为什么我不能从本地计算机连接到端口80?

我认为您不能转发到主机端口<1024,除非VirtualBox在主机上以
root运行

下面是关于NAT模式限制的说明:

转发主机端口<1024不可能

在基于Unix的主机(例如Linux、Solaris、Mac OS X)上,无法从非root运行的应用程序绑定到1024以下的端口。因此,如果您尝试配置这样的端口转发,VM将拒绝启动


这些限制通常不会影响标准网络使用。但是NAT的存在会产生微妙的影响,可能会干扰正常工作的协议。一个例子是NFS,其中服务器通常被配置为拒绝来自非特权端口(即1024以下的端口)的连接。

Terry的回答正确地诊断了这个问题。以下是我的解决方案:

不要以root用户身份运行VirtualBox,而是向前移植两次。设置流浪者将主机:8080转发给来宾:80。结合主机上的一些端口转发规则(使用ipfw实用程序),使80转到主机上的8080。然后8080将被发送回来宾机器上的80

看起来很复杂,但本文更清楚地描述了设置

使用ipfw的替代方法是SSH,我的机器(Arch Linux)上没有安装ipfw

如果您在客户机的端口80上运行Web服务器,那么可以使用SSH在后台运行端口转发

sudo ssh -p 2222 -gNfL 80:localhost:80 vagrant@localhost -i ~/.vagrant.d/insecure_private_key

更新:

ipfw
在OSX Mavericks之后已经被弃用。您应该改用
pfctl
。我写了一篇文章详细介绍了如何在这里实现这一点:


在Mac OS X上通过终端:

sudo ipfw将100 fwd 127.0.0.18080 tcp从任意添加到我80英寸


这将把127.0.0.1:80上的所有传入流量重定向到127.0.0.1:8080

您可以使用网桥适配器,然后指向本地ip地址,而不是使用本地主机。 由于这可能因主机而异(如使用中的本地ip地址等),因此我将把所有内容都放在一个外部
config.yml
文件中

#。。。
需要“yaml”
当前目录=File.dirname(File.expand\u路径(\uuuu File\uuu))
configs=YAML.load_文件(“#{current_dir}/config.yml”)
vagrant_config=configs['config'][configs['config']['use']]
VAGRANTFILE\u API\u VERSION=“2”
configure(Vagrant文件API版本)do | config|
# http://docs.vagrantup.com/v2/virtualbox/networking.html
config.vm.network vagrant\u config['vm']['network\u type'],
ip:vagrant_config['vm']['network_ip'],
网桥:vagrant_配置['vm']['network_bridge'],
virtualbox\uuuIntnet:vagrant\uConfig['vm']['network\uIntnet']
config.vm.network“转发的\u端口”,
嘉宾:80,,
主机:vagrant_配置['http_服务器]['host_端口']
# ...
遵循config.yml文件:

config:
用法:“公共”
private:#这是旧配置,不允许在端口80上转发
vb:
中央处理器:2
内存:4096
虚拟机:
网络类型:“专用网络”
网络ip:“192.168.33.10”
网络(intnet):对
网桥:“
同步文件夹:“/home/francesco/whatever/vagrant同步文件夹”
http_服务器:
主机端口:8080
public:#下面是允许您使用端口80的新桥接配置!
vb:
中央处理器:2
内存:4096
虚拟机:
网络类型:“公共网络”
网络ip:“192.168.1.123”
网络互连:错误
网络网桥:“eth0”#或您的适配器名称!
同步文件夹:“/home/francesco/whatever/vagrant同步文件夹”
http_服务器:
主机端口:80
然后只需转到
http://192.168.1.123:80/
:-)

OSX上流浪汉的端口转发:ipfw被折旧 在@sgarbesi的回应之后,ipfw确实在OSX小牛中贬值了。不幸的是,我无法访问他发布的解决方案,因为链接似乎已断开

但是,此处描述的解决方案归功于他:

为了完整起见,我将解决方案粘贴在这里,希望它能帮助某些人:

在虚拟机上设置端口转发 根据,将以下内容添加到您的文件:

config.vm.network“forwarded_port”,来宾:80,主机:8080
config.vm.network“forwarded_port”,来宾:443,主机:4443

安装流浪触发器 要安装vagrant触发器,您应该在终端窗口中导航到保存vagrant文件的文件夹,并运行以下命令:

vagrant插件安装vagrant触发器

使用Vagrant触发器自动启用端口转发 将以下内容添加到您的文件:

config.trigger.after [:provision, :up, :reload] do
      system('echo "
        rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080  
        rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 4443
  " | sudo pfctl -ef - > /dev/null 2>&1; echo "==> Fowarding Ports: 80 -> 8080, 443 -> 4443 & Enabling pf"')  
  end

  config.trigger.after [:halt, :destroy] do
    system("sudo pfctl -df /etc/pf.conf > /dev/null 2>&1; echo '==> Removing Port Forwarding & Disabling pf'")
  end

这会将端口80和443分别绑定到端口8080和4443(在提供流浪服务时),并在停止或销毁时重新装载和移除。请注意,OSX上默认情况下不启用pf,因此在添加启用pf的规则时传递-e标志,在删除端口转发时传递-d标志以再次禁用它。

您可以将端口转发配置到VirtualBox:

您的虚拟机->设置->网络->高级->端口转发


您可以在这里添加所需的端口。

我尝试使用sudo VirtualBox启动VirtualBox,但得到了相同的结果。知道为什么吗?我想这是因为vagrant运行的是一个无头的virtualbox实例,它不会以root身份运行它。请注意,至少在vagrant 1.4.1中,VM会启动,即使