#!/bin/bash #define all variance or parameter WAH_INT="eth0" WAH_INT_IP="222.222.101.1" LAN_INT="eth1" LAN_INT_IP="192.168.222.101" ALLOW_ACCEPT_CLIENT="192.168.222.1 192.168.222.5 192.168.222.7 192.168.222.20 192.168.222.80" WAH_WIN2003_SRW="222.222.101.2" PORT="20,21,25,53,80,110,143,554,1755,7070" IPT="/sbin/iptables" ############################################################################################## start(){ echo "" echo -e " \033[1;032n Flush all chains....... [ok] \033[n " # load modules if necessary modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc #flush all rules at first $IPT -t filter -F $IPT -t nat -F $IPT -t mangle -F #default policy is drop $IPT -t filter -P INPUT DROP $IPT -t filter -P OUTPUT DROP $IPT -t filter -P FORWARD DROP #open ssh service $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT $IPT -t filetr -A OUTPUT -p tcp --dport 22 -j ACCEPT #SNAT echo 1 > /proc/sys/net/ipv4/ip_forward $IPT -t nat -A POSTROUTING -s 192.168.222.0/24 -o $WAH_INT -j SNAT --to-source $WAH_INT_IP ################################# accept erp accept ######################################### if [ "$ALLOW_ACCEPT_CLIENT" != "" ]; then for LAN in ${ALLOW_ACCEPT_CLIENT} do $IPT -t filter -A FORWARD -p tcp -m multiport -s ${LAN} -o$WAN_INT --dport $PORT -j ACCEPT $IPT -t filter -A FORWARD -p ucp -m multiport -s ${LAN} -o$WAN_INT --dport $PORT -j ACCEPT $IPT -t filter -A FORWARD -p tcp -m multiport -s $WAN_INT --sport $PORT -j ACCEPT $IPT -t filter -A FORWARD -p ucp -m multiport -s $WAN_INT --sport $PORT -j ACCEPT echo "" echo ${LAN} Access to Extermel............ACCEPT access win2003 server [ok] done fi } ############################################################################################# stop(){ ####################### Flush everything $IPT -F $IPT -X $IPT -Z $IPT -F -t nat $IPT -X -t nat $IPT -Z -t nat $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT echo "######################################################################################" echo "# #" echo "# Stop firewall server Access rule Successfull ! #" echo "# #" echo "######################################################################################" } ############################################################################################ case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage:$0 {start|stop|restart|}" exit 1 esac exit $?
原文:https://www.cnblogs.com/linyouyi/p/11410017.html