歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 透明的網關:在Linux上運行IPchains

透明的網關:在Linux上運行IPchains

日期:2017/3/6 15:49:29   编辑:關於Unix
一、前言 在很多大學和科研機構裡,合法的ip和端口並不多,因此很多部門都是采用代理 服務器 上網,用微軟的Proxy Server固然方便,不過效率低, 性能 不好,而且最主要的是費用太貴。因此采用廉價的 Linux 服務器做代理上網就成了一個很好的解決方法。經過
  一、前言
  在很多大學和科研機構裡,合法的ip和端口並不多,因此很多部門都是采用代理服務器上網,用微軟的Proxy Server固然方便,不過效率低,性能不好,而且最主要的是費用太貴。因此采用廉價的Linux服務器做代理上網就成了一個很好的解決方法。經過幾天的調試,筆者用Linux做透明網關服務器,讓宿捨的其他機器都可以通過一台Linux機器共享一個端口上網。感覺非常好。實現的方法是設置IP偽裝。
  
  二、背景
  機器 0:
    OS:Redhat 6.0, 成功安裝了雙網卡
    
  eth0: 192.168.2.61,連接到了校園網上
    eth0's NetMask: 255.255.254.0
    
  eth1: 192.168.11.1,連接到宿捨局域網上
    eth1's NetMask 255.255.255.0
  
  其中,宿捨局域網的IP是自定義的,為非法地址。
    機器 1:
    OS:Win9x
    IP:192.168.11.2
    GateWay:192.168.11.1 /*機器0的eth1*/
    NetMak: 255.255.255.0
    DNS :202.116.64.3 /*校園網的名字服務器*/
  
  三、目的
  使機器1能夠通過機器0上到校園網,就好像機器1直接連到校園網上一樣, 故此把機器0叫做透明網關。
  
  四、原理
  由於只有機器0的IP為合法地址,機器1想要上到校園網,就要把 機器1發送的數據包經過機器0偽裝後再轉發出去。期間,機器0把 機器1的IP數據包中的本地地址抽取出來並存儲,且用機器0的本 地地址代替後轉發出去返回的數據包經過機器0恢復後再轉發給機器1。
  
  五、步驟
  1、保證機器0能夠出校園網,並且能夠Ping到機器1,機器1也能夠Ping到機器0。至於這如何設置不再此次的討論范圍之內。
  
  2、在機器0上打開xwindows,運行:netcfg 選擇routing,允許(使能)Network Packet Forwarding(IPV4)。在機器0上建立一個文件:rules chmod +x rules使rules變為可執行文件。
  
  =(echo 1 > /proc/sys/net/ipv4/ip_forward)
    
  3、建立一個rules文件,具體路徑可以放到如/sbin中。 編輯這個文件,填寫以下內容:
  
    #在默認狀況下拒絕所有 ip 轉發。.0
    /sbin/ipchains -P forward DENY
  
    #允許宿捨網通過機器0使用ip轉發,至於ipchains參見man ipchains 或者ipchains how to(參考我們站點上的構建基於ipchains的Linux防火牆)
    /sbin/ipchains -A forward -j ACCEPT -i eth1 -s 192.168.0.0/24
    /sbin/ipchains -A forward -j MASQ -i eth0 -s 192.168.0.0/24
    #增加你需要的偽裝模塊。
    /sbin/modprobe ip_masq_ftp
    /sbin/modprobe ip_masq_quake
    /sbin/modprobe ip_masq_irc
    /sbin/modprobe ip_masq_user
    /sbin/modprobe ip_masq_raudio
  
  4、執行/sbin/rules即可。
  
  若把執行rules這個命令加到/etc/rc.d/rc.local中,那麼ipchains就可以啟動時自動執行。 本方法對於撥號上網同樣適用。
  
  六:簡單的方法:
  其實用LINUX做網關(只做為可以帶動整個局域上INTERNET的網關)很簡單,只要先連通(或拔號)上INTERNET,然後運行如下兩條命令, (當然要以root的身份):
  
  命令1:
  # echo 1 > /proc/sys/net/ipv4/ip_forward
  說明:允許Network Packet Forwarding(IPV4)
  
  命令2:
  # /sbin/ipchains -A forward -j MASQ -S xxx.xxx.xxx.xxx/32 說明:xxx.xxx.xxx.xxx為局域網內部某台機器的IP地址,此命令的意思是允許把xxx.xxx.xxx.xxx機器的IP包請求進行偽裝
  
  執行完這兩條命令就可以了...............
  
  然後在windows的客戶機上在TCP/IP屬性裡把網關設為這台LINUX的IP就可以了~
  
  不過這樣是不是有安全問題呢?

Copyright © Linux教程網 All Rights Reserved