firewalld防火墙转发流量到其他端口forward port rules

假设云主机eth0: 47.93.27.106

tun0:  inet 10.8.0.1  netmask 255.255.255.0

Show rules for a specific zone (public)

sudo firewall-cmd --zone=public --list-all

Add the tun0 interface to the public zone:

sudo firewall-cmd --zone=public --add-interface=tun0 --permanent

Check the active zones again to confirm that tun0 has been added:

sudo firewall-cmd --get-active-zones

Add the forward port rules

sudo firewall-cmd --zone=public --add-forward-port=port=14662:proto=tcp:toport=4662:toaddr=10.8.0.2 --permanent

(10.8.0.1)开放端口14662 接收外部流量, 转发到10.8.0.2:4662

修改内核参数支持IPv4转发

sudo sysctl -w net.ipv4.ip_forward=1
sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

 配置NAT确保public zone的流量转到en0:

sudo iptables -t nat -A PREROUTING -p tcp --dport 14662 -j DNAT --to-destination 10.8.0.2:4662
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

确保iptables-serverices软件包安装了 

sudo yum install iptables-services

保存、重启iptables,让配置生效

sudo service iptables save
sudo systemctl restart iptables
sudo systemctl enable iptables

重启防火墙firewalld

sudo firewall-cmd --reload
sudo systemctl restart firewalld

 查看改动的配置

sudo firewall-cmd --list-all --zone=public
sudo iptables -L -t nat

在这台VPS上 telnet 10.8.0.2 4662

windows客户端先连接上Open***, 另一台vps

当然也可以用在线工具open-ports, TCP可以支持, UDP还是要自己写个简单的代码测试。

windows客户端

同理udp 4672

sudo firewall-cmd --zone=public --add-forward-port=port=14672:proto=udp:toport=4672:toaddr=10.8.0.2
sudo firewall-cmd --zone=public --add-forward-port=port=14672:proto=udp:toport=4672:toaddr=10.8.0.2 --permanent
sudo firewall-cmd --reload
sudo iptables -t nat -A PREROUTING -p udp --dport 14672 -j DNAT --to-destination 10.8.0.2:4672
sudo service iptables save
sudo systemctl restart firewalld

 发送UDP报文

echo -n "Test UDP Packet" | nc -u 47.93.27.106 14672 # 以下C代码同理 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>int main(int argc, char *argv[]) {if (argc != 4) {fprintf(stderr, "Usage: %s <server_ip> <server_port> <message>\n", argv[0]);exit(EXIT_FAILURE);}const char *server_ip = argv[1];int server_port = atoi(argv[2]);const char *message = argv[3];int sockfd;struct sockaddr_in server_addr;// Create socketif ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("Socket creation failed");exit(EXIT_FAILURE);}memset(&server_addr, 0, sizeof(server_addr));// Fill server informationserver_addr.sin_family = AF_INET;server_addr.sin_port = htons(server_port);server_addr.sin_addr.s_addr = inet_addr(server_ip);// Send UDP packetif (sendto(sockfd, message, strlen(message), 0, (const struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) {perror("Send failed");close(sockfd);exit(EXIT_FAILURE);}printf("UDP packet sent.\n");// Close socketclose(sockfd);return 0;
}

 云主机VPS发到本地Windows:

打开wireshark找到tunnel adpator 用wireshark过滤条件 

 udp and ip.addr == 10.8.0.2 and udp.port == 4672

如果是从windows端

#include <WinSock2.h>
#include <WS2tcpip.h>
#include <stdio.h>#pragma comment(lib, "Ws2_32.lib")int main(int argc, char* argv[]) {// Validate command-line argumentsif (argc != 4) {printf("Usage: %s <server_ip> <server_port> <message>\n", argv[0]);return 1;}const char* server_ip = argv[1];int server_port = atoi(argv[2]);const char* message = argv[3];// Initialize WinsockWSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {printf("WSAStartup failed. Error Code : %d", WSAGetLastError());return 1;}// Create socketSOCKET sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (sockfd == INVALID_SOCKET) {printf("Socket creation failed. Error Code : %d", WSAGetLastError());WSACleanup();return 1;}// Server address structuresockaddr_in serverAddr;serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(server_port);inet_pton(AF_INET, server_ip, &serverAddr.sin_addr);// Send UDP packetint bytesSent = sendto(sockfd, message, strlen(message), 0, (sockaddr*)&serverAddr, sizeof(serverAddr));if (bytesSent == SOCKET_ERROR) {printf("Send failed. Error Code : %d", WSAGetLastError());closesocket(sockfd);WSACleanup();return 1;}printf("UDP packet sent.\n");// Close socketclosesocket(sockfd);WSACleanup();return 0;
}

