部署:端口映射相关问题

news2024/9/23 7:33:09

图片仅作示意用途

在很多现场部署环境里,网络管理是相对严格的,设备所在的子网如果需要和办公网所在的服务器通讯,需要通过专门的中间节点,一般还有严格的防火墙配置。此时,研发环境里,服务器与设备子网各节点间的点对点连接,需要通过跨内网和办公网的中间节点中转。中间节点处因为跨越两个物理网络,一般会编制端口映射(另一种实现是VPN)。

但是这样做仍然有问题:有些三方设备的端口是写死的。怎么处理呢?看下面的脚本代码:

#!/bin/bash
echo "start update nat mapping"
container_id=$(docker ps --filter "name=my_app_docker" --quiet)
pidofdocker=$(docker inspect --format '{{.State.Pid}}' $container_id)
nsenter -t $pidofdocker -n -i /bin/bash <<EOF
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp --dport 8000 -j DNAT --to-destination 10.1.3.173:10010
iptables -t nat -A OUTPUT -d 192.168.1.4 -p tcp --dport 8000 -j DNAT --to-destination 10.1.3.173:10011
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp --dport 8100 -j DNAT --to-destination 10.1.3.173:10012
iptables -t nat -A OUTPUT -d 192.168.1.4 -p tcp --dport 8100 -j DNAT --to-destination 10.1.3.173:10013
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp --dport 8200 -j DNAT --to-destination 10.1.3.173:10014
iptables -t nat -A OUTPUT -d 192.168.1.4 -p tcp --dport 8200 -j DNAT --to-destination 10.1.3.173:10015
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp --dport 8300 -j DNAT --to-destination 10.1.3.173:10016
iptables -t nat -A OUTPUT -d 192.168.1.4 -p tcp --dport 8300 -j DNAT --to-destination 10.1.3.173:10017
EOF
echo "nat mapping updated yet. docker pid=$pidofdocker docker id=$container_id"

注释一下:

1.如果你的程序直接运行在linux环境,那么直接配置iptables的那个映射关系即可。

2.如果程序在docker里面,需要执行额外的进入相应的网络配置空间的指令。

3.注意nsenter后进入的是一个独立的应用线程。

4.上面的指令,把应用程序发起的一个指向一个private network endpoint: 192.168.1.3:8000的tcp连接,直接转向广域网地址:10.1.3.173:10010,以此类推。

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

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

相关文章

【Python3】【力扣题】136. 只出现一次的数字

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;遍历列表元素&#xff0c;查看该元素在列表中共有多少个&#xff0c;返回个数为1的元素。 知识点&#xff1a;列表.count(...)&#xff1a;统计列表中某元素个数。 class Solution:def …

【实战项目】高并发内存池(下)

我们上篇文章&#xff08;高并发内存池&#xff08;上&#xff09;&#xff09;介绍了向高并发内存池申请资源的整个过程&#xff0c;本篇文章我们将会对申请后的空间资源释放的整个流程。同时也会对我们自己实现的内存池进行性能测试和优化。 文章目录 一、thread cache 回收资…

CentOS 7 安装和配置java环境

1 安装包准备 安装包可以通过下面地址进行版本选择安装&#xff1a; https://www.oracle.com/java/technologies/downloads/#java8 2 正式开始安装 本次分享的安装方法直接通过编辑/etc/profile文件实现java的安装 2.1 新建安装包存放目录 mkdir /java cd /java/ 2.2 解压安…

Mac电脑窗口管理Magnet中文 for mac

Magnet是一款Mac窗口管理工具&#xff0c;它可以帮助用户轻松管理打开的窗口&#xff0c;提高多任务处理效率。以下是Magnet的一些主要特点和功能&#xff1a; 分屏模式支持&#xff1a;Magnet支持多种分屏模式&#xff0c;包括左/右/顶部/底部 1/2 分屏、左/中/右 1/3 分屏、…

分享一下怎么做一个投票小程序链接

在这个数字化时代&#xff0c;微信小程序已经成为了我们生活中不可或缺的一部分。而投票小程序链接&#xff0c;更是具有广泛的应用场景和巨大的市场潜力。本文将详细介绍如何制作一个投票小程序链接&#xff0c;帮助大家了解其意义、设计思路、实现方法、亮点突出以及如何推广…

【notion enhancer安装】一个强大的笔记软件,可以实现侧边目录的notion

官网地址&#xff1a; https://notion-enhancer.github.io/getting-started/installation/ 介绍 众所周知&#xff0c;notion作为一款强大的笔记软件&#xff0c;深受广大uu的热爱。但是在使用普通版本的时候 &#xff0c;notion不能实现目录的侧边导航&#xff0c;对于很长的…

MyBatis Plus公共字段自动填充

MyBatis Plus公共字段自动填充&#xff0c;也就是在插入或者更新的时候为指定字段赋予指定的值&#xff0c;使用它的好处就是可以统一对这些字段进行处理&#xff0c;避免了重复代码。 例如&#xff0c;像每个table中都有createTime,createUser,updateTime,updateUser这些字段…

信奥赛一本通算法 第二章数据排序(【例2.2】车厢重组、谁考了第k名、奇数单增序列、成绩排序、奖学金、分数线划定、整数奇偶排序)

