iptables路由转换
iptables使用
- iptables簡介
- iptables路由表
- 表(功能)<—— ——>鏈(鉤子)
- 處理動作(target)
- iptables的幫助信息
- iptables路由轉發
- iptables端口轉發
iptables簡介
iptables其實不是真正的防火墻,我們可以把它理解成一個客戶端代理,用戶通過iptables這個代理,將用戶的安全設定執行到對應的"安全框架"中,這個"安全框架"才是真正的防火墻,這個框架的名字叫netfilter
netfilter才是防火墻真正的安全框架(framework),netfilter位于內核空間。
iptables其實是一個命令行工具,位于用戶空間,我們用這個工具操作真正的框架。
netfilter/iptables(下文中簡稱為iptables)組成Linux平臺下的包過濾防火墻,與大多數的Linux軟件一樣,這個包過濾防火墻是免費的,它可以代替昂貴的商業防火墻解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。
Netfilter是Linux操作系統核心層內部的一個數據包處理模塊,它具有如下功能:
網絡地址轉換(Network Address Translate)
數據包內容修改
以及數據包過濾的防火墻功能
所以說,雖然我們使用service iptables start啟動iptables"服務",但是其實準確的來說,iptables并沒有一個守護進程,所以并不能算是真正意義上的服務,而應該算是內核提供的功能
iptables路由表
我們自定義的所有規則,都是這四種分類中的規則,所有規則都存在于這4張“表”中
表(功能)<—— ——>鏈(鉤子)
filter表中的規則可以被鏈:INPUT,FORWARD,OUTPUT 使用
nat表中的規則可以被鏈:PREROUTING,OUTPUT,POSTROUTING,INPUT 使用
mangle表中的規則可以被鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 使用
raw表中的規則可以被鏈:PREROUTING,OUTPUT使用
處理動作(target)
ACCEPT:允許數據包通過
DROP:直接丟棄數據包,不給任何回應信息
REJECT:拒絕數據包通過,必要時會給數據端發送一個響應的信息,客戶端剛請求就會收到拒絕的信息
SNAT:源地址轉換,解決內網用戶用同一個公網地址上網的問題
MASQUERADE:是SNAT的一種特殊形式,適用于動態的,臨時會變的IP上
DNAT:目標地址轉換
REDIRECT:在本機做端口映射
LOG:在/var/log/messages文件中記錄日志信息,然后將數據包傳遞給下一條規則,也就是說除了記錄以外不對數據包做任何其他操作,任然讓下一天規則去匹配
iptables的幫助信息
Usage: iptables -[AD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
指令Commands:
Either long(單詞,以 – 做前導) or short(字母,區分大小寫,以 - 做前導) options are allowed.
–append -A chain Append to chain
–delete -D chain Delete matching rule from chain
–delete -D chain rulenum
Delete rule rulenum (1 = first) from chain
–insert -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
–replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
–list -L [chain [rulenum]]
List the rules in a chain or all chains
–list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
–flush -F [chain] Delete all rules in chain or all chains
–zero -Z [chain [rulenum]]
Zero counters in chain or all chains
–new -N chain Create a new user-defined chain
–delete-chain
-X [chain] Delete a user-defined chain
–policy -P chain target
Change policy on chain to target
–rename-chain
-E old-chain new-chain
Change chain name, (moving any references)
參數(選項)Options:
[!] --proto -p proto protocol: by number or name, eg. `tcp’
[!] --source -s address[/mask][…]
source specification
[!] --destination -d address[/mask][…]
destination specification
[!] --in-interface -i input name[+]
network interface name ([+] for wildcard)
–jump -j target
target for rule (may load target extension)
–goto -g chain
jump to chain with no return
–match -m match
iptables路由轉發
需要轉發的主機修改網關為路由轉換主機IP地址
network:version: 2renderer: networkdethernets:eno1:addresses: [10.1.65.100/16]gateway4: 10.1.65.49 #此處修改路由主機IP地址nameservers:addresses: [10.1.1.1, 223.5.5.5]]# echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
]# sysctl -p
net.ipv4.ip_forward = 1
]# iptables -t nat -A POSTROUTING -o 外網網卡 -s 內網IP -j SNAT --to 外網IP地址
]# netplay apply
iptables端口轉發
]# iptables -t nat -A PREROUTING -p tcp --dport 8090 -j DNAT --to-destination 192.168.1.10:8080#8090為轉發后目標主機的代理端口#192.168.1.10:8080為需要轉發的端口 ]# iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.10 --dport 8080 -j SNAT --to-source 192.168.1.20#192.168.1.20為代理主機IP地址總結
以上是生活随笔為你收集整理的iptables路由转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迎新:Apache IoTDB 喜迎 2
- 下一篇: .net ImageProcessor