2010年12月8日 星期三

iptables入門2

參數說明:
# iptables [-t filter|nat] [-AI INPUT,OUTPUT,FORWARD | PREROUTING, OUTPUT, POSTROUTING] [-io interface] [-p tcp,udp,icmp,all] [-s IP/network] [--sport ports] [-d IP/network] [--dport ports] -j [ACCEPT,DROP]
-A: 新增加一條規則,該規則增加在最後面
-I: 插入一條規則,如果沒有設定規則順序,預設是插入變成第一條
INPUT: 規則設定為filter table的INPUT鏈
OUTPUT: 規則設定為filter table的OUTPUT鏈
FORWARD: 規則設定為filter table的FORWARD鏈
-i: 設定封包進入的網路卡介面
-o: 設定封包流出的網路放介面
interface: 網路卡介面,如ppp0, eth0, eth1
-p: 封包協定
tcp: 封包為TCP協定封包
udp: 封包為UDP協定封包
icmp: 封包為ICMP定
all: 所有封包
-s: 來源封包的IP或是Network
--sport: 來源封包的port,也可使用port1:port2,如137:139
-d: 目的主機的 ip 或是Network
--dport: 目的主機的port
-j: 動作
ACCEPT: 接受封包
DROP: 丟棄封包
LOG: 記錄封包(/var/log/messages)

iptables入門1

1. 觀察目前iptables設定
# iptables -L -n
2. 打開Forward
# echo "1" > /proc/sys/net/ipv4/ip_forward
3. 清除所有iptables規則
清除預設表filter中,所有規則鏈中的規則
# iptables -F
清除預設表filter中,使用者自訂鏈的規則
# iptables -X
清除mangle表中,所有規則鏈中的規則
# iptables -F -t mangle
清除mangle表中,使用者自訂鏈的規則
# iptables -t mangle -X
清除nat表中,所有規則鏈中的規則
# iptables -t nat -F
清除nat表中,使用者自訂鏈的規則
# iptables -t nat -X
參數說明
-F: 清除所有的已訂定的規則
-X: 清除所有使用者建立的規則
-Z: 將所有的chain的計數與流量統計都歸零
4. 選擇Policy
# iptables [-t tables] [-P] [INPUT,OUTPUT,FORWARD | PREROUTING,OUTPUT,POSTROUTING] [ACCEPT,DROP]
參數說明
-P: 定義政策
INPUT: 封包為輸入主機的方向
OUTPUT: 封包為輸出主機的方向
FORWARD: 封包為不進入主機而向外再傳輸出去的方向
PREROUTING: 在進入路由之前進行的工作
OUTPUT: 封包為輸出主機的方向
POSTROUTING: 在進入路由之後進行工作
設定全部丟棄
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
設定全部接受
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
一般設定
# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -t nat -P PREROUTING ACCEPT
# iptables -t nat -P OUTPUT ACCEPT
# iptables -t nat -P POSTROUTING ACCEPT

有的沒的

人真的是久沒用,就什麼都忘光光了....
我看沒事還是寫下來,免得真的什麼都忘記
1. 設定 router
# 可以在 /etc/sysctl.conf 下更改
# net.ipv4.ip_forward = 0 把 0 改成 1
# 或者是直接下 echo "1" > /proc/sys/net/ipv4/ip_forward
# 或者是 sysctl net.ipv4.ip_forward=1
# 然後再重新啟動網路 /etc/rc.d/init.d/network restart

2. 如果內部要做NAT,那就需要讓主機允許內部IP通過
# 如果 eth0 是連外 eth1 是連內
# iptables -A INPUT -i eth1 -j ACCEPT
# 讓NAT主機可以接受來自內部的封包
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
# 加入NAT封包偽裝