[已解决][问题]自写nat脚本
发表于 : 2008-08-22 10:36
感谢论坛的各位友人,感谢google。感谢我自己,感谢我老婆,问题解决了,现把代码贴出,大家随便享用。放到/bin下边,一条命令实现网关。
以下是原问题。
目前出这个错误。
代码: 全选
#!/bin/bash
#文件名firewall
#此网关由狂风寞寞制作,规则比较松。
#检查用户权限
if [ $UID != "0" ]
then
echo "不是root用户"
elif [ "$1" = "-h" ] #检查参数
then
echo "nat 联网出口 要代理的网段"
echo " 联网出口 链接外网的网卡接口"
echo " 要代理的网段 格式为‘192.168.15.0’"
elif [ "$1" = "" ]
then
echo "缺少端口参数"
echo "使用-h获取帮助"
echo "nat 联网出口 要代理的网段"
echo " 联网出口 链接外网的网卡接口"
echo " 要代理的网段 格式为‘192.168.15.0’"
elif [ "$2" = "" ]
then
echo "缺少网段参数"
echo "使用-h获取帮助"
echo "nat 联网出口 要代理的网段"
echo " 联网出口 链接外网的网卡接口"
echo " 要代理的网段 格式为‘192.168.15.0’"
else
#变量传递
eth=$1
wangduan=$2
#开启nat
echo 1 > /proc/sys/net/ipv4/ip_forward
#清除现有的规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#设置为$2网段的网关。
iptables -t nat -A POSTROUTING -s $wangduan/24 -o $eth -j MASQUERADE
###################################### Filter段开始 #####################################
#防止网络上其它计算机使用Ping命令探测本机:
iptables -A INPUT -p icmp --icmp-type echo-request -i $eth -j DROP
#
# 防止广播包从IP代理服务器进入局域网:
iptables -A INPUT -s 255.255.255.255 -i $eth -j DROP
iptables -A INPUT -s 224.0.0.0/224.0.0.0 -i $eth -j DROP
iptables -A INPUT -d 0.0.0.0 -i $eth -j DROP
# 屏蔽掉以下的TCP和UDP端口:
# iptables -A INPUT -i $eth -p udp -m udp --dport 3 -j DROP
# iptables -A INPUT -i $eth -p tcp -m tcp --dport 3 -j DROP
# iptables -A INPUT -i $eth -p tcp -m tcp --dport 111 -j DROP
# iptables -A INPUT -i $eth -p udp -m udp --dport 111 -j DROP
# iptables -A INPUT -i $eth -p udp -m udp --dport 587 -j DROP
# iptables -A INPUT -i $eth -p tcp -m tcp --dport 587 -j DROP
###################################### Filter段结束 #####################################
fi
代码: 全选
#!/bin/bash
#文件名firewall
#此防火墙由狂风寞寞制作,规则比较松,可以做网关(不需要的注释掉),使用前请根据实际情况设置WAN端口。
#设置WAN端口
if [ "$1" = "-h" ]
then
echo "nat 联网出口 要代理的网段"
echo " 联网出口 链接外网的网卡接口"
echo " 要代理的网段 格式为‘192.168.15.0’"
elif [ "$1" = "" ]
then
echo "缺少网段参数"
echo "使用-h获取帮助"
elif [ "$2" = "" ]
then
echo "缺少网段参数"
else
eth=$1
wangduan=$2
#开启nat
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
#清除现有的规则
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
#设置为$2网段的网关。
sudo iptables -t nat -A POSTROUTING -s $wangduan/24 -o $eth -j MASQUERADE
###################################### Filter段开始 #####################################
#防止网络上其它计算机使用Ping命令探测本机:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -i $eth -j DROP
#
# 防止广播包从IP代理服务器进入局域网:
sudo iptables -A INPUT -s 255.255.255.255 -i $eth -j DROP
sudo iptables -A INPUT -s 224.0.0.0/224.0.0.0 -i $eth -j DROP
sudo iptables -A INPUT -d 0.0.0.0 -i $eth -j DROP
# 屏蔽掉以下的TCP和UDP端口:
#sudo iptables -A INPUT -i $eth -p udp -m udp --dport 3 -j DROP
#sudo iptables -A INPUT -i $eth -p tcp -m tcp --dport 3 -j DROP
#sudo iptables -A INPUT -i $eth -p tcp -m tcp --dport 111 -j DROP
#sudo iptables -A INPUT -i $eth -p udp -m udp --dport 111 -j DROP
#sudo iptables -A INPUT -i $eth -p udp -m udp --dport 587 -j DROP
#sudo iptables -A INPUT -i $eth -p tcp -m tcp --dport 587 -j DROP
###################################### Filter段结束 #####################################
fi
也希望大虾看看有没有不严谨的地方/[/code]$ nat eth0 192.168.0.0
/home/momo/bin/nat: line 21: /proc/sys/net/ipv4/ip_forward: Permission denied