博客统计信息

用户名:xuzhi1977
文章数:15
评论数:18
访问量:35846
无忧币:20
博客积分:644
博客等级:2
注册日期:2007-03-10

我的技术圈(0)

更多>>
linux kernel2.6 上的linux全功能共享上网脚本
2007-03-12 15:46:20
我自己写的linux kernel2.6 上的linux全功能共享上网脚本。这个本来没什么稀奇,不过呢,其实网络上有很多的Linux共享上网的脚本根本就是错的,也有的是RH9那样的2.4适用的脚本。所以呢,把这个东西翻了出来,完善了一下,保证绝对能用的。
        这个脚本包含了限制ping,透明代理,端口映射等功能。其实呢,把dns端口53也透明一下的话,客户机设不设DNS就都无所谓了,呵呵~
---------下行开始是脚本正文-----------------------------

#!/bin/bash

#write by xuzhi1977 12/03/2007

#define interface
#WAN
EXT_IF="eth1"
EXT_IP="192.168.123.231"
#LAN
INT_IF="eth0"
INT_IP_RANGE="192.168.200.0/24"
INT_GW_IP="192.168.200.254"
PROXY_IP="192.168.200.254"
WEB_IP="192.168.200.8"


# load mod
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_ftp

echo clear all rules
iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat
iptables --flush INPUT
iptables --flush FORWARD
iptables --flush POSTROUTING --table nat
iptables --policy FORWARD DROP

echo Drop bad package
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

#echo trust LAN 这个在新的IPTALBES里面已经没有意义咯
#iptables -A INPUT --in-interface $LAN_IF -j ACCEPT
#iptables -A OUTPUT --out-interface $LAN_IF -j ACCEPT

echo ICMP:about ping
#外网网卡可以ping到别人,别人ping不到本机外网网卡
iptables -A OUTPUT --out-interface $EXT_IF -p icmp -j ACCEPT
iptables -A INPUT --in-interface $EXT_IF -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT --in-interface $EXT_IF -p icmp --icmp-type echo-request -j DROP
iptables -A FORWARD -i $EXT_IF --match state --state ESTABLISHED,RELATED --jump ACCEPT

echo transport proxy
#iptables -t nat -A PREROUTING -i $INT_IF -p tcp -s $INT_IP_RANGE --dport 80 -j DNAT --to $PROXY_IP:3128
#iptables -t nat -A PREROUTING -i $INT_IF -p tcp -s $INT_IP_RANGE --dport 80 -j REDIRECT --to-port 3128
#anther transport proxy------------------------------------------------------------------
#iptables -t nat -A PREROUTING -d $INT_IP -i $INT_IF \
-p tcp -m tcp --dport 80 -j ACCEPT
#iptables -t nat -A PREROUTING -i $INT_IF -p tcp -m tcp \
--dport 80 -j REDIRECT --to-ports 3128


echo nat
iptables -t nat -A POSTROUTING -s $INT_IP_RANGE -o $EXT_IF -j MASQUERADE
iptables -A FORWARD -s $INT_IP_RANGE -j ACCEPT

echo port mapping
#把对外网IP,80端口的访问,转发到$WEB_IP:80去
/sbin/iptables -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 80 -j DNAT --to-destination $WEB_IP:80
#放行$WEB_IP:80的包
/sbin/iptables -A FORWARD -p tcp -d $WEB_IP --dport 80 -j ACCEPT
#回流(可能应该把$INT_GW_IP改成$EXT_IP才对,没机会测试。呵呵)
/sbin/iptables -t nat -I POSTROUTING -s $LAN_IP_RANGE -p tcp -d 172.16.0.50 --dport 80 -j SNAT --to $INT_GW_IP

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章

附件下载:
  我现在用的脚本
类别:Linux杂文技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
2008-07-17 11:11:15
这是怎么一回事?看不懂啊.

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: