天天看點

iptables實作網絡防火牆功能,SNAT以及DNAT功能

iptables實作網絡防火牆功能,SNAT以及DNAT功能

一、網絡防火牆的實作

<a href="https://s2.51cto.com/wyfs02/M02/98/B0/wKioL1k_lGOziwWSAACYa8FwcdU334.jpg" target="_blank"></a>

步驟:

<code>1.主機A添加預設路由資訊</code>

<code>    </code><code>route add default gw 10.0.0.111 </code>

<code>    </code><code>route -n</code>

<code>2.主機B開啟核心轉發功能</code>

<code>    </code><code>sysctl -w net.ipv4.ip_forward=1</code>

<code>3.tcpdump抓包測試資料</code>

<code>    </code><code>主機A:</code><code>ping</code> <code>172.16.254.52 </code>

<code>    </code><code>主機B抓包:tcpdump -i ens33 -nn icmp</code>

<code>    </code><code>測試結果:有10.0.0.110到172.16.254.52的請求封包資訊,但沒有回應封包資訊</code>

<code>4.主機C使用tcpdump抓包測試資料</code>

<code>    </code><code>tcpdump -i ens33 -nn icmp</code>

<code>    </code><code>測試結果:有回應封包資訊,但回應封包資訊發往給其他主機,是以要設定網關資訊</code>

<code>5.主機C添加路由資訊</code>

<code>    </code><code>route add -net 10.0.0.0</code><code>/24</code> <code>gw 172.16.252.52</code>

<code>6.主機A </code><code>ping</code><code>請求測試</code>

<code>    </code><code>ping</code> <code>172.16.254.52</code>

<code>    </code><code>測試結果:</code><code>ping</code><code>通</code>

<code>7.主機C啟動httpd服務</code>

<code>        </code><code>systemctl start httpd.service</code>

<code>8.主機A通路主機C的web頁面</code>

<code>        </code><code>curl http:</code><code>//172</code><code>.16.254.52 </code><code>#此時應該正常顯式頁面内容</code>

在上面的基礎上搭建網絡防火牆

<code>方式一:</code>

<code>9.拒絕所有轉發服務</code>

<code>        </code><code>iptables -A FORWARD -j REJECT</code>

<code>10.添加鍊規則:允許本地主機A通路外網主機C的80端口的服務</code>

<code>        </code><code>iptables -I FORWARD -s 10.0.0.0</code><code>/24</code> <code>-p tcp --dport 80 -j ACCEPT</code>

<code>11.添加鍊規則:允許外網主機C的80端口http服務響應本機</code>

<code>        </code><code>iptables -I FORWARD 2 -d 10.0.0.0</code><code>/24</code> <code>-p tcp --sport 80 -j ACCEPT</code>

<code>12.主機A測試能否通路主機C的web頁面</code>

<code>        </code><code>curl http:</code><code>//172</code><code>.16.254.52</code><code>#此時應該正常顯式頁面内容</code>

<code>方式二:</code>

<code>10.放行所有建立連接配接的資料封包</code>

<code>        </code><code>iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT</code>

<code>11.建立一條鍊規則允許本地主機A通路外網主機C</code>

<code>        </code><code>iptables -I FORWARD 2 -s 10.0.0.0</code><code>/24</code> <code>-m state --state NEW -j ACCEPT</code>

<code>12.主機A測試</code>

<code>13.添加鍊規則:允許外網主機C通路本地主機A的80端口的http服務</code>

<code>        </code><code>iptables -I FORWARD 3 -d 10.0.0.110 -p tcp --dport 80 -m state --state NEW -j ACCEPT </code>

<code>14.主機C測試</code>

<code>        </code><code>curl http:</code><code>//10</code><code>.0.0.110 </code><code>#此時應該正常顯式頁面内容</code>

<code>15.添加鍊規則:允許本機主機A開放更多端口的服務</code>

<code>        </code><code>iptables -R FORWARD 3 -d 10.0.0.110 -p tcp -m multiport --dport 21:23,80 -m state --state NEW -j ACCEPT</code>

<code>16.加載FTP子產品(兩種方式)</code>

<code>        </code><code>1.modprobe nf_conntrack_ftp</code>

<code>        </code><code>2.</code><code>vi</code> <code>/etc/sysconfig/iptables-config</code> 

<code>        </code><code>IPTABLES_MODULES=</code><code>"nf_conntrack_ftp"</code>

<code>17.建立FTP通路鍊規則,開放FTP被動模式</code>

<code>        </code><code>iptables -A FORWARD -d 10.0.0.110 -p tcp -m state --state RELATED -j ACCEPT</code>

<code>18.主機C測試</code>

<code>        </code><code>lftp 10.0.0.110</code>

<code>        </code><code>ssh</code> <code>[email protected]</code>

<code>        </code><code>curl http:</code><code>//10</code><code>.0.0.110 </code><code>#此時測試應該都能正常擷取資訊</code>

二、SNAT轉發功能實作

<a href="https://s4.51cto.com/wyfs02/M02/98/B0/wKiom1k_lK-AEjZCAACgLTy0RV0669.jpg" target="_blank"></a>

三、DNAT轉發功能的實作

<a href="https://s3.51cto.com/wyfs02/M02/98/B0/wKioL1k_lM7wsB9_AACHGqWj7Gc415.jpg" target="_blank"></a>

本文轉自 PowerMichael 51CTO部落格,原文連結:http://blog.51cto.com/huwho/1934983,如需轉載請自行聯系原作者

繼續閱讀