端口生定向将所有对80端口的请求,重定向到3128端口。如不考虑安全,对于squid代理服务器,只需要远行以下
两条规则即可。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
=============下面在/etc/rc.d/init.d/目录中写代理的防火墙脚本squid_proxy_firewall==============
#!/bin/sh
exho "Starting squid proxy iptables rules..."
#开启IP包转发功能
echo 1 > /proc/sys/net/ipv4/ip_forware
#开启动态IP支持
echo 1 > /proc/sys/net/ipv4/ip dynaddr
#关闭 Explicit Congestion Notification
echo 0 > /proc/sys/net/ipv4/tcp_ecn
#开启syn泛洪攻击保护(syn cook flood)
#syn攻击利用tcp协议缺陷,发送大量伪造的tcp连接请求,使被攻击方资源耗尽,导致拒绝服务
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#装载内核支持模块
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_state
/sbin/modprobe ipt_multiport
#清除链的规则
/sbin/iptables -F
/sbin/iptables -t nat -F
#清除封包计数器
/sbin/iptables -Z
/sbin/iptables -t nat -Z
#设置默认策略
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
#允许本地连接
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
#禁止对135,137,138,139,445端口连接
/sbin/iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j DROP
#允许squid进程向外发起对80端口代理的请求
/sbin/iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
#允许接收squid进程对外请求的回应包
/sbin/iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#允许dns查询
/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#允许ping代理
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request m limit --limit l/s --limit-burst 10 -j
ACCEPT
/sbin/iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
#允许转发对已经建立的连接的回应,允许建立在连接基础上的新连接,如ftp-date
/sbin/iptables -A FORWARD -i eth1 -m sate --sate ESTABLISHED,RELATED -j ACCEPT
#允许转发由内向外的新连接
/sbin/iptables -A FORWARD -p tcp -i eth0 --syn -j ACCEPT
/sbin/iptables -A FORWARD -m state --state NEW -i eth0 -j ACCEPT
#允许ping开关(“1”禁止ping,“0”允许ping)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
sysctl -w net.ipv4.icmp_echo_ignore_all=1
#将对80端口的请求重定向到代理监听的3128端口
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#对非80端口的请求,利用IP伪装方式代理访问internet
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
============以下是除去注释行整理出的==============
#!/bin/sh
echo "Starting squid proxy iptables rules..."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
echo 0 > /proc/sys/net/ipv4/tcp_ecn
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
sysctl -w net.ipv4.icmp_echo_ignore_all=1
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_state
/sbin/modprobe ipt_multiport
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -Z
/sbin/iptables -t nat -Z
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j DROP
/sbin/iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -i eth0 --syn -j ACCEPT
/sbin/iptables -A FORWARD -m state --state NEW -i eth0 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
########################映射电影服务器端口#################################
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 外网IP --dport 80 -j DNAT --to-destination 192.168.1.251:80
/sbin/iptables -t nat -A POSTROUTING -p tcp -o eth0 -s 192.168.1.251 --sport 80 -j SNAT --to-source 外网IP:80