udp_sender.exe 47.93.27.106 14672 "Test UDP Packet"

服务端: sudo tcpdump -i any udp port 14672 -XX

这样,借助Open***, iptables & firewalld 在没有公网IP的条件下把本机TCP 4662 映射到远程云主机 TCP 14662, 把本机UDP 4672映射到远程云主机UDP 14672。花生壳 就赚不到我们的钱了。


 


 

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

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

相关文章

手把手教你考下39张免费亚马逊AWS证书和学习徽章

小李哥目前共考了39项亚马逊云(AWS)徽章&#xff0c;这也是普通用户可考的全部徽章。这篇文章会介绍如何报名、复习、通过这39张徽章提升云计算基本技能&#xff0c;了解全球第一大云厂亚马逊云科技前沿技术。这篇文章在领英爆&#x1f525;&#xff0c;有将近100k浏览量和11k的…

MeterSphere v3.0全新启航,让软件测试工作更简单、更高效

2024年7月1日&#xff0c;MeterSphere v3.0版本正式发布。MeterSphere v3.0是新一代的测试管理和接口测试工具&#xff0c;致力于让软件测试工作更简单、更高效&#xff0c;不再成为持续交付的瓶颈。 在团队协作方面&#xff0c;针对目前企业软件测试团队所面临的测试工具不统…

Java中使用KMP算法解决力扣459.重复的子字符串问题

在解决字符串相关问题时&#xff0c;KMP&#xff08;Knuth-Morris-Pratt&#xff09;算法是一个非常有用的工具。今天&#xff0c;我们将使用KMP算法来解决力扣&#xff08;LeetCode&#xff09;上的一个经典问题&#xff1a;459. 重复的子字符串。 力扣459.重复的子字符串 题…

终止线程的典型方式

终止线程一般不使用JDK提供的 stop()/destory() 方法它们本身也被JDK废弃了。通常的做法是提供一个boolean型的终止变量&#xff0c;当这个变量置为false&#xff0c;则终止线程的运行。 public class stopThread implements Runnable {private boolean flag true;Overridepu…

数据安全与隐私保护在返利App中的实施策略

数据安全与隐私保护在返利App中的实施策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、引言 随着移动互联网的发展&#xff0c;返利App作为一种流行的…

深度学习项目GPU开发环境安装

注安装环境&#xff1a;ubuntu22.04, cuda 11.7, cudnn8.9 1.安装nvidia驱动 看可安装的Nvidia驱动版本&#xff1a;执行 ubuntu-drivers devices 安装合适版本的Nvidia驱动&#xff1a; sudo apt-get install nvidia-driver-515 注意&#xff1a;合适的版本需要尝试&#x…

5.12 Firmware Image Download command

5.12 Firmware Image Download command Firmware Image Download命令用于下载全部或部分image&#xff0c;以便将来更新控制器。当Admin Submission Queue 或 I/O Submission Queues 上的其他命令未完成时&#xff0c;可能会提交Firmware Image Download命令。Firmware Image …

从0开始建SMARTFORMS表格

一、简介步骤 1、设置纸张的大小&#xff08;页格式&#xff09; 2、设置字体大小&#xff08;样式&#xff09; 3、设置表格模板 二、详细操作步骤 1、设置页格式 事务码&#xff1a;SPAD 参考操作&#xff1a;SAP Smartforms页格式创建与使用_sap 页格式-CSDN博客 SA…

websocket (@ServerEndpoint)基本使用指南

概述 websocket 介绍 WebSocket 是一种通信协议&#xff0c;通过单个 TCP 连接提供全双工通信通道。它允许客户端和服务器之间进行双向通信、实时交互&#xff0c;比如在线聊天、实时数据展示等。 与传统的 HTTP 协议不同&#xff0c;WebSocket 连接是持久的&#xff0c;可以在…

