当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-08 8:20 

注册: 2007-11-06 0:18
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
其实我主要想用ubuntu做个代理上网的服务器,可以定时控制网段的上网/关网。
10-26网段一直可以上
30-254网段10点上网
30-254网段12点关网(定时的我会,只要把命令加到/etc/crontab就可以了)
主要是现在控制网段上网的命令不行。。。请指教。。。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-09 14:30 

注册: 2007-11-06 0:18
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
怎么没有人会吗?
晕..........


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-09 15:00 

注册: 2008-09-06 2:00
帖子: 418
送出感谢: 0 次
接收感谢: 0 次
那样你用的是什么代理软件呢?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-09 17:09 

注册: 2007-11-06 0:18
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
直接iptable不行吗?


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-16 10:17 
头像

注册: 2007-10-31 15:35
帖子: 43
送出感谢: 0 次
接收感谢: 0 次
用iptables + time模块, 用 iptables -m time --help 查看帮助。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-25 14:34 

注册: 2005-11-19 18:43
帖子: 181
送出感谢: 0 次
接收感谢: 0 次
用squid可以实现
网上搜下透明代理就知道了

提供一下示例

一、需求:
公司内网192.168.0.0/24,分成:
服务部192.168.0.130-192.168.0.169
开发部192.168.0.110-192.168.0.129
市场部192.168.0.170-192.168.0.199
办公室192.168.0.200-192.168.0.209
物流部192.168.0.210-192.168.0.219
经理室192.168.0.220-192.168.0.229
小培训室192.168.0.10-192.168.0.49
大培训室192.168.0.50-192.168.0.99
192.168.0.1-192.168.0.9、192.168.0.101-192.168.0.109、192.168.0.230-192.168.0.254保留
192.168.0.100为Internet网关服务器(使用192.168.0.100这个地址是公司内网建设的历史问题,这里不作讨论)。网关服务器内网出口设备是eth1、地址是192.168.0.100,外网出口地址设备是eth0、地址是172.15.222.XXX。
由于公司内部不同部门工作性质不同,现要求:
开发部、市场部、物流部、经理室全天候可以上网
服务部工作日08:00-11:30、13:00-17:00不可以上网,工作日的其它时间和双休日可以上网
小培训室、大培训室每日08:00-11:30、13:00-17:00不可以上网
办公室任何时间都不可以上网
在允许上网的情况中,除192.168.0.123和192.168.0.120外,其它只能使用HTTP协议上网。
二、分析:
HTTP协议代理上网,并实现多功能控制,SQUID是很好的解决办法。
192.168.0.123和192.168.0.120不能用SQUID代理,因为SQUID可以代理众所周知的,如HTTP、HTTPS、FTP、 GOPHER等协议,但更多的网上应用程序不能通过HTTP等代理工作,如REALPLAY最新的媒体流、OUTLOOK的HOTMAIL协议等。这时我们想到了用IPTABLES实现路由和IP伪装。
简单介绍一下IP伪装。172.15.222.XXX(网关服务器的Internet出口地址)访问Internet时,使用自己的地址 172.15.222.XXX,这个没有问题。但内网192.168.0.0/24(实际只有192.168.0.123和192.168.0.120)要通过网关服务器访问Internet,内网地址一定要被网关服务器伪装一下成为172.15.222.XXX,这样从Internet返回的数据包才能回到网关服务器172.15.222.XXX。回到172.15.222.XXX的数据包再通过网关服务器解除伪装、路由到内网上相对应的机器上。
三、实现:
1、重新编译内核,一定要打开network packet filter选项,细节不作详述,请查询iptables的相关信息;
2、重启后安装SQUID,在/etc/squid/squid.conf中加入如下配置信息,配置选项说明不详述,请参考SQUID文档:

acl serdep src 192.168.0.130-192.168.0.169/255.255.255.255 #服务部
#注意:这里掩码不是255.255.255.0
acl devdep src 192.168.0.110-192.168.0.129/255.255.255.255 #开发部
acl mardep src 192.168.0.170-192.168.0.199/255.255.255.255 #市场部
acl offdep src 192.168.0.200-192.168.0.209/255.255.255.255 #办公室
acl goodep src 192.168.0.210-192.168.0.219/255.255.255.255 #物流部
acl mandep src 192.168.0.220-192.168.0.229/255.255.255.255 #经理室
acl strdep src 192.168.0.10-192.168.0.49/255.255.255.255 #小培训室
acl ltrdep src 192.168.0.50-192.168.0.99/255.255.255.255 #大培训室
acl res1 src 192.168.0.1-192.168.0.9/255.255.255.255 #保留1
acl res2 src 192.168.0.101-192.168.0.109/255.255.255.255 #保留2
acl res3 src 192.168.0.230-192.168.0.255/255.255.255.255 #保留3

