iptables 的mangle表

mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。

 内网的客户机通过Linux主机连入Internet,而Linux主机与Internet连接时有两条线路,它们的网关如图所示。现要求对内网进行策略路由,所有通过TCP协议访问80端口的数据包都从ChinaNet线路出去,而所有访问UDP协议53号端口的数据包都从Cernet线路出去。

这是一个策略路由的问题,为了达到目的,在对数据包进行路由前,要先根据数据包的协议和目的端口给数据包做上一种标志,然后再指定相应规则,根据数据包的标志进行策略路由。为了给特定的数据包做上标志,需要使用mangle表,mangle表共有5条链,由于需要在路由选择前做标志,因此应该使用PREROUTING链,下面是具体的命令。

 
  1. iptables -t mangle -A PREROUTING -i eth0 -p tcp 
    --dport 80 -j MARK --set-      mark 1  
  2. iptables -t mangle -A PREROUTING -i eth0 -p udp 
    --dprot 53 -j MARK --set-      mark 2 

以上命令在mangle表的PREROUTING链中添加规则,为来自eth0接口的数据包做标志,其匹配规则分别是TCP协议、目的端口号是80和UDP协议、目的端口号是53,标志的值分别是1和2。数据包经过PREROUTING链后,将要进入路由选择模块,为了对其进行策略路由,执行以下两条命令,添加相应的规则。

 
  1. ip rule add from all fwmark 1 table 10  
  2. ip rule add from all fwmark 2 table 20 

以上两条命令表示所有标志是1的数据包使用路由表10进行路由,而所有标志是2的数据包使用路由表20进行路由。路由表10和20分别使用了ChinaNet和Cernet线路上的网关作为默认网关,具体设置命令如下所示。

 
  1. ip route add default via 10.10.1.1 dev eth1 table 10  
  2. ip route add default via 10.10.2.1 dev eth2 table 20 

以上两条命令在路由表10和20上分别指定了10.10.1.1和10.10.2.1作为默认网关,它们分别位于ChinaNet和Cernet线路上。于是,使用路由表10的数据包将通过ChinaNet线路出去,而使用路由表20的数据包将通过Cernet线路出去。

 

(2)

 

iptables网关服务器三块网卡:eth0(网通ip:10.0.0.1)、eth1(电信ip:20.0.0.1);eth2:网关192.168.10.1。

要求:公司内网要求192.168.10.1---100以内的ip使用 10.0.0.1 网关上网(网通),其他IP使用 20.0.0.1 (电信)上网;

iptables网关服务器配置如下:

 

1

2

3

4

5

6

7

ip route add default gw 20.0.0.1

ip route add table 10 via 10.0.0.1 dev eth0

#eth0 是10.0.0.1所在的网卡,10 是路由表的编号

ip rule add fwmark 10  table 10

#fwmark 10 是标记,table 10 是路由表10。 标记了 10 的数据使用table10 路由表

iptables -A PREROUTING -t mangle -i eth2 -s 192.168.10.1 192.168.10.100 -j MARK --set-mark 10

#使用iptables给相应的数据打上标记

mangle应用顺序要高于nat、filter哈。

案例2、

iptables网关服务器三块网卡:eth0(网通ip:10.0.0.1)、eth1(电信ip:20.0.0.1);eth2:网关192.168.10.1。

要求:公司内网要求员工访问外面的网站服务;使用 10.0.0.1 网关上网(网通),其他IP使用 20.0.0.1 (电信)上网;

1

2

3

4

iptables -t mangle -A PREROUTING -i eth2 -p tcp --dport 80 -j MARK --set-mark 20

ip route add default gw 20.0.0.1

ip route add table 20 via 10.0.0.1 dev eth0

ip rule add fwmark 20 table 20

 

 

 

 

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

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

相关文章

Linux常用命令(一)

history 查看历史命令 ctrlp 向上翻历史纪录 ctrln 向下翻历史纪录 ctrlb 光标向左移动 ctrlf 光标向右移动 ctrla 光标移动到行首 ctrle 光标移动到行尾 ctrlh 删除光标前一个 ctrld 删除光标后一个 ctrlu 删除光标前所有 ctrlL clear命令 清屏 tab键可以补全命令/填充路径…

ip route / ip rule /iptables 配置策略路由

Linux 使用 ip route , ip rule , iptables 配置策略路由 要求192.168.0.100以内的使用 10.0.0.1 网关上网,其他IP使用 20.0.0.1 上网。 首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关。 ip route add default gw 20.0.0.…

iptables:tproxy做透明代理

什么是透明代理 客户端向真实服务器发起连接,代理机冒充服务器与客户端建立连接,并以客户端ip与真实服务器建立连接进行代理转发。因此对于客户端与服务器来说,代理机都是透明的。 如何建立透明代理 本地socket捕获数据包 nat方式 iptables…

编译参数(-D)

程序中可以使用#ifdef来控制输出信息 #include<stdio.h> #define DEBUGint main() {int a 10;int b 20;int sum a b; #ifdef DEBUGprintf("%d %d %d\n",a,b,sum); #endifreturn 0; } 这样在有宏定义DEBGU的时候就会有信息输出 如果注销掉宏定义就不会有输…

libpcap讲解与API接口函数讲解

ibpcap&#xff08;Packet Capture Library&#xff09;&#xff0c;即数据包捕获函数库&#xff0c;是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口&#xff0c;为底层网络监测提供了一个可移植的框架。 一、libpcap工作原理 libpcap…

Linux常用命令(三)

