前面说了iptables的有关概念和隐式扩展和显示扩展。有那么多的模块加载进去。可以实现限流,限最大连接数等等控制。
下面就要说说iptables的日志等内容。
前面博客的地址(一):学习笔记之Iptables(一)(二):学习笔记之iptables(二)
1.iptables的日志功能
防火墙日志可以清楚记录网络上来的任何访问。并生成日志记录下来。比如说,我要记录都有谁ping了我。
--log-prefix是指定一个提示字符串。
日志内容可以看到
2.nat及其过滤报文功能
我们知道,想要访问互联网就必须拥有一个公有IP,像192.168.1.12这样的IP是不能用来访问互联网的,因为路由器根本不会路由这样的IP地址。那么就必须将一个私有IP转换为一个公有IP才可以。因为全球IP地址的匮乏,所以nat还是很常见的。
在内核层面有一个ip_forward ,开启后则实现了IP地址的转发。这只是将一个网卡接收到的信息转发至另一个网卡。也就是想要转换IP地址还需要设置防火墙策略。
如果开启了ip_forward和开启了地址伪装。那么这台主机就可以当作一个网关。
-j SNAT --to-source 可以修改其原地址 (原地址转换要在POSTROUTIN上做)
[root@www Templates]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.25.254.10
这样就可以将双网卡中处于192.168.1.0这个网段内的报文转换为172.25.254.10 以实现192.168.1.0这网段内的主机可以访问172.25.254.0这个网段内的主机(当然192.168.1.0这网段的主机要把网关改成那个双网卡的那个主机)
假如现在是ADSL拨号上网。给分配的IP为123.123.1.22
那么其实我在我的linux主机上执行命令
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j SNAT --to-source 123.123.1.22
或者直接
-j MSQUERADE 就不用SNAT了,他也是一种原地址转换。
SNAT情况下如果当ADSL给的地址变了,就会导致SNAT那个iptables策略失效。而MSQUERADE是自动的转换原地址的。
而NAT的确实现了地址转换。但如果我作为网关,我只为内网主机访问WEB做地址转换怎么办呢。也就是说,内网用户只能访问外网的网站,不能访问FTP,DNS等等服务。
这就需要在FOREARD上添加策略了
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
DNAT 的场景
比如,我内网有好几台主机,有做ftp服务器的,有做web服务器的。我们知道,作为服务器一定需要有一个公有IP地址。但只有一个公有IP,难道将网关建立成一个服务器吗?
不!网关既要向内网用户提供上网服务,又要当服务器,会给网关造成很大的压力。所以需要一个DNAT。我告诉大家,访问WEB服务就访问123.12.1.23(网关)。网关接到请求后会目标地址转换。转换后转给一个内网主机。这样。其实网关并没有WEB服务。但是却可以访问网关的IP的WEB服务。
DNAT一般要用在PREROUTING也就是路由决策之前
iptables -t nat -A PREROUTING -d 172.25.254.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.12