10.15-10.18 iptables filter表案例 iptables nat表应用

七周四次课(3月22日)

10.15 iptables filter表案例

10.16/10.17/10.18 iptables nat表应用

扩展
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

10.15 iptables filter表小案例

总结

查看iptables规则:iptables -nvL

iptables -F 清空规则

service iptables save 保存规则

加粗,保存在/etc/sysconfig/iptables,重启后,会调用此文件的规则。

iptables -t nat //-t指定表

默认不加-t会指定filter表

iptables -Z  可以把计数器清零

iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

把规则放到最后面

INPUT是进来的包,

-s 指定源ip

-p 指定它的协议可以是tcp,udp

--sport 源端口

--dport 目标端口

-d 目标地址

-j 行为,DROP,REJECT,ACCEPT

iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP

把规则放到最前面,最前面的会被优先加载,匹配。

-I -A -D 紧跟着链的名字,可以是INPUT,OUTPUT或者是FORWARD

iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

iptables -nvL --line-numbers

列出规则的编号,

iptables -D INPUT 1

根据编号删除规则

iptables -P INPUT DROP

指定链的默认策略,慎重操作,否则会影响远程连接状态。

小案例

需求:把80端口 22端口 21端口 放行,22端口指定IP段,只有这IP段的IP访问才可以访问到,其他段访问 拒绝。

iptables小案例

vi /usr/local/sbin/iptables.sh //加入如下内容

#! /bin/bash

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.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

上述案例,添加ipt变量,$ipt就是使用ipt的变量。以后需要这种需求,可以模仿此案例去写脚本 加粗高亮。状态一定要写,否则会被DROP掉。

icmp示例

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

这个8指的是能在本机ping通其他机器,而其他机器不能ping到本机。

其实这里相当于一个禁ping操作。

10.16 iptables nat表应用(上)

准备工作,

2台虚拟机,1号2号

1号机操作

添加一块网卡

虚拟机设置-添加-选中网络适配器-下一步-保持默认-下一步

切记选择LAN区段

2号机操作

首先开机禁用网卡

添加网卡(操作和1号机添加网卡一样,LAN区段也是选择刚刚设定的LAN区段)

上面的操作最好在关机之后操作。

1号机的网络状态。

[[email protected] ~]#    ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.189.128  netmask 255.255.255.0  broadcast 192.168.189.255

inet6 fe80::243c:86d7:d85e:224d  prefixlen 64  scopeid 0x20<link>

ether 00:0c:29:15:53:53  txqueuelen 1000  (Ethernet)

RX packets 815  bytes 78496 (76.6 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 587  bytes 83961 (81.9 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.189.150  netmask 255.255.255.0  broadcast 192.168.189.255

ether 00:0c:29:15:53:53  txqueuelen 1000  (Ethernet)

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

ether 00:0c:29:15:53:5d  txqueuelen 1000  (Ethernet)

RX packets 0  bytes 0 (0.0 B)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 55  bytes 10362 (10.1 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 72  bytes 5744 (5.6 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 72  bytes 5744 (5.6 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

设置ens37的ip 有好几种方法,

1,把ens33的网络配置文件复制多一份,改名ens37,慎记更改device name ip mac地址(可以删掉),等等

2,临时配置,命令配置:[[email protected] ~]# ifconfig ens37 192.168.100.1/24

#ifconfig

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::20c:29ff:fe15:535d  prefixlen 64  scopeid 0x20<link>

ether 00:0c:29:15:53:5d  txqueuelen 1000  (Ethernet)

2号机操作

因为ens33刚刚已在VMware做设置禁掉了,所以需要再在系统上命令禁掉ens33的网卡

#ifdown ens33

设定ens37 IP

# ifconfig ens37 192.168.100.100/24

检查一次配置

尝试ping 1号主机的37的IP 192.168.100.1

ping通状态。ok

10.17 iptables nat表应用(中)

需求1:可以让B机器连接外网

1号机机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward

不能上外网的原因是,没有开启路由转发。

先查看内核参数,默认是0,0表示没有开启内核路由转发

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward

0

打开端口转发,1值表示开启,利用echo赋值

[[email protected] ~]# echo "1" > !$

echo "1" > /proc/sys/net/ipv4/ip_forward

[[email protected] ~]# !cat

cat /proc/sys/net/ipv4/ip_forward

1

A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

[[email protected] ~]# 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 2 packets, 216 bytes)

pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 2 packets, 216 bytes)

pkts bytes target     prot opt in     out     source               destination

0     0 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0

此规则就是为了让A可以上外网,MASQUERADE表示伪装。

B上操作

B上设置网关为192.168.100.1

#route add default gw 192.168.100.1

ping A电脑的网关192.168.189.1 ping通。

设置DNS可以ping通外网。

[[email protected] ~]# vi /etc/resolv.conf

# Generated by NetworkManager

nameserver 114.114.114.114

在PC上ping B主机192.168.100.100 ping不通

其实这过程就相当于一台路由器的运作原理,A机器是路由器,B与C是连接路由器的用户。

10.18 iptables nat表应用(下)

截图

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

C远程登录B

C不能直接连接B,但是C可以连接A(因为C可以用Xshell远程登录A的22端口)。

如果C要连接B,需要在B上做一个端口映射,但是不能使用22端口(因为A已经使用了),必须使用其他端口。比如映射1122端口。

A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward

此项如果之前做过了,无需再开启,或者先#cat一下文档,如果是1就无需再做此步骤。

A上执行第一条规则

iptables -t nat -A PREROUTING -d 192.168.189.128 -p tcp --dport 1122 -j DNAT --to

-d的目标ip是A上的IP

--dport 定义目标端口1122

此规则的大意是:把进去的包做一个端口转发。

执行这一步之前,首先删掉之前所建立的规则。

[[email protected] ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

[[email protected] ~]# 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

第二条规则iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.189.128

这个是回来的包,192.168.189.128.

#iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.189.128

做完设置后,在Xshell上进行远程登录,添加主机是192.168.189.128 端口1122

完成跳转B上。

但是B的机器的IP不会更改,此时还是192.168.100.100

测试外网也成功。

原文地址:http://blog.51cto.com/13578154/2089990

时间: 2024-10-10 12:30:41

10.15-10.18 iptables filter表案例 iptables nat表应用的相关文章

73.fileter表案例,NAT表的应用

fileter表案例 要求如下:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.204.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口.这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式.脚本内容如下[email protected] ~]# cat /usr/local/sbin//iptables.shcat: /usr/local/sbin//iptables.sh: 没有那个文件或目录[[email pr

10.15 iptables filter表案例 iptable nat应用

这个和-t filter 打印的信息是一样的. 关于清除规则的命令中, [[email protected] ~]#  iptables -F [[email protected] ~]# iptables -Z 不加-t默认是针对表filter来操作的,-F 表示把所有规则全部删除:-Z表示把包以及流量计数器置零. B. 增加/删除一条规则 [[email protected] ~]# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -

双端队列C实现代码 算法导论10.1-5 10.1-6 10.1-7

数组实现双端队列的时候注意区别判断上溢和下溢. 用两个栈实现队列,就相当于把两个栈底靠在一起(背靠背),一个栈用来出队列,一个栈用来进队列.这个队列的操作时间大部分时候是常数时间,除了出列的栈为空,需要把进列的栈全部转移过去,再出列.Back()操作和Pop()操作类似,也是这样. 而两个队列实现栈,队列轮流充当入栈和出栈的角色,而什么时候会改变角色呢,就是Pop()操作.Pop()操作先把一个队列中的所有元素全部出列并加入另外一个空队列中去,然后再出列(第二个队列). 实现代码为C #incl

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

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展 iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html iptables限制syn速率 http://www.aminglinux.com/bbs/thre

iptables filter表案例及iptables nat应用

iptables filter表案例 iptables小案例需求 只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.1.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 由于这个需求有多条规则,所以最好写成脚本的形式,操作示例如下: # vi /usr/local/sbin/iptables.sh              加入如下内容,保存退出. 脚本内容: ipt="/usr/sbin/iptables" $i

防火墙iptables实现Linux强大的NAT功能

1.概述1.1 什么是NAT在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一个中间人的角色,也就是通常所说的存储转发,路由器并不会对转发的数据包进行修改,更为确切的说,除了将源MAC地址换成自己的MAC地址以外,路由器不会对转发的数据包做任何修改.NAT(Network Address Translation网络地址翻译)恰恰是出于某种特殊需要而对数据包的源ip地址.目的ip地址.源端口.目的端口进行改写的操作.1.2 为什么要进行NAT我们来看看再什么情况下我们需要做NAT.假设

10.15 iptables filter表小案例;10.16—10.18 iptables nat

扩展: 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 10.15 iptables filter表小案例 ipta

10.15 iptables filter表案例 10.16/10.17/10.18 iptable

七周四次课 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 打开端口转发, 调整内核参数 增加一条规则 所添加的规则 B机器设置默认网关 设置公共DNS C设备与A通信,通过端口转换的形式,将原有iptables清空 上面为进来的包进行转换,下面为出去的包进行转换 原文地址:http://blog.51cto.

10.11-10.14 网络相关 firewall,netfilter,5表5链,iptables

七周三次课(3月21日)10.11 Linux网络相关10.12 firewalld和netfilter10.13 netfilter5表5链介绍10.14 iptables语法扩展(selinux了解即可)1. selinux教程  http://os.51cto.com/art/201209/355490.htm2.selinux pdf电子书  http://pan.baidu.com/s/1jGGdExK 10.11 Linux网络相关 介绍 ifconfig查看网卡ip(yum ins