熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

有關用linux作NAT服務 (代理,透明代理等)

2013-11-13 15:32:06  來源: Oracle 

  作者wind
  
  准備 一台linux主機(這是必備的)
      兩塊網卡
      系統支持iptables (如有人不清楚iptables可以先到網上去看一下相關的資料)
    針對於此我這幾天寫了一個簡單的小腳本大家可以利用他來作代理服務如果有能力可以添加一些相關的規則
  程序如下
  
  #! /bin/sh
  
  IPTABLES=/usr/sbin/iptables
  EXTERNAL=eth > 外網的接口
  INTERNAL=eth  > 內網的接口
  IP=/ > 內網地址
  
  
  $IPTABLES P INPUT ACCEPT
  $IPTABLES P FORWARD ACCEPT
  $IPTABLES P OUTPUT ACCEPT
  
  $IPTABLES t nat P PREROUTING ACCEPT
  $IPTABLES t nat P POSTROUTING ACCEPT
  $IPTABLES t nat P OUTPUT ACCEPT
  
  $IPTABLES F
  $IPTABLES t nat F
  
  
  $IPTABLES X
  $IPTABLES t nat X
  
  start() {
   echo n $Starting firewall
   # Enable IPV Packet Forwarding
   echo > /proc/sys/net/ipv/ip_forward
  
   for i in /lib/modules/`uname r`/kernel/net/ipv/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
  
  
   $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/ipv/netfilter/*
   do
   t=`echo $i |sed s/\o$//g`
   module=`basename $t`
   modprobe r $module
   done
  
   # Disale IPV Packet Forwarding
   echo > /proc/sys/net/ipv/ip_forward
   echo_success
  }
  
  restart()
  {
   stop
   start
  }
  
  # See how we were called
  case $ in
   start)
   start
   ;;
   stop)
   stop
   ;;
   restart)
   restart
   ;;
   *)
   echo $Usage: $ {start|stop|restart}
   exit
  esac
  
  按照需要將你所對應的變量改動一下應該沒有問題的!
  
  說明這個基本上能保證代理上網的功能其他的什麼都沒有作包括SNATDNAT都沒有作如果有需要的可以自己去改動
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/16873.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.