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

kba*_*man 1 freebsd firewall ssh routing pf

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

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

这可能与 pf 吗?有什么建议?

vor*_*aq7 5

抱歉,您要求的是不可能的——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
Run Code Online (Sandbox Code Playgroud)