前提知識
任何主機若要與非同網絡中的主機通信,則必須将封包發送到預設網關;
對Linux而言,IP位址是屬于主機(核心中)的,不屬于網卡,隻要屬于目前主機的IP位址間,都可直接響應,不稱為轉發
私有位址在路由器上是不允許被路由的
防火牆的類型與作用的鍊
主機防火牆:一般使用INPUT,OUTPUT鍊來過濾進入和發出的封包
網絡防火牆:一般使用PREROUTING,FORWARD,POSTROUTING鍊來轉發經過的封包
不同網絡間主機通信的方式
路由:
對于Linux主機,設定/proc/sys/net/ipv4/ip_forward的值為1,即開啟了路由功能,可以作為模拟路由器使用
注:但真實的路由器還應該存在生成路由表的機制,一般是基于路由協定(如RIP2,OSPF)動态學習的,在此不作讨論
NAT:
工作于網絡層和傳輸層,也可分為靜态NAT和動态NAT
Basic NAT:靜态NAT;NAT伺服器上有一個外網位址池,内網連接配接時直接配置設定一個外網IP使用,很不靈活
NAPT:動态NAT,Network Address Port Translation,即網絡端口位址轉換,也可分為SNAT和DNAT
SNAT:源位址轉換;适用于内網主機通路網際網路,原理圖如下:
<a href="http://s3.51cto.com/wyfs02/M02/23/75/wKioL1M2qQjDPBwNAAS9qCPdMFQ935.jpg" target="_blank"></a>
DNAT:目标位址轉換;适用于讓網際網路主機通路本地内網中的某主機上的服務,原理圖如下:
<a href="http://s3.51cto.com/wyfs02/M01/23/74/wKiom1M2qVPD1SQIAAVaGmF2b-Y863.jpg" target="_blank"></a>
iptables/netfilter基于SNAT和DNAT原理實作封包轉發
-j SNAT --to-source SIP
規則添加:在POSTROUTING鍊上
-j MASQUERADE
用于外網IP是ADSL撥号上網時生成的動态IP,MASQUERADE模式能自行查找能通路網際網路的外網IP,并完成SNAT
-j DNAT --to-destination DIP[:Port]
支援端口映射
規則添加:在PREROUTING鍊上
執行個體:
1
2
<code># 将外網對172.16.100.7:22022的通路轉發至内網的192.168.20.12.22</code>
<code>iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 22022 -j DNAT --to-destination 192.168.20.12.22</code>
iptables/netfilter實戰解析
需求分析
<a href="http://s3.51cto.com/wyfs02/M02/23/76/wKiom1M26zqSprGfAAMmc447Atg647.jpg" target="_blank"></a>
架構設計
<a href="http://s3.51cto.com/wyfs02/M01/23/77/wKioL1M26y_ASnyuAALkUgZwIyc755.jpg" target="_blank"></a>
配置部署
DNS Server配置
網絡配置
3
4
5
6
7
8
9
<code># vi /etc/sysconfig/network-scripts/ifcfg-eth0</code>
<code>DEVICE=</code><code>"eth0"</code>
<code>BOOTPROTO=</code><code>"static"</code>
<code>NM_CONTROLLED=</code><code>"no"</code>
<code>ONBOOT=</code><code>"yes"</code>
<code>TYPE=</code><code>"Ethernet"</code>
<code>IPADDR=172.16.251.178</code>
<code>NETMASK=255.255.0.0</code>
<code>GATEWAY=172.16.251.236</code>
DNS主配置檔案:/etc/named.conf
<code># named.conf中需修改的部分</code>
<code>listen-on port 53 { 127.0.0.1; 172.16.251.178;};</code>
<code>allow-query { any; };</code>
<code>recursion no;</code>
<code>#zone "." IN {</code>
<code># type hint;</code>
<code># file "named.ca";</code>
<code>#};</code>
DNS輔助配置檔案:/etc/named.rfc1912.zones
10
11
12
13
14
15
16
17
18
19
20
21
<code>acl inter_net {</code>
<code>172.16.251.0</code><code>/24</code><code>;</code>
<code>};</code>
<code>view inter_net {</code>
<code>match-clients { inter_net; };</code>
<code> </code><code>zone </code><code>"."</code> <code>IN {</code>
<code> </code><code>type</code> <code>hint;</code>
<code> </code><code>file</code> <code>"named.ca"</code><code>;</code>
<code> </code><code>};</code>
<code>zone </code><code>"jason.com"</code> <code>IN {</code>
<code>type</code> <code>master;</code>
<code>file</code> <code>"jason.com.inter_net"</code><code>;</code>
<code>view outer_net {</code>
<code>match-clients { any; };</code>
<code>file</code> <code>"jason.com.outer_net"</code><code>;</code>
區域資料檔案:
22
<code># vi /var/named/jason.com.inter_net</code>
<code>$TTL 1D</code>
<code>jason.com. IN SOA dns.jason.com. admin.jason.com (</code>
<code>2014032920 ; serial</code>
<code>1D ; refresh</code>
<code>1H ; retry</code>
<code>1W ; expire</code>
<code>3H ) ; minimum</code>
<code>@ NS dns</code>
<code>dns A 172.16.251.178</code>
<code>www A 172.16.251.182</code>
<code># vi /var/named/jason.com.outer_net</code>
<code>www A 3.3.3.1</code>
啟動named服務
<code>chown</code> <code>root.named jason.com.inter_net</code>
<code>chown</code> <code>root.named jason.com.outer_net</code>
<code>service named restart</code>
Web Server配置
<code>配置一個虛拟主機,監聽端口8080</code>
<code>在DocumentRoot目錄下建立一簡單的測試檔案</code><code>test</code><code>.html,内容随意,如</code>
<code>“Hello Mageedu”</code>
<code>啟動httpd服務即可</code>
Firewall配置
<code>IPADDR=172.16.251.236</code>
<code>GATEWAY=172.16.0.1</code>
<code># vi /etc/sysconfig/network-scripts/ifcfg-eth1</code>
<code>DEVICE=</code><code>"eth1"</code>
<code>IPADDR=3.3.3.1</code>
<code>NETMASK=255.255.255.0</code>
<code>DNS1=3.3.3.1</code>
注:因為3.3.3.1和3.3.3.3都是模拟的外網IP位址,故對應的網卡應處于同一信道内,且不能和内網的通信信道一緻,故在用虛拟機測試時,可将對應内網IP的網卡的網絡方式改為橋接,而對應外網IP的網卡的網絡方式改為自定義,如vmnet2
添加iptables規則
<code>iptables -t nat -A PREROUTING -d 3.3.3.1</code><code>/32</code> <code>-p udp --dport 53 -j DNAT --to-destination 172.16.251.178</code>
<code>iptables -t nat -A PREROUTING -d 3.3.3.1</code><code>/32</code> <code>-p tcp --dport 8080 -j DNAT --to-destination 172.16.251.182</code>
Inter Client配置
<code>IPADDR=172.16.251.176</code>
<code>DNS1=172.16.251.178</code>
<code># vi /etc/resolv.conf</code>
<code>nameserver 172.16.251.178</code>
Outer Client配置
<code>IPADDR=3.3.3.3</code>
<code>GATEWAY=3.3.3.1</code>
<code>nameserver 3.3.3.1</code>
DNS解析測試
<a href="http://s3.51cto.com/wyfs02/M00/23/77/wKioL1M27yeguPY3AAEmn_6VUto674.jpg" target="_blank"></a>
HTTP通路測試
<a href="http://s3.51cto.com/wyfs02/M00/23/76/wKiom1M273CAf5rlAAQtUHrZog8122.jpg" target="_blank"></a>
大功告成,哦也!
本文轉自 xxrenzhe11 51CTO部落格,原文連結:http://blog.51cto.com/xxrenzhe/1386677,如需轉載請自行聯系原作者