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

news/2024/7/6 23:42:16

fileter表案例

要求如下:
只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.204.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。
这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式。脚本内容如下
root@zlinux ~]# cat /usr/local/sbin//iptables.sh
cat: /usr/local/sbin//iptables.sh: 没有那个文件或目录
[root@localhost /]# vim !$
vim /usr/local/sbin//iptables.sh
编辑上面的文件,把下面的内容添加进去
#! /bin/bash
ipt="/sbin/iptables"
$ipt -F //清空规则
$ipt -P INPUT DROP //指定INPUT链默认动作DROP
$ipt -P OUTPUT ACCEPT //指定OUTPUT链默认动作ACCEPT
$ipt -P FORWARD ACCEPT //指定OUTPUT链默认动作ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //指定状态放行
$ipt -A INPUT -s 192.168.204.0/24 -p tcp --dport 22 -j ACCEPT //针对ip段开通22端口
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT //对所有网段开通80端口
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT //对所有网段开通21端口

[root@localhost /]# cat /usr/local/sbin/iptables.sh #查看文件内容
#! /bin/bash

ipt="/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.204.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 
[root@localhost /]#

[root@localhost /]# sh /usr/local/sbin/iptables.sh #执行文件

root@localhost /]# iptables -nvL #查看规则
Chain INPUT (policy DROP 133 packets, 10525 bytes)
pkts bytes target prot opt in out source destination 
271 20528 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- 192.168.204.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

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

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

Chain VL (0 references)
pkts bytes target prot opt in out source destination 
[root@localhost /]#

注:关于icmp的包有一个比较常见的应用:
[root@zlinux ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
--icmp-type 这个选项是要跟-p icmp 一起使用的,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。这个有必要记一下。


NAT表应用

llinux的iptables功能是十分强大的,只有想不到没有做不到!也就是说只要你能够想到的关于网络的应用,linux都能帮你实现。在日常生活中相信你接触过路由器吧,它的功能就是分享上网。本来一根网线过来(其实只有一个公网IP),通过路由器后,路由器分配了一个网段(私网IP),这样连接路由器的多台pc都能连接intnet而远端的设备认为你的IP就是那个连接路由器的公网IP。这个路由器的功能其实就是由linux的iptables实现的,而iptables又是通过nat表作用而实现的这个功能。那么直接来举例说明:
现有条件:
A机器两块网卡ens33(192.168.204.128)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
为达到实验条件,先准备两台虚拟机:
1、在VMware克隆一下现有的虚拟机(A机器),并把克隆的虚拟机命名为zhulinux2(B机器);
2、对A机器的网卡进行增加,并且设置成LAN区段为“自定义区段”,表示内部网络地址;

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

3、对B机器的网卡设置成ens37,IP地址192.168.100.100/24,并把网络适配器改成LAN区段,与A机器一样,如下图所示:
73.fileter表案例,NAT表的应用

4、设置A机器ens37IP![]
73.fileter表案例,NAT表的应用

5、设置B机器的ens37网址,先关闭ens33网卡,因为可以访问外网:
73.fileter表案例,NAT表的应用

需求:
1、可以让B机器连接外网:
A机器操作:
[root@zlinux ~]# echo "1">/proc/sys/net/ipv4/ip_forward //打开路由转发功能
[root@zlinux ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B机器操作,设置默认网关,设置好之后就可以连接外网了:
73.fileter表案例,NAT表的应用

这个ping百度,是因为设置了dns。
2、C机器只能和A通信,让C机器可以直接连通B机器的22端口:
A机器操作:
[root@zlinux ~]# iptables -t nat -A PREROUTING -d 192.168.204.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
[root@zlinux ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.204.128
[root@zlinux ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination 
0 0 DNAT tcp -- 0.0.0.0/0 192.168.204.128 tcp dpt:1122 to:192.168.100.100:22

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 
3 213 MASQUERADE all -- ens33 192.168.100.0/24 0.0.0.0/0 
0 0 SNAT all -- 
* 192.168.100.100 0.0.0.0/0 to:192.168.204.128

73.fileter表案例,NAT表的应用
至此,连接成功。



本文转自 闪电王 51CTO博客,原文链接:http://blog.51cto.com/sdwaqw/2068777


http://www.niftyadmin.cn/n/2751569.html

相关文章

【LintCode】Expression Expand 非递归stack完成DFS(String)

这道题真是超级棒的stack DFS样板题啊,在这里给自己写个小小的总结 思路:想到stack并不难,这种嵌套式一般是DFS的思想,先走到最里面最小的那个括号,然后逐渐回到上一层→上一层。又∵非递归,“BFS queue&am…

ubuntu 输入密码后黑屏并且又回到输入密码的地方

好好想想你昨天的所作所为 基本是因为你昨天把哪个文件的权限给了错的人 解决方案 进入文字界面 输入 chown -R username 文件地址 之后恢复正常

VirtualBox与主机共享

2019独角兽企业重金招聘Python工程师标准>>> 主机上创建共享文件夹share,然后右键属性就是这个界面 点击共享到添加这个everyone,点击右下角的“共享”按钮,在弹出的页面上选否。 首先强调我的Virtual Box安装的时centos 执行sudo…

动态路由传参和params传参

动态路由传参和params一起传参的时候, this.$router.push({ path: ‘/home/:id’, params: { type: ‘11’ } }) 在需要参数的页面打印结果,不会出现内容params的内容 所以我猜想,params和path不应该一起使用,应该用params加name…

超频电脑黑屏(超频失败怎么办)

今天我遇到这么个问题 一早开机内存点亮 键盘不亮 鼠标 显示器不亮(这三个有一个不亮 解决思路都一样) 现在的电脑都有智能开机检测 启动失败 会直接进入恢复界面 之后进了bios 把内存频率改回去(我默认2666 一直超在3433稳定运行&#…

修改element-ui的input框踩坑记录

修改input的样式大小时候,给最外层一个div,这个时候给div设置margin-right会出现两个距离。 这个距离的出现是因为el-input内部有个div也具有了margin-right的属性,使得两个距离产生。此刻我们只需要设置一下内部的div的右边界。 .wrap_div{…

Data Pump expdp/impdp数据泵版本兼容性

可以通过expdp/impdp指定versions参数(要导出的对象版本。有效的关键字值为: [COMPATIBLE], LATEST 或任何有效的数据库版本。)来保证版本兼容性,对于不兼容的对象会出现ORA-39139错误。 C:\Users\xiangbli>expdp dumpfileDATA_PUMP_DIR:a1.dmp fully version…

常用正则表达式

一、校验数字的表达式 数字:^[0-9]*$n位的数字:^d{n}$至少n位的数字:^d{n,}$m-n位的数字:^d{m,n}$零和非零开头的数字:^(0|1-9*)$非零开头的最多带两位小数的数字:^(1-9*)(.[0-9]{1,2})?$带1-2位小数的正数…