透明代理(NAT)

        透明代理的实现目前Linuxn内核提供两种实现的方式:NAT和TPROXY。Nat 方式其实就是内内核通过地址转换实现的;而 TPROXY 是内核通过对设置的数据包打标记,然后通过策略路由将打标记的数据包重定向到本地监听进程上。此次我们借助iptables的nat表的规则对数据包进行重定向。具体配置及步骤如下。

试验环境

          将试验环境的配置如下:

名称IP地址网关设置
客户端192.168.200.184192.168.200.111
代理服务器192.168.200.111192.168.200.1(内网真实网关IP)
服务器172.16.9.66

        环境网络结构图如下:

 试验步骤

        1、需要添加iptables规则,将经过代理服务器的数据包重定向到本地代理监听进程上去;具体添加规则命令如下:     

        1、在nat表上新建名为MY_TCP自定义链
                 iptables -t nat -N MY_TCP

        2、将MY_TCP加入到PREROUTING链后
                iptables -t nat -A PREROUTING -d 172.16.9.66 -j MY_TCP

        3、将特定数据包转到6666端口
                iptables -t nat -A MY_TCP -p tcp --dport 12345 -j REDIRECT --to-ports 2223

        2、试验过程的客户端跟服务器用TCP工具创建一个客户端跟服务端。透明代理端需写简单的服务端代码,代码如下:

#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/netfilter_ipv4.h>
#define PORT 2223		//端口号
#define BACKLOG 5	//最大监听数int main()
{int iSocketFD = 0;  //socket句柄int iRecvLen = 0;   //接收成功后的返回值int new_fd = 0; 	//建立连接后的句柄char buf[4096] = {0}; //int n = 0;int ret = 0;struct sockaddr_in stLocalAddr = {0}; //本地地址信息结构图,下面有具体的属性赋值struct sockaddr_in stRemoteAddr = {0}; //对方地址信息socklen_t socklen = 0;  iSocketFD = socket(AF_INET, SOCK_STREAM, 0); //建立socketif(0 > iSocketFD){printf("创建socket失败!\n");return 0;}	stLocalAddr.sin_family = AF_INET;  /*该属性表示接收本机或其他机器传输*/stLocalAddr.sin_port = htons(PORT); /*端口号*/stLocalAddr.sin_addr.s_addr=htonl(INADDR_ANY); /*IP,括号内容表示本机IP*///绑定地址结构体和socketif(0 > bind(iSocketFD, (void *)&stLocalAddr, sizeof(stLocalAddr))){printf("绑定失败!\n");return 0;}//开启监听 ,第二个参数是最大监听数if(0 > listen(iSocketFD, BACKLOG)){printf("监听失败!\n");return 0;}printf("iSocketFD: %d\n", iSocketFD);	//在这里阻塞知道接收到消息,参数分别是socket句柄,接收到的地址信息以及大小while(1){new_fd = accept(iSocketFD, (void *)&stRemoteAddr, &socklen);printf("new_fd: %d\n", new_fd);	if(0 > new_fd){printf("接收失败!\n");return 0;}else{printf("接收成功!\n");n = sizeof(struct sockaddr_in);ret = getsockopt(new_fd, SOL_IP, SO_ORIGINAL_DST, &stRemoteAddr, &n);if(0 != ret){printf ("error getting original destination address.\n");close (new_fd);return -1;}stRemoteAddr.sin_family = AF_INET; printf("original destination address %u:%hu\n", ntohl(stRemoteAddr.sin_addr.s_addr), ntohs(stRemoteAddr.sin_port));	//发送内容,参数分别是连接句柄,内容,大小,其他信息(设为0即可) recv(new_fd, buf, sizeof(buf), 0);printf("从客户端上接收到的信息是:%s\n", buf);//send(new_fd, "这是代理服务器接收成功后发回的信息!", sizeof("这是代理服务器接收成功后发回的信息!"), 0);/* 连接服务器*/int iSockClientFD = 0;iSockClientFD = socket(AF_INET, SOCK_STREAM, 0);if(0 > iSockClientFD)					{printf("代理向服务器建立连接失败!\n");return 0;}if(0 > connect(iSockClientFD, (void *)&stRemoteAddr, sizeof(stRemoteAddr))){printf("代理向服务器建立连接失败!\n");return 0;}send(iSockClientFD, buf, sizeof(buf), 0);//向服务器发送消息recv(iSockClientFD, buf, sizeof(buf), 0);//接收来自服务器的消息printf("从服务器端收到的消息:%s\n", buf);//打印接收到的来自服务器的消息send(new_fd, buf, sizeof(buf), 0);//向客户端发送消息		sleep(5);	}}close(new_fd);close(iSocketFD);return 0;
}

