般LINUX(iptalbes)运用无非是用nat 表(PREROUTING、OUTPUT、POSTROUTING)和filter表(FORWARD、INPUT、OUTPUT)我们只有知道了数据流向才能正确配置现用个相对比较直观图形解释数据走向(此处只作最基本iptables数据流走向介绍说明)
>
上图是你家蓝色圈是你家院子有两扇大门①⑥进出你家有两个房间分别为eth0和 eth1房间每个房间有两个门可以进出②③④⑤旁边是张 3和李 4家张 3家和李 4家的间往返必须要过你家院子
现假设eth0网卡IP为:192.168.5.1链接内网eth1网卡IP为:218.100.100.111链接互连网
再假设“张 3家”为个局域网“李 4家”为互连网进我家院子用PREROUTING出我家院子用FORWARD进我家门用INPUT出我家门用OUTPUT(当我们操作是征对本身而言话如SSH操作此时肯定会用到PREROUTING、INPUT和OUTPUT当数据只是通过去访问别机器时会用到PREROUTING和FORWARD)
又假设默认这 6个门都是关生成如下代码
###########################################################################
*nat
################################
:PREROUTING DROP [0:0]
:OUTPUT DROP [0:0]
:POSTROUTING DROP [0:0]
################################
-F
-Z
-X
### 以后要新增语句请在此处增加
-L –v
COMMIT
################################################
*filter
##############################
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
##############################
-F
-Z
-X
### 以后要新增语句请在此处增加
-L –v
COMMIT
##########################################################################
1、 局域网用户通过服务器共享上网
(即从张 3家到李 4家)
1)首先进①号门再从⑥号门走出
-A PREROUTING –p tcp --dport 80 –j ACCEPT #允许TCP 80端口通过服务器
-A FORWARD –p tcp --dport 80 –j ACCEPT #允许TCP80 端口转发
-A FORWARD –p tcp --sport 80 –j ACCEPT #允许接收对方为TCP80端口反回信息
2)其次由于我们上网打是域名为此有个公网DNS服务器为我们服务那当然也要允许内网机器和DNS服务器数据转发DNS用UDP 53或者 TCP 53端口两者用其个就行
-A PREROUTING –p udp --dport 53 –j ACCEPT
-A FORWARD –p udp --dport 53 –j ACCEPT
-A FORWARD –p udp --sport 53 –j ACCEPT
3)再次由于局域网地址在公网上是不被允许所以在出公网前应该把其地址转为服务器地址进行伪装
-A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111
2、 允许局域网和公网可以访问服务器SSH
假设SSH采用默认端口TCP 22 此要求相当于要进我家TCP 22号门为此我们首先要进我家院子然后再进我家门最后走出我家门这样过程此操作是征对服务器本身操作
-A PREROUTING –p tcp --dport 22 –j ACCEPT
-A INPUT –p tcp --dport 22 –j ACCEPT
-A OUTPUT –p tcp --sport 22 –j ACCEPT
3、 允许内网机器可以登录MSN和QQ
(MSN和QQ默认是不允许登录)QQ般来说可以从TCP 80、8000、443及UDP 8000、4000登录而MSN可以从TCP 1863、443登录我们登录MSN和QQ过程就象上网样也是去访问远程服务器指定端口故而我们只用数据转发即可
-A PREROUTING –p tcp --dport 1863 –j ACCEPT
-A PREROUTING –p tcp --dport 443 –j ACCEPT
-A PREROUTING –p tcp --dport 8000 –j ACCEPT
-A PREROUTING –p udp --dport 8000 –j ACCEPT
-A PREROUTING –p udp --dport 4000 –j ACCEPT
-A FORWARD –p tcp --dport 1863 –j ACCEPT
-A FORWARD –p tcp --sport 1863 –j ACCEPT
-A FORWARD –p tcp --dport 443 –j ACCEPT
-A FORWARD –p tcp --sport 443 –j ACCEPT
-A FORWARD –p tcp --dport 8000 –j ACCEPT
-A FORWARD –p tcp --sport 8000 –j ACCEPT
-A FORWARD –p udp --dport 8000 –j ACCEPT
-A FORWARD –p udp --sport 8000 –j ACCEPT
-A FORWARD –p udp --dport 4000 –j ACCEPT
-A FORWARD –p udp --sport 4000 –j ACCEPT
4、 让内网机器可以收发邮件
接收邮件是访问远程服务器TCP 110端口发送邮件是访问TCP25端口用数据转发即可
-A PREROUTING –p tcp --dport 110 –j ACCEPT
-A PREROUTING –p tcp --dport 25 –j ACCEPT
-A FORWARD –p tcp --dport 110 –j ACCEPT
-A FORWARD –p tcp --sport 110 –j ACCEPT
-A FORWARD –p tcp --dport 25 –j ACCEPT
-A FORWARD –p tcp --sport 25 –j ACCEPT
5、 内部机器对外发布WEB
要把内网机器192.168.5.179WEB对外发布话相当于是从外网访问内网和第1步操作局域网共享上网相同只是访问方向改变了不是从内网访问外网而是从外网访问内网
当公网访问服务器218.100.100.111时防火墙把它映射到内网192.168.5.179TCP80上当内网机器访问服务器218.100.100.111时防火墙把它映射到内网192.168.5.179TCP80上
-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80
-A PREROUTING –i eth1 –p tcp –d 218.100.100.111 –dport 80 –j DNAT –to-destination 192.168.5.179:80
(以上两句必须写在 –A PREROUTING –p tcp --dport 80 –j ACCEPT 前面)
TCP 80端口转发在第1步就已做过此处就不用重复制作了另外在
-A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111 的后加上句:
-A POSTROUTING –p tcp --dport 80 –j ACCEPT
为什么要加这句话呢我理解是这样
公网访问 http://218.100.100.111时:(假设公网上用户IP为199.199.199.199,端口12345为随机产生)
数据源 : ip:199.199.199.199 sport:12345
数据目标: ip:218.100.100.111 dport 80
此时通过-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80 告诉199.199.199.199,您要访问真正地址应该是192.168.5.179:80,然后我们通过-A POSTROUTING –p tcp --dport 80 –j ACCEPT 目标地址218.100.100.111:80伪装成 192.168.5.179:80
数据源 : ip:199.199.199.199 sport:12345
数据目标: ip:192.168.5.179 dport 80
当192.168.5.179返回数据时:
数据源 : ip:192.168.5.179 sport:80
数据目标: ip:199.199.199.199 dport 12345
数据经过 -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111 后
数据源 : ip:218.100.100.111 sport:80
数据目标: ip:199.199.199.199 dport 12345
6、 完整iptables配置
###########################################################################
*nat
################################
:PREROUTING DROP [0:0]
:OUTPUT DROP [0:0]
:POSTROUTING DROP [0:0]
################################
-F
-Z
-X
-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80
-A PREROUTING –i eth1 –p tcp –d 218.100.100.111 --dport 80 –j DNAT –to-destination 192.168.5.179:80
-A PREROUTING –p tcp --dport 80 –j ACCEPT
-A PREROUTING –p udp --dport 53 –j ACCEPT
-A PREROUTING –p tcp --dport 22 –j ACCEPT
-A PREROUTING –p tcp --dport 1863 –j ACCEPT
-A PREROUTING –p tcp --dport 443 –j ACCEPT
-A PREROUTING –p tcp --dport 8000 –j ACCEPT
-A PREROUTING –p udp --dport 8000 –j ACCEPT
-A PREROUTING –p udp --dport 4000 –j ACCEPT
-A PREROUTING –p tcp --dport 110 –j ACCEPT
-A PREROUTING –p tcp --dport 25 –j ACCEPT
-A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111
-A POSTROUTING –p tcp --dport 80 –j ACCEPT
-L –v
COMMIT
################################################
*filter
##############################
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
##############################
-F
-Z
-X
-A INPUT –p tcp --dport 22 –j ACCEPT
-A OUTPUT –p tcp --sport 22 –j ACCEPT
-A FORWARD –p tcp --dport 80 –j ACCEPT
-A FORWARD –p tcp --sport 80 –j ACCEPT
-A FORWARD –p udp --dport 53 –j
最新评论