iptables学习笔记
作者: Jeffrey
出处:http://blog.zhangjianfeng.com/?p=632
++基本
modprobe ip_nat_ftp
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #服务器禁ping
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -p tcp –dport 22 -j ACCEPT #eth1为内网卡
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -vnL [-t nat] #查看
++内网PC实现NAT上网
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT –to 1.1.1.1 # 将内网192.168.0.0/24 的原地址修改为1.1.1.1(假设是公网地址),用于NAT上网
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE #将源地址是192.168.0.0/24 的数据包进行地址伪装,动态出口IP用-j MASQUERADE
++内网如何做对外服务器
/sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp –dport 80 -j DNAT –to 192.168.0.3
/sbin/iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp –dport 80 -j SNAT –to 192.168.0.1
#211.162是公网IP,192.168.0.3是后端某WEB服务器,192.168.0.1是网关
iptables -t nat -A PREROUTING -d 202.110.123.100 -p tcp –dport 80 -j DNAT –to 192.168.1.1 #映射80端口至内网,adsl
iptables -t nat -A PREROUTING -d 202.110.123.100 -p tcp –dport 81 -j DNAT –to 192.168.1.2:80 #adsl
#iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 80 -j DNAT –to 192.168.1.1 #映射80端口至内网,adsl
#iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 81 -j DNAT –to 192.168.1.2:80 #adsl
++有DMZ和办公网段时,需要限制DMZ不能访问办公网段
iptables -A FORWARD -i eth2 -o eth1 -m state –state NEW -j DROP #eth2为连接DMZ网卡,eth1为接办公网段卡
++内网PC出口IP指定
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.100 -j SNAT –to 202.110.123.100
#对防火墙接收到的源ip地址为192.168.1.100的数据包进行源NAT(SNAT),以使其出口为202.110.123.100,eth1为外网口
++本机访问策略
iptables -A FORWARD -p tcp –dport xxx -j ACCEPT
iptables -A FORWARD -p tcp –dport yyy:zzz -j ACCEPT
iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -P FORWARD DROP
++如何限制内网用户
iptables -A FORWARD -s 192.168.0.3 -j DROP #限制来源是192.168.0.3的用户
iptables -A FORWARD -m mac –mac-source 11:22:33:44:55:66 -j DROP #限制MAC地址
iptables -A FORWARD -d bbs.chinaunix.net -j DROP #限制访问目标网站
++FTP协议传输
主动模式(ACTIVE)
client server
xxxx |—-|———-|—>| 21
yyyy|<—|———-|—-| 20
FW1 FW2
被动模式(PASSIVE)
client server
xxxx |—-|———-|—>| 21
yyyy|—-|———-|—>| zzzz
FW1 FW2
modprobe ip_nat_ftp
iptables -t nat -A PREROUTING -p tcp –dport 21 -j DNAT –to 192.168.0.132
iptables -t nat -A PREROUTING -p tcp –dport 9900:9999 -j DNAT –to 192.168.0.132
附:vsftpd定义passive端口范围
pasv_enable=YES
pasv_min_port=9900
pasv_max_port=9999
++使用总则
£ 所有链名必须大写 INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
£ 所有表名必须小写 filter/nat/mangle
£ 所有动作必须大写 ACCEPT/DROP/SNAT/DNAT/MASQUERADE
£ 所有匹配必须小写 -s/-d/-m <module_name>/-p
++其它
iptables-save [ > /etc/sysconfig/iptables ] #保存现有配置,也可以查看现有配置
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT #按包状态匹配
iptables -A FORWARD -m mac –mac-source xx:xx:xx:xx:xx:xx -j DROP #阻断来自某MAC 地址的数据包,通过本机
iptables -A INPUT -p tcp -m multiport –dports 21,22,25,80,110 -j ACCEPT #一次性匹配多个端口,可以区分源端口,目的端口或不指定端口,必须与-p 参数一起使用
++防syn-flooding
iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT
# –limit 1/s 限制syn并发数每秒1次,根据自己的需要修改
#也可将/proc/sys/net/ipv4/tcp_syncookies设1
++允许PING
iptables -A INPUT -p icmp -m icmp –icmp-type 8
++一个端口转发例
echo “1″ > /proc/sys/net/ipv4/ip_forward
iptables -F -t filter
iptables -F -t nat
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# ALLOW ALL in PRIVATE NET
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
# FORWARD
iptables -A FORWARD -p tcp -d 192.168.3.153 –dport 80 -j ACCEPT
iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
# PAT
iptables -t nat -A PREROUTING -d 202.102.24.33 -p tcp –dport 8888 -j DNAT –to 192.168.3.153:22
iptables -t nat -A POSTROUTING -d 192.168.3.153 -p tcp –dport 22 -j SNAT –to 192.168.3.254:8888
# NAT
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE
Trackback URL: http://blog.zhangjianfeng.com/article/632/trackback
Tags: iptables, 学习, 笔记





















不错就是有点难,收藏慢慢看