使用结果截图如下:

        1、代理服务器配置规则如下:

         2、客户端、服务器试验截图如下:

        3、代理服务器的代理监听程序打印如下:

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

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

相关文章

akshare量化交易数据集的获取

本文介绍量化交易的数据集&#xff1a;akshare包的安装和调用。akshare的 数据比较全&#xff0c;可以获得 股票、期货、外汇、基金、债券 的历史和实时数据&#xff0c;而且是免费的。 安装 !pip3 install akshare --upgrade 运行结果&#xff1a; 调用包 import pandas as…

突破8140亿美元的加密货币市场, 2019年将走向何方?

作者 | Ash Egan 编译 | Guoxi 2010 年 5 月 22 日&#xff0c;程序员 Laszlo Hanyecz 用一万个比特币购买了两个披萨&#xff0c;相当于一个比特币仅价值 0.003 美分&#xff0c;加密货币第一次有了价值。 2017 年年中&#xff0c;加密货币市场总价值突破千亿美元&#xff0c;…

时间序列预测某加密货币

加密i货币是一种加密和去中心化的数字交换媒介。许多人使用加密货币作为一种投资形式&#xff0c;因为它即使在短时间内也能带来丰厚的回报。比特币、狗狗币是当今流行的加密货币之一。如果你想知道如何通过机器学习预测任何加密货币的未来价格&#xff0c;这篇文章适合你。在本…

中国巨头在NLP领域的大模型布局

什么是大模型&#xff1f; 大规模模型&#xff08;large-scale model&#xff09;是近年来人工智能领域的一个热点话题&#xff0c;因为它们可以对自然语言处理&#xff08;NLP&#xff09;和其他任务进行更准确和深入的处理。由于大模型需要庞大的计算资源和数据支持&#xf…

模拟股票交易:买入、卖出

1.1创建Strategy模块 此模块用于策略开发&#xff0c;产生交易信号。 1.2创建周期选股策略 什么为周期&#xff1f;简单来说&#xff0c;就是周四买入&#xff0c;周一卖出。这就是一个周期。 1.3生成交易信号 明确哪个交易日买入 哪个交易日卖出&#xff0c;用1和-1 标注。帮…

十大优秀编程项目,让你的简历金光闪闪

全文共3241字,预计学习时长6分钟 被问到如何学习编程时,最常听到的问题就是:“有没有什么新项目的好点子?” 一些老套的答案有:“做一个象棋游戏”或者“命令行界面”。 这些答案没有错,但这些例子不符合现代编程的需要。现代软件编写需要经常使用软件服务化(SaaS)和…

多测师肖sir_高级金牌讲师_简历制作

一、简历制作 1、先查找1个合适的模板 1.1比如伍佰钉,wps,我这里收集的模板,以前学长学姐的简历 要求:1.模板格式要易于编辑和修改,网上有免费的模板; 2、需要太过于个性化(颜色,模块,字体(建议:小四,五号)) 3、班级同学之间的简历不重复(模板一样+技能一样) 4…

基于springboot的简历系统的实现

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;简历系统当然也不能排除在外。简历系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用…

基于Python技术简历整合分类猎头系统的设计与实现

开发工具(eclipse/idea/vscode等)&#xff1a;pycharm 数据库(sqlite/mysql/sqlserver等)&#xff1a;mysql 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 结构设定. 设置会员和管理员两个身份&#xff0c;会员登录可以查看修改自己账号的个人信息&#xff0c;新…

