- 论坛徽章:
- 0
|
本帖最后由 红帽--楠楠 于 2013-08-14 20:32 编辑
普通SNAT和DNAT实验网站80访问
#!/bin/bash
# 1. 定义基本变量
INET_IF="eth0"
INET_IP="218.29.30.31"
LAN_NET="192.168.1.0/24"
LAN_WWW_IP="192.168.1.6"
IPT="/sbin/iptables"
MOD="/sbin/modprobe"
CTL="/sbin/sysctl"
# 2. 加载内核模块
$MOD ip_tables
$MOD ip_conntrack
$MOD xt_state
$MOD xt_multiport
# 3. 调整/proc参数
$CTL -w net.ipv4.ip_forward=1 &> /dev/null
$CTL -w net.ipv4.tcp_syncookies=1 &> /dev/null
$CTL -w net.ipv4.tcp_syn_retries=3 &> /dev/null
$CTL -w net.ipv4.tcp_synack_retries=3 &> /dev/null
$CTL -w net.ipv4.tcp_fin_timeout=60 &> /dev/null
$CTL -w net.ipv4.tcp_max_syn_backlog=3200 &> /dev/null
# 4. 设置具体的防火墙规则
# 4.1 删除自定义链、清空已有规则
$IPT -t filter -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -t raw -X
$IPT -t filter -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F
# 4.2 定义默认策略
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# 4.3 设置nat表中的各种规则
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP
# 4.4 设置filter表中的各种规则
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p udp --dport 53 -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp -m multiport --dport 20,21,25,80,110,143,443 -j ACCEPT
$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -d $LAN_WWW_IP -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -s $LAN_WWW_IP -p tcp --sport 80 -j ACCEPT
以下我写的和理解的有没有问题,请指教!!!!
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
Lan中的计算机ip经过IPTABLES地址会改变成 internet接口IP218.29.30.31
因为
$IPT -P FORWARD DROP
转发的23.3 389端口的丢弃
需要加命令,允许转发23.3389
iptables -I FORWARD -s 192.168.1.0/24 -p tcp -m multiport --dport 23,3389 -j ACCEPT
因为FTP比较特殊,需要加模块
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
iptables -I FORWARD -m state --state ! new -j ACCEPT
|
|