当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [已解决][问题]自写nat脚本
帖子发表于 : 2008-08-22 10:36 
头像

注册: 2008-07-23 20:08
帖子: 1532
地址: http://www.ghostry.cn
送出感谢: 0 次
接收感谢: 1
感谢论坛的各位友人,感谢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
目前出这个错误。
引用:
$ nat eth0 192.168.0.0
/home/momo/bin/nat: line 21: /proc/sys/net/ipv4/ip_forward: Permission denied

也希望大虾看看有没有不严谨的地方/[/code]


_________________
http://www.ghostry.cn狂网技术工作室,组网建站,平面设计,java项目,空间域名.
好心人点这里进去注册并且用一次,给我增加点流量http://tinyurl.com/272ncjl
电脑配置:
公司:880G/II250/1TB/2G1333/
家:785G+/II245+/1TB/2G677/


最后由 ghostry 编辑于 2008-08-23 18:24,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-08-22 11:35 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
脚本里不应该写sudo.
执行前就判断是不是root身份,不是就退出,并给提示.


_________________
关注我的blog: ε==3


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-08-22 11:59 
头像

注册: 2008-07-23 20:08
帖子: 1532
地址: http://www.ghostry.cn
送出感谢: 0 次
接收感谢: 1
代码:
#!/bin/bash
#文件名firewall
#此防火墙由狂风寞寞制作,规则比较松,可以做网关(不需要的注释掉),使用前请根据实际情况设置WAN端口。
#设置WAN端口
if   [   `logname`   !=   "root"   ] 
  then   
            echo "不是root用户"
echo `logname`
 
elif [ "$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
 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

这样sudo之后还是说不是root。返回值仍然是我的用户名。 :shock: `logname`这个不行的话能用哪个呢?


_________________
http://www.ghostry.cn狂网技术工作室,组网建站,平面设计,java项目,空间域名.
好心人点这里进去注册并且用一次,给我增加点流量http://tinyurl.com/272ncjl
电脑配置:
公司:880G/II250/1TB/2G1333/
家:785G+/II245+/1TB/2G677/


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-08-22 12:07 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
試試檢查環境變量:UID
我用su,UID會變成root的UID
logname 還是原用戶!
-----------------
[/code]


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-08-22 14:58 
头像

注册: 2008-07-23 20:08
帖子: 1532
地址: http://www.ghostry.cn
送出感谢: 0 次
接收感谢: 1
:D 谢谢,解决了。
代码:
#!/bin/bash
#文件名firewall
#此防火墙由狂风寞寞制作,规则比较松,可以做网关(不需要的注释掉),使用前请根据实际情况设置WAN端口。
#设置WAN端口
if   [   $UID   !=   "0"   ] 
  then   
            echo "不是root用户"
elif [ "$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
 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


_________________
http://www.ghostry.cn狂网技术工作室,组网建站,平面设计,java项目,空间域名.
好心人点这里进去注册并且用一次,给我增加点流量http://tinyurl.com/272ncjl
电脑配置:
公司:880G/II250/1TB/2G1333/
家:785G+/II245+/1TB/2G677/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译