Mountain Lion 中的端口转发

Mountain Lion 中的端口转发

这肯定是可以做到的。我搜索过,发现很多答案都声称可以做我想做的事,但我似乎无法将它们整合在一起。所以...

我在 Mountain Lion 下运行 Linux 虚拟机。VM 运行 Apache。我需要将到达主机端口 80 的所有流量重定向到客户机的端口 80。我可以使用以下命令从主机访问 VM 的网站: http://192.168.100.2/

我还可以使用以下命令从本地网络上的其他机器访问默认的 Mountain Lion Apache 服务器: http://10.0.42.22/

(证明主机上的 80 端口是开放的。是的,我试过关闭 Mac OS 上的 Apache 安装,但没有成功)

我需要网络上的其他机器能够通过后一个地址(http://10.0.42.22/)访问在 VM 下运行的服务器。

我已经从主机尝试过 ipfw:

ipfw add 100 forward 192.168.100.2,80 ip from any to any 80 in

在我执行上述操作之后,本地网络上的机器尝试连接时超时,http://10.0.42.22/而不是到达 Mac OS“它起作用了!”屏幕,这告诉我发生了“某些事情”,但不幸的是,某些事情并不是转发给客户机的工作。

我还尝试添加到 /etc/pf.conf:

rdr on en1 inet proto tcp from any to any port 80 -> 192.168.100.2 port 80

其次是:

pfctl -f /etc/pf.conf

输出结果如下:

No ALTQ support in kernel ALTQ related functions disabled

这与我使用默认配置重新加载 pfctl 时得到的结果相同。这没有影响(本地网络上的机器会收到 Mac OS Apache 默认的“它工作正常!”屏幕)。我也尝试过同时使用上述两种方法,结果与仅使用 ipfw 技巧相同。

我已经阅读并尝试了 ipfw 和 pfctl 的许多组合,但没有一个得到任何不同的结果,或者看起来比我上面提到的更正确。

近二十年来,我一直使用 BSD 和各种 Linux 作为主机,但似乎无法让它与 Mac OS 主机配合使用。我希望我忽略了一些愚蠢和/或简单的事情,希望有人能指出它是什么。

答案1

您是否尝试过关闭 Mountain Lion Apache 实例并设置远程控制隧道例如

sudo bash
nohup ssh -L 80:192.168.100.2:80 -N -i ~someUser/.ssh/id_dsa [email protected] &

或者,也可以使用 Mountain Lion Apache 实例将代理请求反向发送到虚拟机,例如

ProxyRequests Off
ProxyPass        /  http://192.168.100.2/
ProxyPassReverse /  http://192.168.100.2/
<Proxy *>
  Order Deny,Allow
  Allow from all
</Proxy>

将以上内容粘贴到您的:/private/etc/apache2/httpd.conf 并重新启动 Apache。

答案2

我来晚了一点才回答你的问题。你的 ipfw 解决方案应该可以工作,但不是像你写的规则那样,而且由于你没有提供很多有关配置的信息,我猜你漏掉了几件事:

  • 您是否将 scopedroute 设置为 0(使用 sysctl)
  • 您是否将转发设置为 1(使用 sysctl)
  • 你激活了防火墙吗
  • 你在两个网络之间进行 nat
  • 你应该只转发来自本地网络的数据包,但目的地的 IP

相关内容