linux系统iptables的操作

iptables操作

    • 安装
    • 参数解释
    • 参数使用
    • iptables语法
      • 示例
      • 规则匹配条件
        • 通用匹配(协议),可以独立使用
        • 通过端口规则匹配:
        • 通过ip地址
        • 修改规则:
      • icmp类型匹配
      • 扩展匹配
        • 指定ip范围
        • 指定多端口范围
        • MAC地址匹配
        • 通过网卡接口
        • 保存和删除规则
        • 本地端口转发
    • 网络地址转换

安装

yum install -y iptables iptables-servicesiptables -V   查看版本:配置文件:
/etc/sysconfig/iptables-config 
/etc/sysconfig/iptables        #记录规则文件	

参数解释

-L:列出一个链或所有链中的规则信息-n:以数字形式显示地址、端口等信息-v:以更详细的方式显示规则信息--line-numbers:查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1-F:清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)-D:删除链内指定序号(或内容)的一条规则-P:为指定的链设置默认规则-A:在链的末尾追加一条规则-I:在链的开头(或指定序号)插入一条规则,指定行号就在指定行添加-t: 指定表名,默认filter表

参数使用

不使用-t指定表,默认使用filter表iptables -t nat -L  //指定查看nat表的规则iptables  -L        //默认查看规则iptables -nL        //以数字的形式显示ip和端口与协议iptables -nL --line //显示规则行号iptables  -F        //清空规则iptables  -F  链名   //清空单独的某一个链里面的规则保存规则:
# service iptables save
iptables-save > /etc/sysconfig/iptables     //保存规则到/etc/sysconfig/iptables文件
iptables-restore < /etc/sysconfig/iptables   //从/etc/sysconfig/iptables读取规则

iptables语法

iptables -t 表名 动作  [链名] [-p 匹配条件] [-j 控制类型]
动作
修改默认规则: -P (大p)
删除规则:-D
修改规则:-R
追加规则: -A  默认追加到链的末尾
插入规则:-I (大i),在链的开头(或指定序号)插入一条规则

示例

iptables -t filter -A INPUT -p tcp -j ACCEPT    #最后一行
iptables -I INPUT -p udp -j ACCEPT              #第一行
iptables -I INPUT 4 -p icmp -j ACCEPT           #(插入到第4行)
iptables -D INPUT 3                             #删除第三行
systemctl restart iptables                      #重启

规则匹配条件

通用匹配(协议),可以独立使用
协议:-p (小p)
tcp     ---用的最多
udp
icmp    ---ping的时候用的协议#使用协议的时候可以不指定端口,使用端口的时候必须指定协议。
iptables -A INPUT -p icmp -j REJECT    ----拒绝被ping
通过端口规则匹配:
端口:
--sport    ---源端口
--dport    --目标端口案例:
拒绝192.168.246.201这台机器通过ssh连接到这台服务器
# iptables -I INPUT -s 192.168.246.201 -p tcp --dport 22 -j REJECT例子:端口的范围: 拒绝22端口到80端口的访问,包括22和80端口在内
# iptables -I INPUT -s 192.168.246.201 -p tcp --dport 22:80 -j REJECT
通过ip地址
禁止源主机进来
#iptables -I INPUT -s 192.168.246.201  -p icmp -j REJECT
-s: 源ip地址===========================================================================
拒绝多个ip地址:后面跟ip地址可以更多个ip地址用逗号隔开
# iptables -t filter -I INPUT -s 192.168.246.201,192.168.246.133  -p icmp -j REJECT============================================================
限制源10网段的数据包。
# iptables -I INPUT -s 192.168.10.0/24 -j REJECT
修改规则:
将修改第二条规则访问80端口:
# iptables -R INPUT 2 -p tcp --dport 80 -s 192.168.246.201 -j ACCEPT

icmp类型匹配

禁止ping策略原则
iptables服务器是ping命令发起者或是接受者
-i --in-interface:在INPUT链配置规则中,指定从哪一个网卡接口进入的流量(只能配置在INPUT链上)
-o --out-interface:在OUTPUT链配置规则中,指定从哪一个网接口出去的流量(只能配置在OUTPUT链上)====================================================
icmp的类型:
0: Echo Reply——回显应答(Ping应答)ping的结果返回。
8: Echo request——回显请求(Ping请求),发出去的请求。=====================================================
本机可以ping其他机器。其他机器不能ping通本机:
iptables -I OUTPUT -o ens33 -p icmp --icmp-type 8 -j ACCEPT #允许自己ping别人
iptables -I INPUT 2 -p icmp --icmp-type 8 -j DROP  #将进来的ping请求给丢弃了。=====================================================
拒绝任何ping的协议:
[root@iptables-server ~]# iptables -A INPUT -p icmp -j DROP

扩展匹配

