假设某人A计算机发送一条指令请求想到一台B远程计算机,最先通过的是PREOUTING进来,这个PREOUTING在这里担当的作用是(目的地址转换,要把别人的公网IP换成你们内部的IP,才让访问到你们内部受防火墙保护的机器),简单的说A发送的是一条按自己规则的一条ip指令请求,而A并不知道B计算机的内部的IP指令是什么样子的,为了让这条指令能成功到达B,所以这里PREOUTING要做一个转换B计算机能读懂的指令,这里除了这个功能还有一个功能就是可以拦截一些网站,你可以定义在PREOUTING节点定义国外某某4366网站不能访问。
这条指令成功进来之后会进入黄色部分这一部分是路由器,路由器有可能连接多台计算机,在这里他要判断你这个指令是请求谁的,是B还有可能是C,这里他就要解析,如果你是转发给另外一台计算机C,他就会FORWARD转发出去不会进一步解析或者加规则,当然这里可以发现进来有一个PREOUTING出去也有PREOUTING有名一个问题,一条指令进来和出去都需要通过双层指令才能通过,满足其中一条指令是不能通过的。至于INPUT和OUTPUT都是进一步解析和加规则。
这是一条大概一个指令发送到回来。这里我们发现5个节点都有对应规则,上图左侧就是对应字段和加规则。
学习第一条指令查看本机关于IPTABLES的设置情况:
iptables -L –n
第二条指令清除现在filter的规则:
sudo iptables -t filter -D OUTPUT 1
第三条指令首先允许所有的包,然后再禁止有危险的包通过放火墙:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t filter -A OUTPUT -p tcp -j LOG 增加一条规则给OUTPUT做日志
iptables -t filter -A OUTPUT -p tcp -j LOG --log-prefix changtao 日志加前缀
日志在哪里看:
cd /var/log/
tail -f kern
案例:可以看到changtaoIN=:
Jul 6 21:14:22 localhost kernel: : changtaoIN= OUT=eth1 SRC=121.40.199.9 DST=112.28.144.42 LEN=296 TOS=0x10 PREC=0x00 TTL=64 ID=882 DF PROTO=TCP SPT=40022 DPT=49218 WINDOW=223 RES=0x00 ACK PSH URGP=0