iptables小案例

iptables 小案例

  1. 需求 :只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.137.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。
    这需求不复杂,但是有许多条规则,写成脚本形式。
    脚本内容:

    #! /bin/bash
    ipt="/usr/sbin/iptables" //定义一个变量(关于iptables命令的绝对路径)
    $ipt -F //删除规则
    $ipt -P INPUT DROP // filter表INPUT链丢包
    $ipt -P OUTPUT ACCEPT //flter 表OUTPUT链允许包
    $ipt -P FORWARD ACCEPT //filter 表的FORWARD链允许包
    $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //添加规则对RELATED,ESTABLISHED状态进行放行
    $ipt -A INPUT -s 192.168.137.0/24 -p tcp --dport 22 -j ACCEPT //添加规则对INPUT表的来源 192.168.137.0/24网段的22端口放行
    $ipt -A INPUT -p tcp --dport 80 -j ACCEPT //对全网段80端口放行
    $ipt -A INPUT -p tcp --dport 21 -j ACCEPT //对全网端的21端口放行
    

2.关于icmp包(ping本机不同,ping外网能通)

iptables -I INPIUT -p -icmp --icmp-type 8 -j DROP

iptables nat表的应用

  1. 这里写图片描述(将A机器做个路由器)
    给A机器添加一块网卡
    这里写图片描述
    选择LAN区段
    这里写图片描述
    给B机器添加网卡LAN区段
    这里写图片描述
    给A机器网卡设置IP(ens37 192.168.100.1)
    编辑ens37 的配置文件
    /etc/sysconfig/network-scripts/ifcfg-ens37

    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens37
    UUID=d23205fd-677c-4490-92f0-dd3d07af7abf
    DEVICE=ens37
    ONBOOT=yes
    IPADDR=192.168.100.1
    NETMASK=255.255.255.0
    

    保存退出后重启网络服务

    [root@shuai-01 network-scripts]# service network restart
    

    查看网卡ip

    [root@shuai-01 network-scripts]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.176.135  netmask 255.255.255.0  broadcast 192.168.176.255
            inet6 fe80::16f5:8ee4:b971:e6fb  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:a1:0e:2c  txqueuelen 1000  (Ethernet)
            RX packets 735  bytes 66440 (64.8 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 592  bytes 74403 (72.6 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.176.150  netmask 255.255.255.0  broadcast 192.168.176.255
            ether 00:0c:29:a1:0e:2c  txqueuelen 1000  (Ethernet)
    
    ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255
            inet6 fe80::2224:2bb4:6539:1022  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:a1:0e:36  txqueuelen 1000  (Ethernet)
            RX packets 80  bytes 27360 (26.7 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 218  bytes 36144 (35.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Local Loopback)
            RX packets 76  bytes 6204 (6.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 76  bytes 6204 (6.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

B 机器设置IP(ens37 192.168.100.100)

ifconfig ens37 192.168.100.100

A机器pingB机器

    [root@shuai-01 network-scripts]# ping 192.168.100.100
    PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data.
    64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=0.668 ms
    64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=0.261 ms
    64 bytes from 192.168.100.100: icmp_seq=3 ttl=64 time=0.471 ms
    ^C
    --- 192.168.100.100 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2000ms
    rtt min/avg/max/mdev = 0.261/0.466/0.668/0.168 ms

B机器pingA机器 都能通

  1. 要使B机器能连上外网
    A机器打开路由转发(/proc/sys/net/ipv4/ip_forward为0表示没打开)

    [root@shuai-01 network-scripts]# cat /proc/sys/net/ipv4/ip_forward
    0
    
    [root@shuai-01 network-scripts]# echo "1" > /proc/sys/net/ipv4/ip_forward
    [root@shuai-01 network-scripts]# cat /proc/sys/net/ipv4/ip_forward
    1
    

    B机器上设置网关(A机器的ens37网卡做网关192.168.100.1)
    查看网关

    route -n 
    

    添加网关:

    route add default gw 192.168.100.1
    

    这是B机器就能ping通外网了。

  2. 需求
    这里写图片描述
    这里写图片描述
    两台机器之间不能直接通信要借助另一台机器,
    任意两台机器之间要通信,要有源IP,目的IP。c和a 不能直接通信,a 和 b 能通信, b和 c能通信。c要想和 a 通信,从c出去的给a的包经过b时要改变源地址(改成b的地址),从a 发出来给c的包要经过b时要改变目的地址(改成c的地址)
    在A机器上加两条规则

    [root@shuai-01 ~]# iptables -t nat -A PREROUTING -d 192.168.176.135 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
    
    [root@shuai-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.176.135
    

    B机器添加网关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值