指定ip范围
语法: -m iprange --src-range
# iptables -I INPUT -p tcp --dport 80 -m iprange --src-range 192.168.246.199-192.168.246.206 -j REJECT
指定多端口范围
语法:
-m multiport --sports   #源端口
-m multiport --dports   #目的端口
# iptables -A INPUT -p tcp -m  multiport --dports 22,80 -s 192.168.246.133 -j REJECT
MAC地址匹配
语法: -m mac --mac-source
# iptables -I INPUT -m mac --mac-source 00:0C:29:64:E3:8D -j REJECT  #将指定的MAC地址服务请求全部禁止了
通过网卡接口
# iptables -I INPUT -i ens33 -j DROP  #谁也连不上了.
保存和删除规则
删除:
# iptables -D INPUT 3  #通过查看行号,指定行号删除;
# iptables -D INPUT -p icmp -j REJECT   #方式二
===============================================================
保存:
iptables-save > /etc/sysconfig/iptables  #保存到文件里面,方式一
service iptables save   #第二种方式,推荐
本地端口转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

网络地址转换

案例图:

SNAT:把内网地址转换成公网地址(源地址转换)

一个数据包在经过路由之后(或者说在通过防火墙的过滤之后)才被知道他的源IP是谁,在路由之前只能看到目标IP,如果我看不到你的源IP,那怎么匹配想过滤的数据包并进行源地址转换?我防火墙根本就不能确定你是否是符合匹配条件的IP,所以只能使用POSTROUTING

DNAT:要把公网ip换到内网IP -----公网ip只有一个, 内网ip有多个。(目标地址转换)

如果我不在路由之前就把目标地址转换完成,很显然当数据包到达入口IP之后,他的目的已经达到了,因为他本来的目标IP就是防火墙的对外公网IP,那么数据包还会往里面走吗?显然不可能了,所以只能使用PREROUTING

用户虚拟机1 ens33 192.168.73.128/24
出口虚拟机2 ens36 192.168.73.129/24   ens33 10.12.153.54/24     
代理虚拟机3 ens33 10.12.153.42/24     ens36 192.168.110.129/24
后端虚拟机4 ens33 192.168.110.128/241-2 同一网段
2-3 同一网段
3-4 同一网段
其中2-3分别拥有两张网卡可以与1,4台服务器通信,还有一张网卡可以连接公网虚拟机3,4
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1sysctl -pip r add 10.12.153.54 via 192.168.73.129
ip r add 10.12.153.42 via 192.168.110.1281号ip       192.168.73.128
2与1同网段ip 192.168.73.129
2与3同网段ip 10.12.153.54
3与2同网段ip 10.12.153.42
3与4同网段ip 192.168.110.129
4号ip       192.168.110.128
2号主机
iptables -t nat -A PREROUTING -d 192.168.73.129 -j DNAT --to-destination 10.12.153.42     //2与1号同网段ip转换3与2号同网段ip
iptables -t nat -A POSTROUTING -s 192.168.73.128 -j SNAT --to-source 10.12.153.54   //1号ip转换2与3号同网段ip3号主机
iptables -t nat -A PREROUTING -d 10.12.153.42 -j DNAT --to-destination 192.168.110.128   //3与2同网段ip转换4号ip
iptables -t nat -A POSTROUTING -s 10.12.153.54 -j SNAT --to-source 192.168.110.129    //2与3同网段ip转换3与4同网段ip3号主机
iptables -t nat -A PREROUTING -d 192.168.110.129 -j DNAT --to-destination  10.12.153.54    //3与4同网段ip转换2与3号同网段ip
iptables -t nat -A POSTROUTING -s 192.168.110.128 -j SNAT --to-source 10.12.153.42
//4号ip转换3与2号同网段ip2号主机想
iptables -t nat -A PREROUTING -d 10.12.153.54 -j DNAT --to-destination 192.168.73.129     //2与3同网段ip转换2与1号同网段ip
iptables -t nat -A POSTROUTING -s 10.12.153.42 -j SNAT --to-source  192.168.73.128    //3与2同网段ip转换1号ip
在一号主机访问二号主机的与一号主机同一网段的ip
curl 192.168.73.129   //访问到四号主机的nginx页面就证明转发成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端Vue篇之Vue 3.0 中的 Vue Composition API?Composition API与React Hook很像,区别是什么

目录 Vue 3.0 中的 Vue Composition API&#xff1f;Composition API与React Hook很像&#xff0c;区别是什么1. 实现原理2. 调用方式和性能3. 生态和社区 Vue 3.0 中的 Vue Composition API&#xff1f; 在Vue 3中&#xff0c;引入了Composition API来解决Vue 2中Options API…

Java集合框架-Collection和Map

文章目录 Collection-单列集合特点ListArrayListLinkedListVecter SetHashSetTreeSet Map-键值对集合特点Map常用APIput添加细节remove Map的三种遍历方式1.通过键找值2.通过"键值对"3.Lambda表达式foreach源码 HashMap需求 为什么要使用泛型 泛型的优点1.集合中存储…

