LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 761|回复: 3

校园网固定IP+(双网卡+HUB or 单网卡+交换机)的LINUX下共享上网的实现方案

[复制链接]
发表于 2005-3-16 16:24:59 | 显示全部楼层 |阅读模式
在许多学校里,上网常常是用固定IP+网关,常见的共享上网的方案是以下两种:
1.双网卡+HUB
2.单网卡+交换机
在Windows底下可以轻松实现共享上网,可是在Linux下就没有那么简单了
经过几天的摸索和LinuxSir上各位前辈的指导,终于总结出一套方案:

一、双网卡+HUB
1.先假设你的Internet接口为eth0,IP为218.194.30.15, 网关为218.194.30.1;局域网接口为eth1,IP为192.168.1.254,并且又假设LAN网络中,192.168.1.10-192.168.1.12开WWW服务器、192.168.1.11开FTP服务器、192.168.1.12开PC-Anywhere服务.(即使没有这些服务也不要紧,这里只是提供一套完整的NAT方案而已)
则首先在命令行下输入以下三行:
[root@local ~]# touch /etc/rc.d/snat-firewall
[root@local ~]# chmod u+x /etc/rc.d/snat-firewall
[root@local ~]# echo "/etc/rc.d/snat-firewall" >>/etc/rc.d/rc.local

其中意义为建立一个空的脚本文件,并添加可执行权限,将脚本添加入开机自动运行

2.然后再用vi编辑/etc/rc.d/snat-firewall文件使其变为以下内容:
#!/bin/bash
#snat-firewall
################################START#########################################
#开启内核转发
echo "1" > /proc/sys/net/ipv4/ip_forward
################################################################################
#定义外部接口变量
INET_IFACE="eth0"
INET_IP="218.193.49.120"
#定义局域网相关变量
LAN_IFACE="eth1"
LAN_IP="192.168.1.254"
LAN_IP_RANGE="192.168.1.0/24"
#
IPT="/sbin/iptables"
################################################################################
# 定义与内部服务器相关的变量
WWW_IP_RANGE="192.168.1.10-192.168.1.12"
FTP_IP="192.168.1.254"
PCAW_IP="192.168.1.12"
#各种服务的端口
HTTP="80"
HTTPS="443"
FTP="21"
FTP_DATE="20"
PCAW_TCP="5631"
PCAW_UDP="5632"
################################################################################
#加载内核模块
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
################################################################################
#清除已设规则,还原到不设防火墙的状态
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
for TABLE in filter nat mangle ; do
$IPT -t $TABLE -F
$IPT -t $TABLE -X
done
################################################################################
################################ 规则设置 ######################################
################################################################################
#所有已经初始化了的回应数据包&&允许DNS服务&&允许主机的FTP服务(POST模式)
#$IPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf|awk '{print $2}'); do
$IPT -A INPUT -p udp -s $DNS --sport domain -j ACCEPT
done
$IPT -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
$IPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset
################################################################################
#允许访问开放的服务
$IPT -A INPUT -p tcp --sport $HTTP -j ACCEPT
$IPT -A INPUT -p tcp --sport $HTTPS -j ACCEPT
$IPT -A INPUT -p tcp --sport $FTP -j ACCEPT
$IPT -A INPUT -p tcp --sport $PCAW_TCP -j ACCEPT
$IPT -A INPUT -p udp --sport $PCAW_UDP -j ACCEPT
################################################################################
#拒绝所有(除了lo接口)新建立的或无效的连接请求并记入LOG
$IPT -N LOGDENY
$IPT -A LOGDENY -j LOG --log-prefix "iptables:"
$IPT -A LOGDENY -j DROP
$IPT -A INPUT -i ! lo -m state --state NEW,INVALID -j LOGDENY
################################################################################
#根据接口决定使用SNAT或是IP伪装
if [ "$INET_IFACE" = ppp0 ] ; then
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
else
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP
fi
##############################################################################
# 对防火墙的服务请求重定向到局域网内部
$IPT -t nat -A PREROUTING -p tcp -d $INET_IP --dport $HTTP -j DNAT --to $WWW_IP_RANGEHTTP
$IPT -t nat -A PREROUTING -p tcp -d $INET_IP --dport $HTTPS -j DNAT --to $WWW_IP_RANGEHTTPS
$IPT -t nat -A PREROUTING -p tcp -d $INET_IP --dport $FTP -j DNAT --to $FTP_IPFTP
$IPT -t nat -A PREROUTING -p tcp -d $INET_IP --dport $PCAW_TCP -j DNAT --to $PCAW_IPPCAW_TCP
$IPT -t nat -A PREROUTING -p udp -d $INET_IP --dport $PCAW_UDP -j DNAT --to $PCAW_IPPCAW_UDP
###################################END########################################

3,最后再执行一次脚本文件,就可立即共享上网了
[root@local ~]#/etc/rc.d/snat-firewall

二、单网卡+交换机
假设原先主机已经可以上网首先先将主机的网卡再添加一个IP,具体步骤如下:
(图形界面下)
1.开始-->系统设置-->网络
2.新建-->前进-->前进-->地址填入192.168.1.1
                                     网掩码填入255.255.255.0
                                     网关空着
3.激活"eth0:1"的设备,关闭网络配置
然后依照上面的双网卡+HUB的方案的步骤进行

其中不同的是在步骤2时,即编辑/etc/rc.d/snat-firewall的时候

LAN_IFACE="eth1"
这行改为:
LAN_IFACE="eth0:1"

同样运行完脚本后就立即可以共享上网了
附上我的snat-firewall

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-3-16 19:52:52 | 显示全部楼层
jiajing !
回复 支持 反对

使用道具 举报

发表于 2005-3-18 08:28:32 | 显示全部楼层
实现的原理都是一样的, 不过就是硬件环境存在差别。
回复 支持 反对

使用道具 举报

发表于 2005-3-22 14:52:35 | 显示全部楼层
谢谢楼主
按照你的方法
我已经搞定了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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