Linux设置共享上网的脚本

来源:互联网 发布:为什么淘宝分享打不开 编辑:程序博客网 时间:2024/05/22 17:46

RedHat9.0-->linux-2.4.20-8CentOS 5.1.3-->linux-2.6.18上测试通过了的:

方式1:将以下全部语句复制,再粘贴到“/etc/rc.d/rc.local”文件后面,开机后就可以自动执行了。

方式2:将以下语句全部复制,再粘贴到终端,它将自动配置、启动、显示一次。

当前PC在网络中所处的位置如图:

网络位置

=============================================脚本开始

#!/bin/sh

INTIF1="eth1"

INTIF2="eth2"

EXTIF="eth0"

EXTIP="`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"

/sbin/depmod –a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

/sbin/modprobe iptable_nat

/sbin/modprobe ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -P INPUT ACCEPT

iptables -F INPUT

iptables -P OUTPUT ACCEPT

iptables -F OUTPUT

iptables -P FORWARD DROP

iptables -F FORWARD

iptables -t nat –F

iptables -A FORWARD -i $EXTIF -o $INTIF1 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF2 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $INTIF1 -o $EXTIF -j ACCEPT

iptables -A FORWARD -i $INTIF2 -o $EXTIF -j ACCEPT

iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

==============================================脚本结束

之后,只要各个网段内的电脑设置网关为相应的那个网卡ethNip设置不冲突,就可以上网。

备注1(参考了http://www.aboutdebian.com/proxy.htm李先静xianjimli@hotmail.com)

路由器=

对外:60.232.100.116

对内:192.168.0.1

DNS:视环境而定

 

eth0=

IP:192.168.0.2

网关:192.168.0.1

掩码:255.255.255.0

DNS:与路由器相同

 

eth1=

IP:192.168.1.1

网关:空

掩码:空

DNS:空

 

eth2=

IP:192.168.2.1

网关:空

掩码:空

DNS:空

...

 

ethN=

IP:192.168.N.1

网关:空

掩码:空

DNS:空

 

这样,N个内网就可以通过N个网卡上网了...

 

备注2(参考了http://www.xxlinux.com/linux/article/network/security/20060610/1205.html)

其实修改iptables同样可以用这种方式进行(其中,eth0eth1分别是外、内网卡)。

======================================================

echo "Enable IP Forwarding..."

echo 1 >/proc/sys/net/ipv4/ip_forward

echo "Starting iptables rules..."

/sbin/modprobe iptable_filter

/sbin/modprobe ip_tables

/sbin/modprobe iptable_nat

/sbin/modprobe ip_nat_ftp ;支持被动FTP

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_h323

/sbin/modprobe ip_nat_h323

 

iptables -F INPUT

iptables -F FORWARD

iptables -F OUTPUT

iptables -F POSTROUTING -t nat

iptables -F PREROUTING -t nat

 

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

 

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -i eth1 -j ACCEPT

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

 

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

 

/etc/rc.d/init.d/iptables restart

 

iptables –L

======================================================

在这个配置里面,INPUT和转发FORWARD功能的缺省值都是拒绝(DROP),这意味着在后面的INPUTFORWARD语句中没有表明通过(ACCEPT)的都将被拒之门外。这是一个最好的安全模式,经过使用赛门铁克的在线测试,所有公网端口都是隐藏的。注意,所有内网端口都是打开的,本机对内没有安全可言。

每次修改完后,将整篇语句全部复制,再粘贴到终端,它将自动配置、启动、显示一次。反复修改、测试,直到达到你的要求。

 iptables就是linux的防火墙,iptables规则就是linux的防火墙规则,脚本中具体命令的具体含义还在体会中...

原创粉丝点击