我在同一个网络接口上有两个 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...
。