可以定时控制网段的上网/关网(nat)

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
xk10
帖子: 35
注册时间: 2007-11-06 0:18

可以定时控制网段的上网/关网(nat)

#1

帖子 xk10 » 2008-12-08 8:20

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

Re: 可以定时控制网段的上网/关网(nat)

#2

帖子 xk10 » 2008-12-09 14:30

怎么没有人会吗?
晕..........
soiamso
帖子: 418
注册时间: 2008-09-06 2:00

Re: 可以定时控制网段的上网/关网(nat)

#3

帖子 soiamso » 2008-12-09 15:00

那样你用的是什么代理软件呢?
xk10
帖子: 35
注册时间: 2007-11-06 0:18

Re: 可以定时控制网段的上网/关网(nat)

#4

帖子 xk10 » 2008-12-09 17:09

直接iptable不行吗?
头像
li_likun
帖子: 43
注册时间: 2007-10-31 15:35

Re: 可以定时控制网段的上网/关网(nat)

#5

帖子 li_likun » 2008-12-16 10:17

用iptables + time模块, 用 iptables -m time --help 查看帮助。
rods
帖子: 181
注册时间: 2005-11-19 18:43

Re: 可以定时控制网段的上网/关网(nat)

#6

帖子 rods » 2008-12-25 14:34

用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
xk10
帖子: 35
注册时间: 2007-11-06 0:18

Re: 可以定时控制网段的上网/关网(nat)

#7

帖子 xk10 » 2008-12-26 17:22

早已经解决了。
不过还是感谢楼主。(你的有些长了)
把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
netwater
帖子: 1
注册时间: 2009-06-18 8:38

Re: 可以定时控制网段的上网/关网(nat)

#8

帖子 netwater » 2009-06-18 8:40

请问楼主:
1、即然你的iptables中已经加了时间的模块,还有必要在crontab中定时执行脚本吗?
2、清除规则也不需要执行二次吧,难道你还信不过电脑?
teleonline
帖子: 7
注册时间: 2009-11-11 12:53

Re: 可以定时控制网段的上网/关网(nat)

#9

帖子 teleonline » 2009-11-16 12:21

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
不知道这个是不是目前已经实用的,我也计划做类似的限制,很感谢提供。
回复