免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1044 | 回复: 0
打印 上一主题 下一主题

[proxy] 对wind521兄一篇精华中的疑问,请教各位 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-19 09:12 |只看该作者 |倒序浏览
对wind521兄一篇精华中的疑问,请教各位

[原创] 有关用linux作NAT服务 (代理,透明代理等)
作者:wind521   发表时间:2002-11-27 13:22:51

[这个贴子最后由wind521在 2002/12/17 11:21am 编辑]


一、准备工作: 
   
  1.一台 Redhat linux主机(这是必备的),分别在redhat linux 7.1以后的任何一版本上都
测试没有问题
  
  2.两块网卡:eth0 eth1
    
  3.系统支持iptables:
  
[root@NetShare linux-2.4]# rpm -qa|grep iptables
iptables-1.2.5-3
iptables-ipv6-1.2.5-3

   iptables的rpm包已经安装上了,不过还要看一下内核的支持情况,也决定了iptables所
能发挥的功效

  4.内核情况如下:
[root@NetShare linux-2.4]# cd /usr/src/linux-2.4
[root@NetShare linux-2.4]# make menuconfig

在    Networking options  --->;   这个选项里有
      IP: Netfilter Configuration  --->;   (以下是偶的选择,供参考)

<*>; Connection tracking (required for masq/NAT)           
<M>;   FTP protocol support                              
<M>;   IRC protocol support                              
<M>; Userspace queueing via NETLINK (EXPERIMENTAL)        
<*>; IP tables support (required for filtering/masq/NAT)  
<M>;   limit match support                                
<M>;   MAC address match support                          
<M>;   netfilter MARK match support                       
<M>;   Multiple port match support                        
<M>;   TOS match support                                    
<M>;   AH/ESP match support                                 
<M>;   LENGTH match support                                 
<M>;   TTL match support                                    
<M>;   tcpmss match support                                 
<M>;   Connection state match support                        
<M>;   Unclean match support (EXPERIMENTAL)                  
<M>;   Owner match support (EXPERIMENTAL)                    
<*>;   Packet filtering                                      
<M>;     REJECT target support                              
<M>;     MIRROR target support (EXPERIMENTAL)               
<*>;   Full NAT                                             
<M>;     MASQUERADE target support                           
<M>;     REDIRECT target support                             
<M>;     Basic SNMP-ALG support (EXPERIMENTAL)               
<*>;   Packet mangling                                       
<M>;     TOS target support                                 
<M>;     MARK target support
<M>;   LOG target support                                    
<M>;   ULOG target support                                   
<M>;   TCPMSS target support                                 

这是内核所支持的一些模块,相关模块都是作什么的,可以去参考内核的说明文档!


二、具体实施:

  针对于此,我这几天写了一个简单的小脚本,大家可以利用他来作代理服务,如果有能力,可
以添加一些相关的规则...


程序如下:

#! /bin/sh
##### written by wind521  2002/12/17 #####
##### mail: wbff0926@sina.com        #####

IPTABLES=/usr/sbin/iptables
EXTERNAL="eth1"    --->; 外网的接口
INTERNAL="eth0"  --->; 内网的接口
IP=192.168.0.0/24 --->; 内网地址


#
### 重置三条链默认的规则
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#
### 重置nat表
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
### 刷新nat与链的所有规则
#
$IPTABLES -F
$IPTABLES -t nat -F

#
### 删除非默认的链和nat表的规则
#
$IPTABLES -X
$IPTABLES -t nat -X

start() {
       #
       ###打开ip转发
       #
       echo -n $"Starting firewall "
       echo 1 >; /proc/sys/net/ipv4/ip_forward
      
       #
       ###加载必要的模块
       #
       echo -n "Staring modprobe the necessary mod for iptables"
       for i in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/*
       do
               t=`echo $i |sed 's/\.o$//g'`
               module=`basename $t`
               modprobe $module
       done
      
      #
      ###允许ICMP数据包(ping)
      #
      $IPTABLES -A INPUT -p icmp -j ACCEPT

      #
      ###允许内部网之间的数据通讯
      #
      $IPTABLES -A INPUT -i $INTERNAL -s $PRINET -j ACCEPT
      $IPTABLES -A OUTPUT -o $INTERNAL -d $PRINET -j ACCEPT

      #
      ###NAT转发的关键
      #
      $IPTABLES -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE
      echo_success
}


stop(){
       echo -n $"Stopping Firewall"

       flush

       for i in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/*
       do
               t=`echo $i |sed 's/\.o$//g'`
               module=`basename $t`
               modprobe -r $module
       done

       # Disale IPV4 Packet Forwarding
       echo "0" >; /proc/sys/net/ipv4/ip_forward
       echo_success
}

restart()
{
       stop
       start
}

# See how we were called.
case "$1" in
       start)
               start
               ;;
       stop)
               stop
               ;;
       restart)
               restart
               ;;
       *)
               echo $"Usage: $0 {start|stop|restart}"
               exit 1
esac

按照需要将你所对应的变量改动一下,应该没有问题的!

   说明:这个基本上能保证代理上网的功能,其他的什么都没有作,包括SNAT,DNAT,都没有作,
如果有需要的可以自己去改动,如有问题,请与偶mail联系!
 
                                  wind521


问题:1、文中“### 重置nat表
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
#”。这里的设置有无必要?设置与否有何区别?

2、既然:“### 重置三条链默认的规则
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
#”
那如下的设置还有必要吗?“    ###允许ICMP数据包(ping)
      #
      $IPTABLES -A INPUT -p icmp -j ACCEPT
      #
      ###允许内部网之间的数据通讯
      #
      $IPTABLES -A INPUT -i $INTERNAL -s $PRINET -j ACCEPT
      $IPTABLES -A OUTPUT -o $INTERNAL -d $PRINET -j ACCEPT
      #”
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP