iptables filter表案例/iptables nat表应用

iptables filter表案例

1.新建一个脚本文件

vim /usr/local/sbin/iptables.sh

2.写入脚本内容:

ipt="/usr/sbin/iptables"  
$ipt -F             
$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.61.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

上面-s选项后面紧跟的ip可以使用w命令查看当前xshell连接的ip区间即可;

-m state --state <状态>

有数种状态,状态有:

▪ INVALID:无效的封包,例如数据破损的封包状态

▪ ESTABLISHED:已经联机成功的联机状态;

▪ NEW:想要新建立联机的封包状态;

▪ RELATED:这个最常用!表示这个封包是与我们主机发送出去的封包有关, 可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机, 可以简化相当多的设定规则。

3.保存脚本文件并sh命令执行此脚本文件

sh /usr/local/sbin/iptables.sh

4.查看规则是否生效

iptables -nvL

5.恢复默认规则

service iptables restart

6.关于icmp的包比较常见的应用,执行以下命令(这条命令会禁止别人ping不通本机,但是本机可以ping通外网)

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

7.删除这条规则命令如下

 iptables -D INPUT -p icmp --icmp-type 8 -j DROP

参考下面实验:

iptables之-m --state

iptables nat表应用

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

说白了就是做一个小路由器, 做这个试验无论什么时候一定要确认 ifconfig 输出的 IP 是否是 OK的

在此之前如果使用的是虚拟机演戏的话,需要预备几步工作:

1.给A机器添加网卡

2.默认选项点击完成

3.选择右侧LAN区段:(相当于连到了内网的交换机上, 真机是连不上的, 内网的两台机器可以连上

4.LAN 区段设置, LAN 区段的名称可以自定义

5.选中 设置好的 LAN 区段 并点击确定, 那么就设置好了 LAN 区段

6.添加好的网卡

7.依照以第一台机器的方法对第二台机器设置网卡, 选择之前设置好的 LAN 区段名称; 但是第二台机器有设置好 IP 的网卡, 需要禁掉它

8.启动两台虚拟机, A机器可以远程连接(有设置好 ip 的网卡), 新添网卡因为没设置好 ip, 所以不能远程连接,新添加的ens37LAN区段还没有ip显示

9.添加新增网卡的IP方法: 命令行或设置配置文件, 设置配置文件之前有讲过; 命令行设置的 IP 重启后就不生效了, 所以想 IP 长久存在, 需要拷贝配置文件和配置配置文件

下面手动设置ip命令行的方法

因为不能远程第二台机器, 所以需要在虚拟机端去操作,为了保险,先禁用掉ens33网卡

B机器同样手动设置Ip,设置为192.168.200.100

主机B上ping一下A的LAN区段

主机A上ping一下B主机LAN段

Windos也ping不通两个LAN区段

确认B机器不能上外网

10.想使用 NAT 表/内核转发, 必须要修改一下内核参数

## 如果 /proc/sys/net/ipv4/ip_forward 为 0 就表示没有开启转发, 
cat /proc/sys/net/ipv4/ip_forward
0
## 所以将其设置为 1 , 开启内核转发, 从而打开端口转发(要想使用 NAT , 必须打开它)
echo "1" > /proc/sys/net/ipv4/ip_forward; cat /proc/sys/net/ipv4/ip_forward
1

11.增加一条实现上网的规则: iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE , 目的是为了让 192.168.100.0/24 能上网

#增加规则
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens33 -j MASQUERADE
#查看规则
[root@yolks1 ~]# iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens33 -j MASQUERADE
[root@yolks1 ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens33   192.168.200.0/24     0.0.0.0/0

12.B 机器设置网关 route add default gw 192.168.200.1 ; 且可以 ping 通另一个网段

设置 B 机器的 DNS 看看能否连网 vi /etc/resolv.conf

这样B机器技能ping通A机器也能ping通外网了,比如你ping一个A机器可以连接外网IP的地址或则ping百度或者腾讯的地址

远程访问B机器 删掉A机器之前设定的nat表的规则; 如果做到这一步出现 Name or service not known , 就要去 iptables -F, 甚至也需要 iptables -t nat -F

iptables -t nat -D POSTROUTING -s 192.168.200.0/24 -o ens33 -j MASQUERADE

重新设定一个nat表的规则(针对进去的数据包)

iptables -t nat -A PREROUTING -d 192.168.61.130 -p tcp --dport 1122 -j DNAT --to 192.168.200.100:22

13.不能每次通过虚拟机终端去操作, 很麻烦, 所以需要通过 A 机器去登录 B 机器, 这叫做端口映射, 而 22 端口正在用, 如果映射成其他端口(eg: 1122)那就可以用了, 也就是说访问 192.168.61.130:1122 就是访问 192.168.200.100:22; 此时 windows 是 A 机器, B 机器是 Linux A, B 机器是 Linux B ;

最后在Xshell设置一个远程登录到IP地址为192.168.61.130端口为1122的服务器即可。

笔记参考:

iptables的实例操作

拓展

  1. iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
  2. sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
  3. iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html http://jamyy.us.to/blog/2006/03/206.html

转载于:https://my.oschina.net/yolks/blog/1845897

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值