如何使用firewalld实现替代SSH本地转发的端口转发规则?
如何使用firewalld实现替代SSH本地转发的端口转发规则?
没问题,我来帮你把原来的SSH本地转发规则转换成firewalld的配置,完美满足你的合规需求!
原来的SSH命令ssh -L 0.0.0.0:9944:localhost:9922 localhost -N是把所有发往服务器9944端口的TCP请求,转发到本地的9922端口。用firewalld实现同样的效果,只需要几步:
首先,确保firewalld的地址伪装(masquerade)功能开启,这是端口转发必需的NAT基础:
# 临时生效(重启后失效) firewall-cmd --add-masquerade # 持久化配置(重启后依然生效) firewall-cmd --permanent --add-masquerade接下来添加端口转发规则,把9944端口的TCP流量转发到本地127.0.0.1的9922端口:
# 临时生效 firewall-cmd --add-forward-port=port=9944:proto=tcp:toport=9922:toaddr=127.0.0.1 # 持久化配置 firewall-cmd --permanent --add-forward-port=port=9944:proto=tcp:toport=9922:toaddr=127.0.0.1最后重新加载firewalld,让所有新规则立即生效:
firewall-cmd --reload
如果之后发现外部无法访问9944端口,可以额外添加一条入站允许规则(有些场景下firewalld不会自动为转发端口开放入站权限):
firewall-cmd --add-port=9944/tcp firewall-cmd --permanent --add-port=9944/tcp firewall-cmd --reload
这样配置完成后,就和你原来的SSH转发效果完全一致了,而且不需要依赖SSH进程运行,更符合合规要求~
备注:内容来源于stack exchange,提问作者Samul
相关产品推荐
相关产品推荐