man 查看帮助文档 alias ls : 查看命令是否被封装 echo &#xff1a; 显示字符串到屏幕终端 echo $PATH : 将环境变量打印出来 poweroff&#xff1a;关机 rebot&#xff1a;重启 需要管理员权限 vim是从vi发展过来的文本编辑器 命令模式&#xff1a;打开文件之后默认进入命令模…

浅谈iptables防SYN Flood攻击和CC攻击

何为syn flood攻击&#xff1a; SYN Flood是一种广为人知的DoS&#xff08;拒绝服务攻击&#xff09;是DDoS&#xff08;分布式拒绝服务攻击&#xff09;的方式之一&#xff0c;这是一种利用TCP协议缺陷&#xff0c;发送大量伪造的TCP连接请求&#xff0c;从而使得被攻击方资源…

Linux之静态库

命名规则&#xff1a; lib 库的名字 .a 制作步骤 生成对应.o文件 .c .o 将生成的.o文件打包 ar rcs 静态库的名字&#xff08;libMytest.a&#xff09; 生成的所有的.o 发布和使用静态库&#xff1a; 1&#xff09; 发布静态 2&#xff09; 头文件 文件如下图所示&…

iptables详解和练习

防火墙&#xff0c;其实说白了讲&#xff0c;就是用于实现Linux下访问控制的功能的&#xff0c;它分为硬件的或者软件的防火墙两种。无论是在哪个网络中&#xff0c;防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作&#xff0c;这就是防火墙…

Linux之动态库

命令规则 lib 名字 .so 制作步骤 1&#xff09;生成与位置无关的代码&#xff08;生成与位置无关的代码&#xff09; 2&#xff09;将.o打包成共享库&#xff08;动态库&#xff09; 发布和使用共享库 动态库运行原理&#xff1a; 生成动态库&#xff1a; gcc -fPIC -c *.c -…

linux下源码安装vsftpd-3.0.2

1&#xff09;在http://vsftpd.beasts.org/网站中查找并下载 vsftpd-3.0.2.tar.gz源码包 2)如果自己的机器上安装有yum可以用yum grouplist | less指令查看以下开发环境&#xff0c;当然这一步不做也行 3&#xff09;拆解源码包 4&#xff09;查看源码包 5&#xff09;编辑…

Linux之GDB调试命令

gdb启动 gdb 程序名 l 查看源代码&#xff08;默认显示十行&#xff09; l 文件名&#xff1a;行数 l 文件名&#xff1a;函数名 添加断点 break 行数 &#xff08;b 也行&#xff09; b 15 if i 15 条件断点 i b 查看断点信息 start 程序执行一步 n 单步调试 s 单步&#xf…

Gdb 调试core文件详解

一&#xff0c;什么是coredump 我们经常听到大家说到程序core掉了&#xff0c;需要定位解决&#xff0c;这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止&#xff0c;并且在满足一定条件下&#xff08;这里为什么说需要满足一定的条件呢&#…

Linux之GDB命令(二)

gdb命令&#xff1a; 前提条件&#xff1a;可执行文件必须包含调试信息 gcc -ggdb 文件名 –启动gdb调试查看代码命令 当前文件&#xff1a; list 行号&#xff08;函数名&#xff09; 指定文件&#xff1a; list 文件名&#xff1a;行号&#xff08;函数名&#x…

Windows下编译openssl库

1、概述 OpenSSL是一个开放源代码的软件库包&#xff0c;它实现了 SSL&#xff08;Secure SocketLayer&#xff09;和 TLS&#xff08;Transport Layer Security&#xff09;协议&#xff0c;所以应用程序可以使用这个包来进行安全通信&#xff0c;避免窃听&#xff0c;同时确…

Makefile规则介绍

Makefile 一个规则 三要素&#xff1a;目标&#xff0c;依赖&#xff0c;命令 目标&#xff1a;依赖命令 1、第一条规则是用来生成终极目标的规则 如果规则中的依赖不存在&#xff0c;向下寻找其他的规则 更新机制&#xff1a;比较的是目标文件和依赖文件的时间 两个函…

windows环境下C语言socket编程

最近由于实验需要&#xff0c;要求写一个c程序与java程序通信的软件&#xff0c;为了测试首先写了一个windows环境下c语言的socket&#xff08;tcp&#xff09;通信程序。 首先socket通信的步骤&#xff1a; 图一 socket通信步骤&#xff08;转载) 图二 三次握手协议&…

进程控制块(PCB)

进程控制块PCB 我们知道&#xff0c;每个进程在内核中都有一个进程控制块&#xff08;PCB&#xff09;来维护进程相关的信息&#xff0c;Linux内核的进程控制块是task_struct结构体。 /usr/src/linux-headers-3.16.0-30/include/linux/sched.h文件中可以查看struct task_struct…

网络层攻击防御

网络层攻击防御 网络层攻击防御主要分为以下三类&#xff1a; TCP类报文攻击防御 UDP类报文攻击防御 ICMP类报文攻击防御 TCP类报文攻击防御 TCP正常的交互过程&#xff1a; 图&#xff1a;TCP正常交互过程 在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接服务&#xff0c…

Linux之环境变量

常见环境变量 按照惯例&#xff0c;环境变量字符串都是namevalue这样的形式&#xff0c;大多数name由大写字母加下划线组成&#xff0c;一般把name的部分叫做环境变量&#xff0c;value的部分则是环境变量的值。环境变量定义了进程的运行环境&#xff0c;一些比较重要的环境变量…