产品经理/互联网非技术岗如何写一份好的简历?

本文将以互联网非技术岗的简历撰写为主题&#xff0c;分享简历的本质与关键&#xff0c;以及如何写一份合格的简历、简历上需要避开的坑。希望大家看完后能解决90%的简历问题。 文章内容概括&#xff1a; 简历的本质和关键如何写一份有效简历必须避开的地雷用了3年的word简历…

基于SpringBoot的简历管理系统

项目背景 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;简历系统当然也不能排除在外。简历系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;…

PHP 图片去除水印 去除logo

使用插件 ffmpeg 点这里 不使用插件 也可以 <?phpfunction CLEAR_ICO($filename,$savename,$Clear_W,$Clear_H,$Clear_X,$Clear_Y){// $filename ;//读取图片名// $savename ;//保存图片路径// $Clear_W ;//去除水印宽// $Clear_H 30;//去除水印高// $Clear_X 254…

如何去掉图片上的水印,四个步骤,方法超级容易又简单

很多时候我们要使用图片的时候&#xff0c;都是从网上下载的&#xff0c;但是网上下载的图片一般都是带有水印的&#xff0c;我们要使用的话就要去除上面的水印。那如何去除图片上的水印呢&#xff1f;今天我就教大家一个简单的方法 而且是不用下载任何去除水印软件的喔。直接在…

如何在图片上加水印防止盗图?

如何在图片上加水印防止盗图&#xff1f;大家都知道&#xff0c;互联网是一个开放的平台&#xff0c;在互联网上可以获取任何你想要的文件或者资料&#xff0c;不仅简单而且成本非常低&#xff0c;所以有很多人会在网上盗用别人的图片&#xff0c;然后为自己所用&#xff0c;这…

用 OpenCV 去除图片中的水印,骚操作!

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达本文转自|AI算法与图像处理 这两天在 Stackoverflow 上面看到了一个有趣的案例&#xff0c;是关于OpenCV 的一个讨论&#xff0c;讨论的主题就是如何用 OpenCV 来去除下面…

什么软件可以去除照片水印?这3种方法可以帮你轻松搞定

大家有过这样的烦恼吗&#xff1f;在网上看到一张喜欢的图片&#xff0c;想要将它保存下来做壁纸&#xff0c;但是却发现图片里面有个大大的水印&#xff0c;十分影响效果。或者是在网上看到一张喜欢的头像&#xff0c;里面也有着一个大大的水印&#xff0c;我们该放弃这张图片…

学会这3个小技巧,轻松去图片水印

有些小伙伴在浏览个别平台时&#xff0c;会看到一些心水的图片&#xff0c;就想保存下来&#xff0c;拿来当头像壁纸&#xff0c;或是发朋友圈时用来配图。但是有些图片下载后会发现自带着平台水印&#xff0c;虽然理解它们是为了保护自身权益&#xff0c;但我们并不是进行商用…

脆弱水印 信息隐藏 QR分解

一、算法介绍 1、论文出处 F. Nejati, H. Sajedi and M. Mohammadi, “Fragile Watermarking for Image Authentication Using QR factorization and Fourier Transform,” 2019 5th International Conference on Web Research (ICWR), 2019, pp. 45-49, doi: 10.1109/ICWR.2…

watermark-removal: 一款超赞的开源图片去水印解决方案

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; 今天给大家推荐一个开源项目&#xff0c;这个开源项目的图片去水印效果非常好。 这个开源项目就是&#xff1a;Watermark-Removal&#xff0c;是可基于机器学习的图像修复方法&…

德国商标注册程序

&#xff08;一&#xff09;进行商标查询。申请人应调查是否已注册相同或类似商标。可在德专利商标局慕尼黑总部、耶拿办事处和柏林技术信息中心的商标注册大厅以及该局网站免费查询。也可向位於该国24个大中城市的专利信息中心查询&#xff0c;四周可出结果&#xff0c;收费50…