firewalld: 端口转发

一,操作允许ip伪装

1,# 允许防火墙伪装IP

[root@blog ~]# firewall-cmd --add-masquerade --permanent
success 

效果:

[root@blog ~]# more /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not 
  harm your computer. Only selected incoming connections are accepted.</description>
  <port port="80" protocol="tcp"/>
  <masquerade/>
  <rule family="ipv4">
    <source address="1.2.3.4"/>
    <accept/>
  </rule>
  ...

可以看到public.xml中已添加了<masquerade/>一项

 

2,检查是否允许伪装ip

[root@blog ~]# firewall-cmd --query-masquerade
no

上面的命令添加了masquerade,需要reload后可以生效:

[root@blog ~]# firewall-cmd --reload
success
[root@blog ~]# firewall-cmd --query-masquerade
yes

可以看到reload后,生效了:

用list-all命令查询:

[root@blog ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services:
  ports: 80/tcp
  protocols:
  masquerade: yes
  ...

当我们设置了masquerade时,会自动打开ip_forward一项,而此项linux默认是关闭状态

[root@blog ~]# cat /proc/sys/net/ipv4/ip_forward
1

3,# 禁止防火墙伪装IP

[root@blog ~]# firewall-cmd --remove-masquerade
success

查询效果:

[root@blog ~]# firewall-cmd --query-masquerade
no

用list-all命令查询:

[root@blog ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services:
  ports: 80/tcp 36888/tcp
  protocols:
  masquerade: no

说明:此处没有加permanent参数,大家要么手动从public.xml文件中删除,要么执行 --permanent

 二,端口转发

1,例子:把15432转发到80

[root@blog zones]# firewall-cmd --add-forward-port=port=15432:proto=tcp:toport=80 --permanent
success
[root@blog zones]# firewall-cmd --add-forward-port=port=15432:proto=tcp:toport=80
success 

查看配置文件:

[root@blog zones]# more public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not 
  harm your computer. Only selected incoming connections are accepted.</description>
  <port port="80" protocol="tcp"/>
  <masquerade/>
  <forward-port port="15432" protocol="tcp" to-port="80"/>

此时从浏览器访问15432端口,会访问到80端口

2,把到指定端口的访问,使访问到另一机器的80端口

[root@blog zones]# firewall-cmd --add-forward-port=port=14322:proto=tcp:toaddr=1.2.3.4:toport=80
success

查看配置文件:

<masquerade/>
<forward-port port="14322" protocol="tcp" to-port="80" to-addr="1.2.3.4"/>

 三,,补充:--permanent的用途

firewall-cmd --permanent不会立即生效。‌

firewall-cmd命令的--permanent选项用于将配置设置为持久化,‌即将配置写入配置文件中,‌这样即使系统重启,‌配置仍然有效。‌
然而,‌这意味着配置不会立即生效,‌而是需要在下次系统启动或手动重新加载防火墙配置后才会生效。‌
如果不加--permanent选项,‌命令则会对当前运行的防火墙实例立即产生影响,‌
但这种影响不会保存到配置文件中,‌因此不会在系统重启后保持。‌

四,其他支持实现端口转发的软件:

ssh

rinetd

ncat

socat

portmap

portfwd

以上6个较常用

posted @ 2024-08-12 15:25  刘宏缔的架构森林  阅读(182)  评论(0编辑  收藏  举报