- 论坛徽章:
- 0
|
以下是用iptables来做内网网关防火墙的简单例子,供初学者参考。
#! /bin/sh
#
#Set Bin Patch
#
$IPTABLES=/sbin/iptables #执行命令的路径,根据实际情况走相应的修改
#
#Internet Configuration.
#
INET_IP="" #Internet IP地址
INET_IFACE="" #Internet 接口,如eth0,eth1等
#
#Local Area Network Configuration.
#
LAN_IP="" #内网IP地址
LAN_IFACE="" #内网接口
LAN_IP_RANGE="" #内网IP段也就是整个子网(如:192.168.1.1/24)
#
#Localhost Configuration.
#
LO_IP="127.0.0.1" #本机回环地址
LO_IFACE="lo" #本机回环地址接口
#
#Module Loading.
#
#以下是较常用的模块
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
#
#Open Forward
#
echo 1 > /proc/sys/net/ipv4/ip_forward #打开IP转发功能,否则将无法实现NAT
#
#Clean Tables Rules #清空规则
#
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -t nat -F OUTPUT
#
#Set Policies #设置默认规则为拒绝所有连接
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
#Set Filter INPUT Rules
#
#tcp包,SYN,ACK SYN,ACK标记为“1”并且状态为“NEW”的连接,重置
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
#tcp包,syn为“1”并且状态为“new”的连接,写入日志(/var/log/messages)
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
#tcp包,syn为“1”并且状态为“new”的连接,丢弃
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
#允许内网访问
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
#允许回环地址访问
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
#允许本机内网地址访问
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
#允许本机外网地址访问
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
#目的地址是本机外网IP且状态是已连接或有关系的连接,允许
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
#
#Set Filter FORWARD Rules
#
#允许所有从内网接口进入的连接转发,就是允许所有内网IP
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
#状态是已连接或有关系的连接,允许
$IPTABLES -A FORWARD -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
#
#Set Filter OUTPUT Rules
#
#允许本机地址访问本机以外的地址
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
#
#Set nat PREROUTING Rules
#
#这里是做DNAT用的,一般不需要,这里就不做规则了
#
#Set nat POSTROUTING Rules
#
#这里是做SNAT,将内网私有IP转换为本机外网IP
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
#
#Set nat OUTPUT Rules
#
#这个一般也不做规则
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28155/showart_352585.html |
|