美文网首页linux运维
linux日常管理(四)--iptables案例

linux日常管理(四)--iptables案例

作者: awsome365 | 来源:发表于2018-10-19 20:38 被阅读3次

    10.15 iptables filter表案例
    10.16/10.17/10.18 iptables nat表应用

    iptables小案例

    需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.188.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。

    由于要把默认策略改为DROP,并且规则很多,所以最好写成脚本vim /usr/local/sbin/iptables.sh,以下是脚本内容:

    #! /bin/bash
    ipt="/usr/sbin/iptables"
    $ipt -F #不加-t选项默认修改filter表
    $ipt -P INPUT DROP
    $ipt -P OUTPUT ACCEPT
    $ipt -P FORWARD ACCEPT
    $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    $ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
    $ipt -A INPUT -p tcp --dport 80 -j ACCEPT
    $ipt -A INPUT -p tcp --dport 21 -j ACCEPT  
    

    icmp示例:iptables -I INPUT -p icmp --icmp-type 8 -j DROP。这条命令实现本机ping外机可以通,但其他机器不能ping通本机。

    nat表应用

    A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
    需求1:可以让B机器连接外网
    A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward
    A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
    B上设置网关为192.168.100.1
    需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
    A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward
    A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
    A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
    B上设置网关为192.168.100.1

    iptables其他重要事项

    首先区分以下centos6和centos7两个版本的iptables。两个linux版本都有iptables工具,但是centos7默认没有安装iptables-services。这是因为centos7默认使用firewalld来管理netfilter。而firewalld兼容iptables,只是没有安装iptables-services组件。所以centos7上firewalld上想使用以前的iptables来管理防火墙可以关掉firewalld、取消开机启动,然后安装iptables-services、设置iptables开机启动(详细在上一篇中有)。

    试验或者生产中操作防火墙要注意保存和备份iptables规则。iptables设置完不保存,重启服务就恢复之前了。设置完记得service iptables save,这条命零会把规则保存到/etc/sysconfig/iptables。centos7的firewalld虽然兼容iptables,但是不能这条命令不能使用。不过可以使用iptables-save命令,默认标准输出到屏幕,配合重定向很容易备份防火墙规则:

    iptables-save > my.ipt #把iptables规则备份到my.ipt文件中
    iptables-restore < my.ipt #恢复刚才备份的规则
    

    相关文章

      网友评论

        本文标题:linux日常管理(四)--iptables案例

        本文链接:https://www.haomeiwen.com/subject/cjbuzftx.html