LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 北斗星

请问如何用RH9.0做一个网吧的代理服务器上网.

[复制链接]
发表于 2003-7-19 17:31:26 | 显示全部楼层
既然,你的主机是动态的,为什么要手动设置ip呢?
在/etc/sysconfig/network-scripts/ifcfg-eth0   (eth0 是到internet的网卡)
内容如下:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
就可以了。
没有iptables,也应该能ping通主机的两块网卡。考虑是不是网线有问题。
发表于 2003-7-19 18:20:29 | 显示全部楼层

我给你我的nat

#!/bin/bash

###--------------------------------------------------------------------###
#以下是定义变数
###--------------------------------------------------------------------###

PATH=/sbin:/usr/sbin:/bin:/usr/bin
RC_SQUID=/etc/rc.d/init.d/squid
EXT_IF=eth1
#外网接口,确定网卡,如果是拨号就用ppp0
INT_IF=eth0
LAN_IP_RANGE="192.168.0.0/24"
STATIC_IP="80.25.203.188"

###--------------------------------------------------------------------###
#确定iptables安装情况
###--------------------------------------------------------------------###

which iptables &>/dev/null || {
echo
echo "$(basename $0): iptables程序没有找到"
echo "请先安装好这个程序."
echo
exit 1
}

###--------------------------------------------------------------------###
#废掉ipchains,这是针对redhat以前的版本,新版已经把iptables嵌到内核里了
###--------------------------------------------------------------------###

lsmod | grep ipchains &>/dev/null && {
echo "正在废掉ipchains服务........."
rmmod ipchains
}

###--------------------------------------------------------------------###
#装载模块modules
###--------------------------------------------------------------------###

echo "模块正在载人......"
modprobe ip_tables &>/dev/null || {
echo -n "$(basename $0): ip_tables模块载人失败"
echo "请检查"
exit 3
}
for file in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_conntrack_*.o
do
    module=$(basename $file)
    modprobe ${module%.*} &>/dev/null
done
for file in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_nat_*.o
do
    module=$(basename $file)
    modprobe ${module%.*} &>/dev/null
done

#----ipforwarding--------
echo "打开foward功能"
echo "1" > /proc/sys/net/ipv4/ip_forward

#动态ip使用
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#这里是动态ip实现nat共享必改之处

###---------------------------------------------------###
#清除先前的设定
###---------------------------------------------------###
echo "正在清除先前的设定......."
#清除预定表filter中,所有规则链中的规则
iptables -F
#清除预定表filter中,使用者自定链中的规则
iptables -X

#清除预定表mangle中,所有规则链中的规则
iptables -F -t mangle
#清除预定表mangle中,使用者自定链中的规则
iptables -X -t mangle

#清除nat表中的规则
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat

#局域网共享的实现
iptables -t nat -A POSTROUTING -o $EXT_IF -s $LAN_IP_RANGE -j SNAT --to-source $STATIC_IP
#启动外部对内部转址
#这一步实现局域网内部机对外部网开放
#凡对$STATIC_IP:80连线者,则转址到192.168.0.245:80
#iptables - t nat -A PREROUTING -i $EXT_IF -p tcp -d $STATIC_IP --dport 80 -j DNAT --to-destination 192.168.0.245:80
echo "局域网共享的已实现,请试用局域网机器"

###---------------------------------------------------###
#设定预设规则
###---------------------------------------------------###
#预设规则要么为全部丢弃,要么为全部接受
#本列为全部丢弃,然后逐步开放,这是安全系数很高的设法
#若目标为DROP,则policy设为ACCEPT;若目标为ACCEPT,则policy设为DROP

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#TCP的设定
#
#我们丢弃坏的TCP包
#

iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP


#允许要转向的包
iptables -A FORWARD -i $INT_IF -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#对于不管来自哪里的ip碎片都进行控制,允许每秒通过100个碎片
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
#icmp包通过的控制,防止icmp黑客攻击
iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT
#这一条是针对oicq等使用udp服务而接收所有的udp包

#开放主机的ssh port 22,使内部机以ssh连至外部
iptables -A OUTPUT -o $EXT_IF -p tcp -s $STATIC_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT
iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 22 -d $STATIC_IP --dport 1024:65535 -j ACCEPT

#防止外网用内网ip欺骗
iptables -t nat -A PREROUTING -i $EXT_IF -s 192.168.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i $EXT_IF -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i $EXT_IF -s 172.16.0.0/12 -j DROP

#-----------透明代理------------
$RC_SQUID status | grep pid &>/dev/null && {
echo "透明代理实现"
INT_IP=$(ifconfig | grep $INT_IF -A 1 | awk '/inet/ {print $2}' | sed -e s/addr\://)
if [ -z "$INT_IP" ]; then
echo
echo "$(basename $0): $INT_IF没有IP存在"
echo "请检查$INT_IF是否正确配置了"
echo
exit 3
fi
}
exit 0
## EOS

具体意思你自己看。你把它存一个档,添加路径到
/etc/rc.d/rc.local里头。
发表于 2003-7-19 18:28:45 | 显示全部楼层

另外的说明

1.我的是少于250台电脑的。你根据你的情况修改。
2. squid你不用就注释掉。其实还是不用好。能起过滤作用的还要装数据库,配置也很难。
发表于 2003-7-19 18:35:00 | 显示全部楼层
多谢兄弟们帮忙,我成公啦!
从早上到现在,终于成功啦,
还是兄弟们热情.
再次感谢
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local


echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
ip我没动,和帽连的网卡我换了
eth1
192.168.0.1
255.255.255.0
eth0
192.168.0.2
和毛连的
但是客户端还是要设置DNS,
发表于 2003-7-19 18:39:09 | 显示全部楼层
在想请教个问题,我想限制没个内网主机的带宽
最好能分别给予每台机子设置带宽
不知该用什么,还望兄弟们指教
发表于 2003-7-19 18:49:15 | 显示全部楼层
这个功能最好让交换机来实现
发表于 2003-7-19 21:21:30 | 显示全部楼层
在linux下不能吗?
有没有谁使过
发表于 2003-7-19 23:02:46 | 显示全部楼层
linux可以当路由器来用,据说可以,
所以我不懂。
发表于 2003-7-19 23:37:02 | 显示全部楼层
路由器是以路由功能为主,但是要控制每台机器的流量据我所知还没有一个成熟的软件开发出来。
发表于 2003-7-20 06:43:00 | 显示全部楼层
我想使内网中的一定的主机可以上网,而某些ip不能,又该如何作呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表