歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux下IpTables的配置基礎教程

1、 指定表
  
  filter為包過濾防火牆默認表,nat表,mangle表
  
  2、 指定操作命令
  
  添加、刪除、更新
  
  3、 指定鏈
  
  操作包過濾防火牆的input,output,forward。也可能操作自己定義的。
  
  4、 指定規則匹配器
  
  各種規則匹配。如IP、端口、包類型
  
  5、 指定目標動作
  
  ACCEPT表示通過 DROP表示被丟棄 REJECT表示拒絕包
  
  LOG表示包的有關信息被記錄日志 TOS改寫包的TOS值
  
  用法:<嚴格區分大小寫>
  
  iptables [-t table] cmd [chain][rule-matcher][-j target]
  
  cmd:
  
  -A 在所選鏈的尾添加一條或多條規則
  
  -D 刪除
  
  -R 替換
  
  -I 插入
  
  -L 列出所有規則
  
  -F 清除
  
  -N 創建
  
  -X 刪除指定的用戶定義鏈
  
  -P 為永久鏈指定默認規則
  
  -C 檢查給定的包是否與指定鏈的規則相匹配
  
  -Z 將指定鏈中所有規則的包字節記數器清零
  
  -h 顯示幫助信息
  
  //例子
  
  # touch /etc/rc.d/filter-firewall
  
  //
  
  IPT=/sbin/iptables
  
  WWWSERVER=192.168.168.119
  
  FTPSERVER=192.168.168.119
  
  IPRANGE=192.168.168.0/24
  
  $IPT -F
  
  $IPT -P FORWARD DROP
  
  $IPT -A FORWARD -p tcp -d $WWWSERVER --dport www -i eth0 -j ACCEPT
  
  $IPT -A FORWARD -p tcp -d $FTPSERVER --dport ftp -i eth0 -j ACCEPT
  
  $IPT -A INPUT -s 192.168.168.81 -i eth0 -j DROP
------------------------
  案例:
  前幾天遇到一個小問題:
  一個小的網絡,擁有一個電信公網IP。用LINUX做NAT後所有用戶都走這個IP出去。內部有一些服務器要向外公布,如:80,在NAT上做SNAT(讓大家都走這裡上外網):
  iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 222.111.33.88
  然後給要公布的服務做DNAT(外面的客戶可以通過公網IP訪問服務器):
  iptables -t nat -A PREROUTING -d 222.111.33.88 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.250:80
  這樣兩步之後,應該內部用戶能上外網了,外面的用戶也能訪問到我們內部的服務器。
  **注:要打開轉發,和清空以前的規則。******
  echo 1 >/proc/sys/net/ipv4/ip_forward
  iptables -F
  iptables -X
  iptables -t nat -F
  iptables -t nat -X
********************************

  但是現在出現一個問題,就是NAT後面(LAN)的用戶不通直接通過WAN IP:222.111.33.88 來訪問內部服務器。客戶覺得只記一個IP(222.111.33.88 )方便點,而且他們也不想買域名,覺得沒撒意思。他只想讓大家記得這個IP。隨時隨地(在內網和外網)都可以訪問。

  現在我們來看看為什麼在內網無法通過WAN IP來訪問服務器,我們看看數據包是怎麼走的:
  假設內網訪問的用戶IP是:192.168.1.123 服務器IP是:192.168.1.250,那整個過程是這樣的:
  192.168.1.123通過XXX端口訪問222.111.33.88的80端口,源IP端口:192.168.1.123:XXX 目標IP端口:222.111.33.88:80
  NAT在接到數據包後,發現這個請求是向內部的(DNAT),直接將數據包直接發給192.168.1.250。
  192.168.1.250收到來自192.168.1.123的包後。再回應給192.168.1.123,192.168.1.123會收到一個類似:192.168.1.250:80 --->192.168.1.123XXX的回應。
  但192.168.1.123請求的是:222.111.33.88:80,所以不接收192.168.1.250:80 的回應。數據傳輸失敗。所以內部用戶無法直接通過WAN IP來訪問。
  通過上面的過程我們發現問題主要出在內網請求到網關後,進入第一個鏈PREROUTING就是DNAT(端口映射)不會經過SNAT做源地址轉換,因為不是從外網網卡出去的。所以要想讓數據包正確回來,就得在PREROUTING後做一次SNAT。
  iptables -t nat -I POSTROUTING -s 192.168.1.0/255.255.255.0 -p tcp -d 192.168.1.250 --dport 80 -j SNAT --to 192.168.1.1
  OK,問題解決了。
  ***如果是FORWARD DROP了的話,記得打開192.168.1.250:80
  iptables -A FORWARD -p tcp -d 192.168.1.250 --dport 80 -j ACCEPT

  如果要用FTP服務,記得要加載相應的FTP模塊:
  modprobe ip_conntrack_ftp
  modprobe ip_nat_ftp
  還得注意主、被動模式

--------------------------
  另一篇:
  1、iptables介紹

  iptables是復雜的,它集成到linux內核中。用戶通過iptables,可以對進出你的計算機的數據包進行過濾。通過iptables命令設置你的規則,來把守你的計算機網絡──哪些數據允許通過,哪些不能通過,哪些通過的數據進行記錄(log)。接下來,我將告訴你如何設置自己的規則,從現在就開始吧。

  2、初始化工作

  在shell提示符 # 下打入

  iptables -F

Copyright © Linux教程網 All Rights Reserved