如何在同一网络接口上配置 2 个 IP 地址以允许特定 IP 访问特定端口?

如何在同一网络接口上配置 2 个 IP 地址以允许特定 IP 访问特定端口?

我在同一个网络接口上有两个 IP 地址:192.168.1.100 和 192.168.1.101。我希望能够通过 192.168.1.100 访问 SSH,通过 192.168.1.101 访问 HTTP。我使用 Debian 9.8 和 Firewalld 来控制防火墙。

以下是当前区域配置。

区域:公共

root@server ~ # firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.1.100
  services: ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

区域:特殊

root@server ~ # firewall-cmd --list-all --zone=special
special(active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.1.101
  services: http
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

重新加载防火墙

root@server ~ # firewall-cmd --reload

由于某种原因,我能够通过 92.168.1.100 和 192.168.1.101 访问 SSH,但无法从 192.168.1.100 和 192.168.1.101 访问 HTTP。

请帮忙。

答案1

我不熟悉firewalld选项格式。但在我看来,规则允许从服务器的 IP 地址192.168.1.100到 SSH 的连接,以及从服务器的 IP 地址192.168.1.101到 HTTP 的连接。

destination如果您确实想使用防火墙方式来实现这一点,那么您应该使用该地址。

然而,这里最好的方法是将服务绑定到不同的端口。

答案2

我希望能够通过 192.168.1.100 访问 SSH,并通过 192.168.1.101 访问 HTTP。

您也可以简单地将 SSH 服务器绑定到 192.168.1.100,可能通过/etc/ssh/sshd_config文件, 环境ListenAddress 192.168.1.100

您可以让 HTTP 服务器绑定到 192.168.1.101,可能在名为 的配置文件中/etc/httpd/conf/httpd.conf,假设是一个 Apache HTTP 服务器,您可以Listen 192.168.1.101:80在其中设置Listen 80

这可能会产生一些不想要的副作用,例如阻止您通过localhost/127.0.0.1之类的方式访问服务器http://localhost/path/to...

相关内容