作者:wind521
准备:
一台linux主机(这是必备的)
两块网卡
系统支持iptables (如有人不清楚iptables,可以先到网上去看一下相关的资料)
针对于此,我这几天写了一个简单的小脚本,大家可以利用他来作代理服务,如果有能力,可以添加一些相关的规则。。。
程序如下:
#! /bin/sh
IPTABLES=/usr/sbin/iptables
EXTERNAL="eth1" --- 外网的接口
INTERNAL="eth0"
--- 内网的接口
IP=192.168.0.0/24
--- 内网地址
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -t nat -X
start() {
echo -n $"Starting firewall "
# Enable IPV4 Packet Forwarding
echo 1
/proc/sys/net/ipv4/ip_forward
for i in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/*
do
t=`echo $i |sed 's/\.o$//g'`
module=`basename $t`
modprobe $module
done
#
#允许ICMP数据包(ping)
$IPTABLES -A INPUT -p icmp -j ACCEPT
#允许内部网之间的数据通讯
$IPTABLES -A INPUT -i $INTERNAL -s $PRINET -j ACCEPT
$IPTABLES -A OUTPUT -o $INTERNAL -d $PRINET -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE
echo_success
}
stop(){
echo -n $"Stopping Firewall"
flush
for i in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/*
do
t=`echo $i |sed 's/\.o$//g'`
module=`basename $t`
modprobe -r $module
done
# Disale IPV4 Packet Forwarding
echo "0"
/proc/sys/net/ipv4/ip_forward
echo_success
}
restart()
{
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
按照需要将你所对应的变量改动一下,应该没有问题的!
说明:这个基本上能保证代理上网的功能,其他的什么都没有作,包括SNAT,DNAT,都没有作,如果有需要的可以自己去改动