关于Linux的用ADSL的NAT问题

#本地网段为192.168.0.0/24,也就是192.168.0.1-192.168.0.254,
#其中网关为的eth0(内网)为192.168.0.254,eth1为192.168.5.1
#/sbin/depmod -a
echo “1” > /proc/sys/net/ipv4/ip_forward
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_filter
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state
#modprobe ip_masquerade

iptables -F INPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -F
iptables -F PREROUTING -t nat
iptables -X
iptables -Z
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#TO DNS SERVER 湖南长沙电信的DNS
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -d 61.137.94.195 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -d 202.103.96.112 -j MASQUERADE

#这里是对v2语音聊天映射端口至192.168.0.8的机器上,注意tcp与udp的
#区别
#iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 1357 --syn -j DNAT --to 192.168.0.8:1357

iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 1357 --syn -j DNAT --to 192.168.0.8:1357
iptables -A FORWARD -d 192.168.0.8 -s ! 192.168.0.0/24 -p tcp --dport 1357 --syn -i ppp0 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p udp --dport 25483 -j DNAT --to 192.168.0.8:25483
iptables -A FORWARD -d 192.168.0.8 -s ! 192.168.0.0/24 -p udp --dport 25483 -i ppp0 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p udp --dport 25484 -j DNAT --to 192.168.0.8:25484
iptables -A FORWARD -d 192.168.0.8 -s ! 192.168.0.0/24 -p udp --dport 25484 -i ppp0 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p udp --dport 25485 -j DNAT --to 192.168.0.8:25485
iptables -A FORWARD -d 192.168.0.8 -s ! 192.168.0.0/24 -p udp --dport 25485 -i ppp0 -j ACCEPT

#Squid PROXY 使用squid作http代理服务器
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 --syn -j DNAT --to 192.168.0.254:3128

#MASQUERADE 对局域网NAT
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

#FTP_Servers 对外提供FTP服务,服务器为192.168.0.1
iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 21 --syn -j DNAT --to 192.168.0.1:21
iptables -A FORWARD -d 192.168.0.1 -s ! 192.168.0.0/24 -p tcp --dport 21 --syn -i ppp0 -j ACCEPT

#WEBSERVER 对外提供WEB服务,服务器为192.168.0.1
#iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 80 --syn -j DNAT --to 192.168.0.1:80
#iptables -A FORWARD -d 192.168.0.1 -s ! 192.168.0.0/24 -p tcp --dport 80 --syn -i ppp0 -j ACCEPT

#smtp 邮件服务器
iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 25 --syn -j DNAT --to 192.168.0.1:25
iptables -A FORWARD -d 192.168.0.1 -s ! 192.168.0.0/24 -p tcp --dport 25 -i ppp0 --syn -j ACCEPT

#pop3 邮件服务器
iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 110 --syn -j DNAT --to 192.168.0.1:110
iptables -A FORWARD -d 192.168.0.1 -s ! 192.168.0.0/24 -p tcp --dport 110 -i ppp0 --syn -j ACCEPT

#realserver 提供流媒体服务 ,vod服务器为192.168.0.2
iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 554 --syn -j DNAT --to 192.168.0.2:554
iptables -A FORWARD -d 192.168.0.2 -s ! 192.168.0.0/24 -p tcp --dport 554 --syn -i ppp0 -j ACCEPT

#netmeeting 为192.168.0.8提供netmeeting服务
iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 1503 --syn -j DNAT --to 192.168.0.8:1503
iptables -A FORWARD -d 192.168.0.8 -s ! 192.168.0.0/24 -p tcp --dport 1503 --syn -i ppp0 -j ACCEPT

#windows media 提供流媒体服务 ,vod服务器为192.168.0.2
iptables -t nat -A PREROUTING -i ppp0 -s ! 192.168.0.0/24 -p tcp --dport 1755 --syn -j DNAT --to 192.168.0.2:1755
iptables -A FORWARD -d 192.168.0.2 -s ! 192.168.0.0/24 -p tcp --dport 1755 --syn -i ppp0 -j ACCEPT

iptables -N mine
iptables -A mine -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A mine -m state --state NEW -i eth0 -j ACCEPT

#iptables -A mine -p tcp -s 192.168.0.0/24 --dport 80 -i eth0 -j ACCEPT
#iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.254:3128

#secrity
iptables -A mine -p icmp --icmp-type echo-request -i ppp0 -j DROP
iptables -A mine -i ppp0 -m limit -j LOG --log-prefix “Bad packet form ppp0:”
iptables -A mine -i ! ppp0 -m limit -j LOG --log-prefix “Bad packet form ppp0:”
iptables -A mine -j DROP
#iptables -A INPUT -j mine
iptables -A FORWARD -j mine
#iptables -A mine -j DROP