godis源码分析——TCP服务

前言 Godis 是一个用 Go 语言实现的 Redis 服务器。 地址&#xff1a;https://github.com/HDT3213/godis?tabreadme-ov-file 简单架构描述 godis是一个中心服务&#xff0c;是TCP服务。流程大概是&#xff1a;godis开启服务&#xff0c;客户端通过TCP建立连接。客户端发起…

【网络安全】修改Host文件实现域名解析

场景 开发一个网站或者服务&#xff0c;需要在本地测试时&#xff0c;可以将线上的域名指向本地开发环境的IP地址。从而模拟真实环境中的域名访问&#xff0c;方便调试和开发。 步骤 1、以管理员身份打开命令提示符 2、编辑hosts文件&#xff1a; 输入以下命令打开hosts文…

Suno: AI音乐创作的新时代

名人说:一点浩然气,千里快哉风。 ——苏轼 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是Suno?1、Suno2、应用场景二、如何使用Suno制作音乐?步骤1:注册并登录Suno平台步骤2:创建音乐项目步骤3:生成音乐片段三、Suno的影响很高兴你打开了…

【第六节】C/C++静态查找算法

目录 前言 一、搜索查找 二、查找算法 1. 线性查找&#xff08;Linear Search&#xff09; 2. 二分查找&#xff08;Binary Search&#xff09; 3. 插值查找&#xff08;Interpolation Search&#xff09; 4. 哈希查找&#xff08;Hash Search&#xff09; 5. Fibonacc…

C++感受12-Hello Object 派生版

不变的功能&#xff0c;希望直接复用原有代码&#xff1b;变化的功能&#xff0c;希望在分开的代码里实现。 派生的基本概念和目的如何定义派生类以及创建派生对象派生对象的生死过程 0. 课堂视频 ff14-HelloObject-派生版 1. 派生的基本概念与目的 编程&#xff0c;或者说软…

python 音频和视频合并自动裁剪

为了将音频和视频合并并自动裁剪&#xff0c;我们可以使用Python中的moviepy库。moviepy是一个强大的视频处理库&#xff0c;它允许我们进行剪辑、裁剪、合并等操作。 以下是一个详细的步骤和代码示例&#xff0c;说明如何使用moviepy来合并音频和视频&#xff0c;并自动裁剪它…

vue中的坑·

常规 1.使用watch时&#xff0c;immediate true会在dom挂载前执行 2.使用this.$attrs和props 可以获取上层非原生属性&#xff08;class/id&#xff09; 多层次嵌套引用 设置的时候直接赋值&#xff0c;修改的时候即使用的双向绑定加上$set / nextick / fouceUpdate都不会同步…

FastGPT 错误:Embedding API is not responding

一、FastGPT 报错 在调用 Embedding 模型对文档切片向量化的时候 FastGPT 出现如下错误。 [Error] 2024-07-01 08:41:00 Embedding API is not responding {message: <!doctype html><html lang="zh-CN"><head><meta charset="utf-8&qu…

HiBit Uninstaller:软件批量卸载,一触即得

名人说&#xff1a;莫道谗言如浪深&#xff0c;莫言迁客似沙沉。 ——刘禹锡《浪淘沙》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍1、HiBit Uninstaller2、核心功能 二、下载安装1、下载2、安装 …

【基础篇】第2章 Elasticsearch安装与配置

2.1 环境准备 2.1.1 操作系统选择 Elasticsearch作为一个跨平台的搜索引擎&#xff0c;理论上支持所有能运行Java虚拟机的操作系统&#xff0c;包括但不限于Linux、macOS和Windows。Linux是生产环境中最为推荐的选择&#xff0c;因为它提供了更好的性能和稳定性。macOS适合开…

javascript/js中Array、Set、Map数据结构特性及用法

前言 本文温习前端开发中常见的3种数据结构&#xff1a;数组Array、有序集合Set、有序映射Map&#xff0c;并分别介绍其特性、用法示例 数组-Array 适用于存放和读取有序集合、不要求集合元素唯一性时&#xff1b;可通过索引快速访问元素&#xff0c;实现元素增删改查时 使…