acl regular_days_lunch time M T W H F 11:31-12:59 #工作日午休上网时间
acl regular_days_morning time M T W H F 00:00-07:59 #工作日上午上网时间
acl regular_days_night time M T W H F 17:01-23:59 #工作日下午上网时间
acl weekend_days time A S 00:00-23:59 #双休日上网时间

http_access allow serdep regular_days_morning
http_access allow serdep regular_days_lunch
http_access allow serdep regular_days_night
http_access allow serdep weekend_days
http_access allow devdep
http_access allow mardep
http_access allow goodep
http_access allow mandep
http_access allow strdep regular_days_morning
http_access allow strdep regular_days_lunch
http_access allow strdep regular_days_night
http_access allow ltrdep regular_days_morning
http_access allow ltrdep regular_days_lunch
http_access allow ltrdep regular_days_night

http_access deny all


3、在/etc/rc.d/rc.local中加入下列代码:

if [ "$RUNLEVEL"="3" -o "$RUNLEVEL"="5" ]; then
/sbin/iptables -F INPUT
/sbin/iptables -F FORWARD
/sbin/iptables -F -t nat
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -s 192.168.0.123/32 -j ACCEPT
/sbin/iptables -A FORWARD -s 192.168.0.120/32 -j ACCEPT
/sbin/iptables -A FORWARD -d 192.168.0.123/32 -j ACCEPT
/sbin/iptables -A FORWARD -d 192.168.0.120/32 -j ACCEPT
/sbin/iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.123/32 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.120/32 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
fi

4、启动SQUID服务,运行/etc/rc.d/rc.local;
5、配置客户机(内网中所有要上网的机器),浏览器的代理服务器设为192.168.0.100,端口设为你指定的SQUID的代理端口。 192.168.0.123和192.168.0.120不用设置代理服务器,只要把它们的网关设为192.168.0.100就可以了。


_________________
不积跬步,无以致千里

ArchLinux


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2008-12-26 17:22 

注册: 2007-11-06 0:18
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
早已经解决了。
不过还是感谢楼主。(你的有些长了)
把rc.loal贴上来给大家共享。
代码:
#!/bin/sh -e
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
#清除现有的规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 222.88.17.42

#INPUT
iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#input要开放端口22(SSH的默认端口)
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
#开放端口80
iptables -A INPUT -p tcp -i eth1 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -i eth1 --dport 53 -j ACCEPT
#forward
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -m iprange --src-range 192.168.0.2-192.168.0.26 -j ACCEPT
iptables -I FORWARD -m iprange --src-range 192.168.0.30-192.168.0.254 -m time --timestart 11:00 --timestop 13:00 -j ACCEPT
iptables -I FORWARD -m iprange --src-range 192.168.0.30-192.168.0.254 -m time --timestart 16:00 --timestop 22:00 -j ACCEPT

exit 0


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2009-06-18 8:40 

注册: 2009-06-18 8:38
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
请问楼主:
1、即然你的iptables中已经加了时间的模块,还有必要在crontab中定时执行脚本吗?
2、清除规则也不需要执行二次吧,难道你还信不过电脑?


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 可以定时控制网段的上网/关网(nat)
帖子发表于 : 2009-11-16 12:21 

注册: 2009-11-11 12:53
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
xk10 写道:
早已经解决了。
不过还是感谢楼主。(你的有些长了)
把rc.loal贴上来给大家共享。
代码:
#!/bin/sh -e
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
#清除现有的规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 222.88.17.42

#INPUT
iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#input要开放端口22(SSH的默认端口)
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
#开放端口80
iptables -A INPUT -p tcp -i eth1 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -i eth1 --dport 53 -j ACCEPT
#forward
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -m iprange --src-range 192.168.0.2-192.168.0.26 -j ACCEPT
iptables -I FORWARD -m iprange --src-range 192.168.0.30-192.168.0.254 -m time --timestart 11:00 --timestop 13:00 -j ACCEPT
iptables -I FORWARD -m iprange --src-range 192.168.0.30-192.168.0.254 -m time --timestart 16:00 --timestop 22:00 -j ACCEPT

exit 0

不知道这个是不是目前已经实用的,我也计划做类似的限制,很感谢提供。


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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