iptables 學習筆記

1.基本概念

linux內核模塊netfilter實現防火牆功能,iptables、etables和firewalld都是用來實現跟內核的交互。

三個工具彼此衝突,同一時間系統只能使用其中一個。

iptables是比較經典的工具,功能強大,資料較多。它有三張表nat,filter,mangle和5條鏈PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING。

filter是不加參數時的默認表,主要用來實現防火牆的功能;mangle是張自定義表,包含各個鏈,在數據流向上同一鏈上處理優先級最高,一般少用到,下面的討論我們略過此表。

數據包進入系統後首先進入nat表的PREROUTING鏈,在這裏可以改變數據包的目的地址,通常用在端口轉發或者nat到DMZ區。

若目的地址是本機,數據包流向filter表的INPUT鏈;否則包進入fiter表的FORWARD鏈,linux默認三層轉發是關閉的,要實現轉發就要修改系統參數,否則系統會把流向非本機的數據包丟棄。

流向本機的數據會再經過filter表INPUT鏈和output表nat、filter鏈進一步處理。

最終數據包進入NAT表的POSTROUTING鏈, 在這裏可以修改數據包的源地址。

image

各個表中的規則是從第一條語句開始匹配,匹配到規則就進入下一張表,所有規則都不匹配的情況下會按默認policy執行。


2.基本操作

  a:刪除策略

  iptables -F 不指定鏈,清空默認表中所有鏈中規則

  iptables -X 清除預設表filter中使用者自定鏈中規則

  iptables -Z 清除預設表filter中使用者自定鏈計數

    iptables -F

    iptables -X

    iptables -Z

    iptables -F -t nat

    iptables -X -t nat

    iptables -Z -t nat

   b:配置默認策略

    iptables -P INPUT DROP

    iptables -P FORWARD DROP

    iptables -P OUTPT ACCEPT

    iptables -t nat -P PREROUTING ACCEPT

    iptables -t nat -P OUTPUT ACCEPT

    iptables -t nat -P POSTROUTING ACCEPT

    c:設置迴環地址

    iptables -A INPUT -i lo -j ACCEPT

    d:連接狀態設置

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    e:保存和恢復

    iptables-save -C 保存計數 -t 指定表,不指定則保存所有表

    iptables-save > /etc/iptables-save

    iptables-retore -C包括計數 -n 不覆蓋已經表及表內規則,默認是清除所有

    iptables-restore < /etc/iptables-save

    永久保存

    service iptables save

3.簡單nat共享上網

首先內核允許數據轉發

grep net.ipv4.ip_forward  /etc/sysctl.conf

                net.ipv4.ip_forward=1

生效配置

sysctl –p

然後添加規則

iptables –t nat –A POSTROUTING –s 192.168.1.0/24  -o int_wan -j MASQUERADE

共享上網是在數據發出前改變其源地址,這樣數據才能在公網路由回來。

MASQUERADE用在訪問外網的端口是動態獲取IP的情況,如PPPoE。

若端口是靜態IP,則改成

iptables –t nat –A POSTROUTING –s 192.168.1.0/24 SNAT –to-destination IP_WAN

 

4.端口轉發

iptables –t nat –A PREROUTING –i eth_wan –p tcp –dport 80 –j DNAT –to-destination internalServer:webPort

將外網訪問網頁的流量轉發至內網網頁服務器,在流量進入路由之前,修改目的地址和端口,所以用在PREROUTING鏈。

同時我們需要添加另外一條規則,修改內網網頁服務器出去的數據包爲公網可路由的IP。

iptables –t nat –A POSTROUTING –d ip_lan –dport servicePort –j SNAT –to-source ip_wan

劫持本地流量,做透明代理

iptables –t nat –A PREROUTING –i eth_lan –p tcp –dport 80 –j REDIRECT –to-port 8888

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章