如何根据源 IP 使用 Firewalld 进行端口转发

如何根据源 IP 使用 Firewalld 进行端口转发

我在端口 5678 上运行 ssh。

对于我的源 IP 地址 1.2.3.4 - 我想要连接到端口 22,并将防火墙端口转发到 5687。

没有其他源 IP 地址获得端口转发。

我应该输入什么防火墙命令行来实现这一点?

答案1

您只需创建一个防火墙规则以允许流量,然后为流量配置 NAT。本质上,您正在创建一个 ACL 来确定允许哪些流量,然后您正在制定 NAT 规则来规定应转换允许的流量。

firewall-cmd --permanent --zone=public --add-rich-rule="rule 
family="ipv4" \
source address="1.2.3.4/32" \
port protocol="tcp" port="22" accept"
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=5678:toaddr=*private translated IP address*
firewall-cmd --reload

如何在 CentOS 上使用 Firewall-cmd 为特定 IP 地址打开端口?

http://www.certdepot.net/rhel7-get-started-firewalld/

答案2

弄清楚了:

CUSTOMPORT=$(netstat -tlpn | grep 0.0.0.0.*ssh | cut -d: -f2 | cut -f1 -d\ )
SOURCE_IP=1.2.3.4
firewall-cmd --zone=public --permanent --query-masquerade
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --zone=public --permanent --add-rich-rule="rule family=\"ipv4\" source address=\"${SOURCE_IP}\" forward-port port=\"22\" protocol=\"tcp\" to-port=\"${CUSTOMPORT}\""
firewall-cmd --reload

相关内容