数据算法 1310&#xff1a;【例2.2】车厢重组1176&#xff1a;谁考了第k名1177&#xff1a;奇数单增序列1178&#xff1a;成绩排序1179&#xff1a;奖学金1180&#xff1a;分数线划定1181&#xff1a;整数奇偶排序 1310&#xff1a;【例2.2】车厢重组 这道题简单&#xff0c;题…

黑马头条:app端文章查看

黑马头条&#xff1a;app端文章查看 黑马头条&#xff1a;app端文章查看文章列表加载1. 需求分析2. 表结构分析3. 导入文章数据库3.1 导入数据库3.2 导入对应的实体类 4. 实现思路5. 接口定义6. 功能实现6.1&#xff1a;导入heima-leadnews-article微服务&#xff0c;资料在当天…

无线通信的未来:WiFi HaLow的低功耗、超长距离革命

WiFi HaLow&#xff0c;一项创新性的Wi-Fi协议&#xff0c;致力于解决不断增长的物联网需求&#xff0c;兼具低功耗和超长距离覆盖的特点。建立在IEEE 802.11ah标准的基础上&#xff0c;WiFi HaLow为物联网开发者提供了全方位的无线解决方案&#xff0c;以满足他们对能源效率、…

Python报错:‘EagerTensor‘ object has no attribute ‘reshape‘

在使用RPython时&#xff0c;发现python代码部分报错&#xff1a;‘EagerTensor‘ object has no attribute ‘reshape‘ 如何解决&#xff1f; 使用np.array 转换为array&#xff0c;再进行reshape 参考&#xff1a; ‘EagerTensor‘ object has no attribute ‘reshape‘处…

由浅入深,详细总结 Spring 八种加载 Bean 的方式

文章目录 方式一&#xff1a;XML 方式声明 bean方式二&#xff1a;XML 注解方式声明 bean方式三&#xff1a;注解方式声明配置类扩展一&#xff1a;Bean 返回的对象和真实 Bean 对象可能不是一个扩展二&#xff1a;加载配置类的同时&#xff0c;加载配置文件&#xff08;系统迁…

堆体扫描点云体积计算实现思路分享

做了一个初步的 demo 实验&#xff0c; 计算一堆沙子或者煤堆这种物体的扫描点云的体积 思路就是分块计算每个小的立方体的体积&#xff0c;然后累加&#xff0c;wechat 394467238&#xff0c; 具体的实现细节略微麻烦一点&#xff0c;代码暂时不放了

C# 压缩图片

.net下跨平台图像处理 https://github.com/mono/SkiaSharp 安装包 skiasharp 效果 代码 ImageCompression.cs using SkiaSharp;namespace ImageCompressStu01 {/// <summary>/// 图片压缩/// </summary>public class ImageCompression{/// <summary>/…

Mysql第四篇---数据库索引优化与查询优化

文章目录 数据库索引优化与查询优化索引失效案例数据准备1. 全值匹配2 最佳左前缀法则(联合索引)主键插入顺序4 计算、函数导致索引失效5 类型转换(自动或手动)导致索引失效6 范围条件右边的列索引失效7 不等于(!或者<>)索引失效8 is null可以使用索引, is not null无法使…

数据结构之栈的讲解(源代码+图解+习题)

我们在学习过顺序表和链表之后&#xff0c;了解了使用数组存储数据&#xff0c;使用结构体来存储数据和有关的指针&#xff0c;这些都是底层的东西&#xff0c;链表是靠指针的链接&#xff0c;顺序表是靠数组的下标才能得以实现增删查改。众多数据结构其实底层都离不开数组&…

开发ABAP程序中的错误

select语句错误 select abc from <透明表> into table <内表> where <条件>. *字段必须要一一对应.否则会报错或者值平移 select * from <透明表> into corresponding fields of table <内表> where <条件>. *虽然可以自动匹配可以避免…

分享一下门店服务预约系统怎么做

随着科技的不断发展&#xff0c;越来越多的企业开始注重提高服务质量和效率。其中&#xff0c;门店服务预约系统成为了许多企业的选择。本文将探讨门店服务预约系统的意义、设计思路、实现方法、系统测试以及拓展案例&#xff0c;并总结门店服务预约系统设计和实现的重要性。 一…

使用pycharm远程连接到Linux服务器进行开发

预计达到的效果 本地的 PyCharm 能达到和远程服务器之间的文件同步&#xff1b;本地的 PyCharm 能够使用远程服务器的开发环境&#xff1b; 环境配置 PyCharm&#xff1a;PyCharm 2021.3 (Professional Edition)Linux服务器&#xff1a;Ubuntu20.04 步骤 1.进入配置项 配…

设计模式中的黄金原则:引领你的代码风格,提升可维护性与扩展性

中国的先贤说过: 有道无术,术可求.有术无道,止于术. 术指的是技能、技术或方法&#xff0c;而道指的是原则、道德、智慧和理念。 西方古代的哲人也说过同样的话: 智慧之路从感性开始&#xff0c;却终极于理性.为什么要说设计原则呢, 因为设计模式通常需要遵循一些设计原则&…