## iptables命令、規則、參數詳解
## 表 (table)
包含4個表:
4個表的優先級由高到低:raw-->mangle-->nat-->filter
* raw---RAW表只使用在PREROUTING鏈和OUTPUT鏈上,因為優先級最高,從而可以對收到的數據包在連接跟蹤前進行處理。一但用戶使用了RAW表,在某個鏈上,RAW表處理完后,將跳過NAT表和ip\_conntrack處理,即不再做地址轉換和數據包的鏈接跟蹤處理了.
* filter---這個規則表是預設規則表,擁有 INPUT、FORWARD 和 OUTPUT 三個規則鏈,這個規則表顧名思義是用來進行封包過濾的理動作
* net----此規則表擁有prerouting和postrouting兩個規則鏈, 主要功能為進行一對一、一對多、多對多等網址轉譯工作(SNATDNAT)
* mangle--此規則表擁有prerouting、FORWARD、postrouting三個規則鏈,除了進行網址轉譯工作會改寫封包外,在某些特殊應用可能也必須去改寫封包(ITL、TOS)或者是設定MARK(將封包作記號,以進行后續的過濾)這時就必須將這些工作定義在mangles規則表中
## 常用命令
```
常用命令:
-A 追加規則-->iptables -A INPUT
-D 刪除規則-->iptables -D INPUT 1(編號)
-R 修改規則-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代現行規則,順序不變(1是位置)
-I 插入規則-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一條規則,原本位置上的規則將會往后移動一個順位
-L 查看規則-->iptables -L INPUT 列出規則鏈中的所有規則
-N 新的規則-->iptables -N allowed 定義新的規則
```
## 通用參數
```
通用參數:
-p 協議 例:iptables -A INPUT -p tcp
-s源地址 例:iptables -A INPUT -s 192.168.1.1
-d目的地址 例:iptables -A INPUT -d 192.168.12.1
-sport源端口 例:iptables -A INPUT -p tcp --sport 22
-dport目的端口 例:iptables -A INPUT -p tcp --dport 22
-i指定入口網卡 例:iptables -A INPUT -i eth0
-o指定出口網卡 例:iptables -A FORWARD -o eth0
```
```
-j 指定要進行的處理動作
常用的ACTION:
DROP:丟棄
REJECT:明示拒絕
ACCEPT:接受
SNAT基于原地址的轉換
source--指定原地址
```
比如我們現在要將所有192.168.10.0網段的IP在經過的時候全都轉換成172.16.100.1這個假設出來的外網地址:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外網有效ip)
這樣,只要是來自本地網絡的試圖通過網卡訪問網絡的,都會被統統轉換成172.16.100.1這個IP.
MASQUERADE(動態偽裝)--家用帶寬獲取的外網ip,就是用到了動態偽裝
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
DNAT目標地址轉換
destination-指定目標地址
iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2
10.18訪問80端口轉換到100.2上
MASQUERADE:源地址偽裝
REDIRECT:重定向:主要用于實現端口重定向
MARK:打防火墻標記的
RETURN:返回 在自定義鏈執行完畢后使用返回,來返回原規則鏈。
構建iptable策略的最后一步實在linux內核中啟用ip轉發
### forwarding
echo "\[+\] Enabling Ip forwarding..."
echo 1 > /proc/sys/net/ipv4/ip\_forward
## 測試用到的命令
hping
nc
- 寫在前面
- linux命令行
- 基礎篇
- 1.SSH連接工具
- 2.查看系統版本信息
- 3.查看IP地址
- 4.查看cpu信息
- 5.查看內存磁盤信息
- 6.文件上傳下載
- 7.linux中查找文件(find)
- 8.修改root賬號密碼
- 9.通過進程號查看端口
- 10.校驗MD5值
- 11.Linux命令之seq
- 12.Linux命令之corntab
- 13.linux命令之awk
- 進階篇
- 查看防火墻是否開啟
- linux創建新的用戶
- 更改文件的用戶組
- 查找JAVA_HOME路徑
- Linux主機時間同步
- 高CPU排查-個人總結
- Linux查看GPU性能
- 文件排序工具sort
- sed
- grep
- 實戰篇
- 1.Linux基線
- 2.iptables學習
- 3.Tcpdump抓包命令
- 4.CentOS7更換鏡像源
- shell腳本篇
- 1.Shell腳本速查手冊
- 2.Shell中獲取取昨天和多天前日期
- 3.rsync刪除文件
- 4.nginx自動化安裝腳本
- 5.后臺啟動服務
- 6.備份文件保留5天
- 數據庫
- MySQL數據庫備份命令
- ES數據庫備份
- filebeat工具
- packetbeat工具
- MySQL數據庫中刪除表
- Docker容器
- 1.安裝docker容器
- 2.docker容器的使用
- 3.docker overlay2 是存放什么的
- 4.docker刪除已停止的容器
- 5.docker網卡的IP地址修改
- Ubuntu容器下載vim,curl命令
- docker磁盤占用瞬間變大問題解決
- Python學習
- 安裝python環境
- Python 把代碼編譯成pyc文件