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
