天天看点

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

继续阅读