使用 FreeBSD/pf 根据主机名路由 ssh 流量?

使用 FreeBSD/pf 根据主机名路由 ssh 流量?

我有一台运行 FreeBSD 9 的代理/防火墙机器,使用 PF 根据需要路由和过滤流量。

现在我正在设置一个通过 ssh 运行的 git 服务器,但我已经将端口 22 用于 ssh。如果用于访问服务器的主机名是子域 (git.mydomain.com),我想将流量从任何 IP 路由到端口 22 再到另一台机器。有点像虚拟主机,但对于 ssh...

使用 pf 可以实现吗?有什么建议吗?

答案1

抱歉,您要求的是不可能的——IP 流量(和 IP 防火墙)只知道 IP 地址——它对主机名一无所知。

您只能让一个进程监听特定 IP 地址上的特定端口。网站的虚拟主机之所以能工作,是因为 Web 服务器在 HTTP 标头中接收主机名(请参阅http://en.wikipedia.org/wiki/Virtual_hosting),而SSH中并没有类似的机制。

你的选择非常有限:

  1. 配置您的常规 SSH 服务器来处理 git 流量(可能是最好的选择)。
  2. 获取另一个 IP 地址。
  3. 在备用端口上运行 git 的 SSH 服务器。

一旦您在备用端口上拥有用于 git 的 SSH 服务器,您就可以通过将以下内容添加到您的来自动使用它~/.ssh/config

Host git.mydomain.com
    HostName router.mydomain.com
    Port 2222

答案2

如果是同一台机器,那么只需将 git.example.com 指向它就可以了。

相关内容