iptables -J动作总结

1、iptables常见动作

  • ACCEPT
  • DROP
  • REJECT
  • LOG
  • SNAT
  • DNAT
  • MASQUERADE
  • REDIRECT

2、iptables常见动作用法

2-1、ACCEPT:

作用:用于接收匹配的流量,使得流量继续往后面的规则和链路去匹配

2-2、DROP

作用:用于丢弃匹配的流量,使得流量不再往后面的规则和链路去匹配

2-3、REJECT

作用:用于拒绝匹配的流量,同时回复拒绝的原因,一般用于拒绝且需要设置提示信息的场景,当对方被拒绝时,会提示对方为什么被拒绝。

REJECT动作的常用选项为–reject-with:

  • icmp-net-unreachable
  • icmp-host-unreachable
  • icmp-port-unreachable,
  • icmp-proto-unreachable
  • icmp-net-prohibited
  • icmp-host-pro-hibited
  • icmp-admin-prohibited
  • tcp-reset

当不设置任何值时,默认值为icmp-port-unreachable。

2-4、LOG

作用:可以将符合条件的报文的相关信息记录到日志中,但当前报文具体是被”接受”,还是被”拒绝”,都由后面的规则控制。LOG动作只负责记录匹配到的报文的相关信息,不负责对报文的其他处理,如果想要对报文进行进一步的处理,可以在之后设置具体规则,进行进一步的处理。

查看iptables LOG日志:

LOG动作会将报文的相关信息记录在/var/log/message文件中,当然,我们也可以将相关信息记录在指定的文件中,以防止iptables的相关信息与其他日志信息相混淆,修改/etc/rsyslog.conf文件(或者/etc/syslog.conf),在rsyslog配置文件中添加如下配置即可:

#vim /etc/rsyslog.conf
kern.warning /var/log/iptables.log

加入上述配置后,报文的相关信息将会被记录到/var/log/iptables.log文件中。
完成上述配置后,重启rsyslog服务(或者syslogd):service rsyslog restart

LOG动作也有自己的选项,常用选项如下:

  • –log-level选项可以指定记录日志的日志级别,可用级别有:emerg,alert,crit,error,warning,notice,info,debug。
  • –log-prefix选项可以给记录到的相关信息添加”标签”之类的信息,以便区分各种记录到的报文信息,方便在分析时进行过滤。
2-5、SNAT

作用:网络内部的主机可以借助SNAT隐藏自己的IP地址,同时还能够共享合法的公网IP,让局域网内的多台主机共享公网IP访问互联网。

2-6、DNAT

作用:只有一个公网IP,但内网中却有很多服务器提供各种服务,我们想要通过公网访问这些服务使用DNAT即可。利用DNAT,将客户端发送过来的报文的目标地址与端口号做了映射,将访问服务的报文转发到了内网中特定服务

2-7、MASQUERADE

作用:SNAT,也就是源地址转换。当我们对外每次分配的IP地址往往不同,不会长期分给我们一个固定的IP地址,如果这时,想要让内网主机共享公网IP,就会很麻烦,因为每次IP地址发生变化以后,我们都要重新配置SNAT规则。通过MASQUERADE即可解决这个问题,MASQUERADE会动态的将源地址转换为可用的IP地址,其实与SNAT实现的功能完全一致,都是修改源地址,只不过SNAT需要指明将报文的源地址改为哪个IP,而MASQUERADE则不用指定明确的IP,会动态的将报文的源地址修改为指定网卡上可用的IP地址。可以把MASQUERADE理解为动态的、自动化的SNAT,如果没有动态SNAT的需求,没有必要使用MASQUERADE,因为SNAT更加高效。

2-8、REDIRECT

作用:使用REDIRECT动作可以在本机上进行端口映射

比如,将本机的80端口映射到本机的8080端口上

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080

3、注意点

  • 如果想要NAT功能能够正常使用,需要开启Linux主机的核心转发功能:
    echo 1 > /proc/sys/net/ipv4/ip_forward