#QT(智能家居界面-布局)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 水平布局&#xff0c;垂直布局&#xff0c;栅格布局&#xff08;弹簧&#xff09; 界面自动调整 3.记录 注意弹簧不是拖拽拉长&#xff0c;而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局&#xff0c;需…

Feign失败降级逻辑

一&#xff0c;为什么要编写失败降级逻辑 业务失败后&#xff0c;不能直接报错&#xff0c;而应该返回用户一个提示或者默认结果 二&#xff0c;实现步骤 1&#xff0c;自定义类实现FallbackFactory接口 import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Sl…

LCR 095. 最长公共子序列【leetcode】/动态规划

LCR 095. 最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某…

【PHP趣味技术】分分钟教会你轻松采集PDF文本内容 《重庆话真的太吃皮老!》

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

备忘 clang diagnostic 类的应用示例 ubuntu 22.04

系统的ncurses环境有些问题 通过源码安装了ncurses6.3后&#xff0c;才可以在 llvmort-18.1.rc4中编译通过示例&#xff1a; 1&#xff0c;折腾环境 ncurses-6.3$ ./configure ncurses-6.3$ make -j ncurses-6.3$ sudo make install sudo apt install libtinfo5 sudo…

C判断操作系统、编译器类型、编译器版本及编译位数

1. 操作系统 #ifdef __linux__// Linux #elif defined(_WIN32) || defined(_WIN64)// Windows #else// 其他 #endif2. 编译器类型及版本 #ifdef __GNUC__// 使用了GCC编译器#if __GNUC__ > 7// GCC版本大于等于7#else// GCC版本小于7#endif #elif defined(_MSC_VER)// …

使用Visual Studio 2022 创建lib和dll并使用

概述&#xff1a;对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要&#xff0c;但是对于使用ffi的人来说&#xff0c;使用c或c编译器&#xff0c;似乎是必不可少的&#xff0c;下面我将讲述如何用Visual Studio 2022 来创建lib和dll&#xff0c;并使用。 静态库…

springboot/ssm华为数码商城交易平台Java数码手机购物系统web

springboot/ssm华为数码商城交易平台Java数码手机购物系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;…

ABAP - SALV教程12 显示图标和提示信息

ALV要求字段的值为图标的需求并不多见&#xff0c;一般都用于红黄绿灯&#xff0c;来表示单据的执行状态&#xff0c;添加图标的方式也可以实现红黄绿灯的功能&#xff0c;也可以参考SALV实现红黄绿灯这篇文章&#xff1a;http://t.csdnimg.cn/Dzx7x效果图SAVL列设置为图标图标…

434G数据失窃!亚信安全发布《勒索家族和勒索事件监控报告》

最新态势快速感知 最新一周全球共监测到勒索事件90起&#xff0c;与上周相比数量有所增加。 lockbit3.0仍然是影响最严重的勒索家族&#xff1b;alphv和cactus恶意家族也是两个活动频繁的恶意家族&#xff0c;需要注意防范。 Change Healthcare - Optum - UnitedHealth遭受了…

每天学习一个Linux命令之du

每天学习一个Linux命令之du 简介 Linux命令行界面提供了大量实用工具来管理和维护系统。du&#xff08;disk usage&#xff09;命令是其中之一&#xff0c;它可用于查看目录或文件占用磁盘空间的信息。本篇博客将详细介绍du命令&#xff0c;并列举出所有可用的选项及其用法。…

详细分析服务器自动重启原因(涉及Linux、Window)

目录 前言1. Linux2. Window 前言 对于服务器异常重启的问题&#xff0c;需要定位原因并解决&#xff0c;下次就不会重启 1. Linux 要查看Linux服务器自动重启的原因&#xff0c;可以执行以下步骤&#xff1a; 检查系统日志&#xff1a;Linux系统通常会记录系统事件和错误信…

vue3页面内容切换(类似登录、注册内容切换)

一、内容描述 页面有俩块内容&#xff0c;分别是验证码登录页面内容&#xff0c;账号密码登录页面内容。有俩种处理方式&#xff0c;一个是写俩个页面跳转使用&#xff0c;还有一种是一个页面俩个内容&#xff0c;切换的只是不同的内容&#xff0c;相同的内容保留。一般都是选择…

通过人工智能增强的对话建立有意义的联系

人工智能如何重塑我们的交流&#xff1f;2024年最新对话AI趋势 在技术和人类互动比以往任何时候都更加复杂地交织在一起的时代&#xff0c;人工智能增强的对话已成为建立有意义的联系的关键要素。 这种转变不仅关乎效率&#xff0c;还关乎效率。 这是为了丰富沟通的结构。 在这…

12. Nginx进阶-Location

简介 Nginx的三大区块 在Nginx中主要配置包括三个区块&#xff0c;结构如下&#xff1a; http { #协议级别include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] "$r…

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…