这几天折腾iptables,我使用了一个路由器,一台linux作为网关,一个windows主机。三台机器用交换机相连。我要实现的目标是,windows的网关指向linux主机,用iptables来限制上网。
原本按照iptables的理论,转发的数据应该只通过FORWARD链。于是我只要INPUT和FORWARD做了限制,默认为DROP,允许了一些自己认可的端口通过,OUTPUT默认为ACCEPT。这原本就是一个很标准的过滤。但是真正应用的时候,问题出现了,FORWARD链的过滤根本没有起作用。只有把OUTPUT改为DROP才能起作用。百思不得其解之时,我查看了一下windows的路由表。居然神奇地发现,路由表中居然把我请求过的目的地址的下一跳直接改成了我的路由器。即,只要我访问了一次,那么第二次他们根本就不会从我的linux通过。