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,如需转载请自行联系原作者