天天看点

iptables filter表案例、iptables nat表应用

iptables filter表案例

[root@test-7 shell]# cat iptables.sh 

#! /bin/bash

ipt="/usr/sbin/iptables"  #iptables使用绝对路径

$ipt -F  # 清空iptables

$ipt -P INPUT DROP #将所有进来的先drop

$ipt -P OUTPUT ACCEPT #将所有出去的接受

$ipt -P FORWARD ACCEPT #将转发到外部机器的接受

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #接受含有状态的(RELATED,ESTABLISHED)

$ipt -A INPUT -s 192.168.100.0/24 -p tcp --dport 22 -j ACCEPT #接受192.168.100.0/24 的22端口

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT #80/21端口开发

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

2、[root@test-7 shell]# sh iptables.sh

3、

[root@test-7 shell]# iptables -nvL

Chain INPUT (policy DROP 9 packets, 702 bytes)

 pkts bytes target     prot opt in     out     source               destination         

   38  2664 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

    0     0 ACCEPT     tcp  --  *      *       192.168.100.0/24     0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21

4、[root@test-7 shell]# service iptables save

5、禁ping

[root@test-7 shell]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

iptables nat表应用

A机器两块网卡eno16777736(192.168.100.102)、eno33554984(192.168.133.1),eno16777736可以上外网,eno33554984仅仅是内部网络,B机器只有eth1(192.168.133.2),和A机器eno33554984可以通信互联。

 需求1:可以让B机器连接外网,就是让A机器做路由器,B机器就是手机,电脑

解决:

1、需要在A、B机器上都添加一个网卡,选择自定义的区段

<a href="https://s5.51cto.com/oss/201711/01/65e626a85127fb24d57ee1e7e169860d.png-wh_500x0-wm_3-wmp_4-s_368856959.png" target="_blank"></a>

<a href="https://s2.51cto.com/oss/201711/01/b817cf26e24f2d846dea73e4d5dee438.png-wh_500x0-wm_3-wmp_4-s_1340263074.png" target="_blank"></a>

<a href="https://s2.51cto.com/oss/201711/01/7ca26cefe4a9cc3a7188d01863fee8c3.png-wh_500x0-wm_3-wmp_4-s_970358877.png" target="_blank"></a>

2、在A机器上设置IP [root@test-7 ~]# ifconfig eno33554984 192.168.133.1/24

   在B机器上设置IP  [root@test-2 ~]# ifconfig eth1 192.168.133.2/24

3、保证192.168.133.1 、192.168.133.2互通(ping的通)

4、A机器上打开路由转发 echo "1"&gt;/proc/sys/net/ipv4/ip_forward

5、在A机器上添加:iptables -t nat -A POSTROUTING -s 192.168.133.0/24 -o eno16777736 -j MASQUERADE

6、service iptables save

7、在B机器上设置网关(这个是A机器的IP):route add default gw 192.168.133.1

8、在B机器上ping 192.168.133.1、192.168.100.1(可以访问外网的网关)

9、在B机器上设置DNS:114.114.114.114

 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口

C机器就是window电脑 192.168.100.100

A机器就是路由器     192.168.100.102

B机器               192.168.133.2

1、A上打开路由转发echo "1"&gt;/ proc/sys/net/ipv4/ip_forward

2、端口映射,访问192.168.100.102:1122 跳转到192.168.133.2:22

先清空防火墙设置:iptables -t nat -F

A上执行:iptables -t nat -A PREROUTING -d 192.168.100.102 -p tcp --dport 1122 -j DNAT --to 192.168.133.2:22

         iptables -t nat -A POSTROUTING -s 192.168.133.2 -j SNAT --to 192.168.100.102

3、 B上设置网关为192.168.133.1

4、在C机器上连接192.168.100.102:1122;可以连接

<a href="https://s4.51cto.com/oss/201711/01/25e97e1f519c32c31637c030f32fb469.png-wh_500x0-wm_3-wmp_4-s_3040913738.png" target="_blank"></a>

本文转自 jiekegz  51CTO博客,原文链接:http://blog.51cto.com/jacksoner/1978215