首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过另一个本地端口离开后维护TCP数据包的目的端口

通过另一个本地端口离开后维护TCP数据包的目的端口
EN

Unix & Linux用户
提问于 2018-04-16 09:06:47
回答 2查看 441关注 0票数 1

问题:

我有一个应用程序位于主机上(让我们称之为host1),它将TLS加密的TCP数据包发送到另一个主机的端口5015 (让我们称之为host2)。由于网络限制,host1必须通过80或443输入和离开所有入站和出站通信量。我无法访问host2

方法:

我的想法是,我可以在host1上创建一个iptable规则,它将路由/重定向/转发443中的5015通信量,并且必须让它到达host2:5015。我遇到的问题是制定正确的规则。到目前为止,我的情况如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TCP_TRAFFIC_PORT=5015
PROXY_PORT=443

_apply_outbound_rules() {
    # Forward outgoing packets through the proxy port
    sudo iptables -t nat \
        -I OUTPUT 1 \
        -p tcp --destination-port $TCP_TRAFFIC_PORT \
        -j DNAT --to-destination :$PROXY_PORT

    # Send packets to host2:5015 port (this is likely the rule to fix)
    sudo iptables -t nat \
        -I POSTROUTING 1 \
        -p tcp --destination-port $PROXY_PORT \
        -j SNAT --to-source :$TCP_TRAFFIC_PORT
}

apply_outbound_rules

有人知道怎么做吗?这似乎是一件常见的事情,但我遇到了麻烦。

EN

回答 2

Unix & Linux用户

发布于 2018-04-16 11:07:25

首先,linux中的NAT是有状态的。这意味着您不需要出站和入站规则。当流量返回是NATed出站时,linux将自动取消返回流量。

虽然您将遇到的主要问题是TCP会话是由以下的组合来定义的:

  • 源IP
  • 源端口
  • 目的IP
  • 目的端口

源IP已被限制为单个值(host1的IP)。目标IP已经是单个值(host2的IP)。源端口只有两个可能的值(80 & 443)。目标端口仅限于单个值(5015)。这意味着您只能建立最多2个同时连接(如果您跨两个端口负载平衡SNAT )。即使是顺序连接,您也可能会遇到端口重用问题,比如端口处于TIME_WAIT状态。

尽管如此,如果您真的想尝试这一点,则应该这样做的规则是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iptables -t nat -I POSTROUTING \
  -d $HOST2_IP -p tcp --dport $TCP_TRAFFIC_PORT \
  -j SNAT --to-source :$PROXY_PORT
票数 1
EN

Unix & Linux用户

发布于 2018-04-16 20:54:40

您知道应用程序在哪个端口上运行吗?如果没有,则需要将所有源端口映射到80或443。

下面试着替换host2ip。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iptables -t nat -A POSTROUTING -p tcp -d host2ip -j SNAT -m multiport  --sports 1:65535 --to-source :443
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/438154

复制
相关文章
nginx 访问.php文件正常,访问.html文件500错误
Nginx遇上Access Denied提示怎么解决 这几天在摆弄linux下面的各种服务器,对nginx非常有兴趣。
友儿
2022/09/11
1.7K0
用imdisk创建内存盘存放缓存文件提高访问速度
当下内存条和SSD硬盘都比两三年前便宜很多了,2000元内配个16G内存的AMD台式机(含1080P显示器)就完全够日常办公用了,如果有条件搞2个3600MHz的16G内存条组成双通道超频到3933MHz甚至4133Hz甚至更高就更完美了。为了让内存发挥更大的作用,可以创建内存盘来放缓存,甚至一些业务都完全可以跑在内存盘里,这样访问很快。下面说说内存盘怎么实施:
Windows技术交流
2023/09/12
2.8K0
Android RxJava应用:从磁盘/内存缓存中获取缓存数据
Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。
Carson.Ho
2022/03/25
2.3K0
Android RxJava应用:从磁盘/内存缓存中获取缓存数据
Android RxJava 实战系列:从磁盘 / 内存缓存中 获取缓存数据
Carson_Ho的Github地址 = RxJava2实战系列:从磁盘 / 内存缓存中 获取缓存数据
Carson.Ho
2019/02/22
2K0
Caffeine缓存 最快缓存 内存缓存
Caffeine是在Guava Cache的基础上做一层封装,性能有明显提高,二者同属于内存级本地缓存。使用Caffeine后无需使用Guava Cache,从并发的角度来讲,Caffeine明显优于Guava,原因是使用了Java 8最新的StampedLock锁技术。
赛先生和泰先生
2022/01/21
3K0
Caffeine缓存 最快缓存 内存缓存
Nginx使用Linux内存加速静态文件访问
Nginx是一个非常出色的静态资源web服务器。如果你嫌它还不够快,可以把放在磁盘中的文件,映射到内存中,减少高并发下的磁盘IO。
EltonZheng
2021/01/26
2.3K0
HTML DOM 访问
下面的例子返回包含文档中所有 <p> 元素的列表,并且这些 <p> 元素应该是 id="main" 的元素的后代(子、孙等等):
陈不成i
2021/07/21
7160
内存缓存MemoryCache
内存缓存MemoryCache实现了ICache接口,Redis同样实现了ICache接口,两者在缓存操作上达到了高度抽象统一。应用设计时一律使用ICache接口,开发环境装配为MemoryCache,生产环境根据分布式需要可以装配为Redis。如果应用系统没有分布式需求,继续使用MemoryCache更好。
JusterZhu
2022/12/07
8070
内存缓存MemoryCache
go 内存缓存
很多时候我们为了缩短单次请求的时间,就需要去分析请求在哪一步耗时比较大,一般越靠近应用层优化效果越大,后端程序就是请求到达路由解析到返回结果这一步骤了。
花落花相惜
2021/11/25
8690
[BlogCore操作文档4] MemoryCache:内存缓存
采用最新的前后端完全分离技术【 ASP.NET Core Api 6.0 + Vue 2.x 】,并结合 IdentityServer4 ,可快速解决多客户端和多资源服务的统一认证与鉴权的问题,以及整合较为完善的数据权限控制。
老张的哲学
2023/08/23
2970
[BlogCore操作文档4] MemoryCache:内存缓存
内存缓存详解
很多时候我们为了缩短单次请求的时间,就需要去分析请求在哪一步耗时比较大,一般越靠近应用层优化效果越大,后端程序就是请求到达路由解析到返回结果这一步骤了。
花落花相惜
2021/12/16
6920
从GPU的内存访问视角对比NHWC和NCHW
NHWC和NCHW是卷积神经网络(cnn)中广泛使用的数据格式。它们决定了多维数据,如图像、点云或特征图如何存储在内存中。
deephub
2023/10/07
1.6K0
从GPU的内存访问视角对比NHWC和NCHW
JMeter访问redis缓存
第二次工业革命在20世纪初, 基于劳动分工的电力驱动时代, 人类大量使用流水线的电气化时代, 20世纪70年代 电子技术,工业机器人的使用提升了生产效率, 使生产自动化水平进一步提高, 人类进入了第三次工业革命. 第四次工业革命就是工业4.0 , 基于大数据, 物联网(机器人视觉传感器)融合的系统在生产中大规模使用, 使人类进入”智能化时代”. IT技术是4.0非常重要的核心, 是支撑未来长期技术性和经济周期的基础.
louiezhou001
2019/07/24
1.2K0
JMeter访问redis缓存
centos7.0 可以访问HTML文件,不能访问PHP文件,因为php-fpm没有扩展包
解决方法 :https://blog.csdn.net/ityang_/article/details/53980190
全栈程序员站长
2022/07/07
9740
centos7.0 可以访问HTML文件,不能访问PHP文件,因为php-fpm没有扩展包
【Android 内存优化】Bitmap 内存缓存 ( Bitmap 缓存策略 | LruCache 内存缓存 | LruCache 常用操作 | 工具类代码 )
Glide 开源库 : 官方建议凡是使用到 Bitmap 解码 , 显示 , 缓存等操作 , 直接使用 Glide 开源库进行上述操作 , 不建议直接操作 Bitmap 对象 ;
韩曙亮
2023/03/27
2.2K0
(代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
JAVA虚拟机内部便会调用OS底层的 read()系统调用完成操作,在调用 in.read()的时候就是从内核缓冲区直接返回数据了。
intsmaze-刘洋
2018/08/29
4740
(代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
(理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
  为了快速构建项目,使用高性能框架是我的职责,但若不去深究底层的细节会让我失去对技术的热爱。   探究的过程是痛苦并激动的,痛苦在于完全理解甚至要十天半月甚至没有机会去应用,激动在于技术的相同性,新的框架不再是我焦虑。   每一个底层细节的攻克,就越发觉得自己对计算机一无所知,这可能就是对知识的敬畏。
intsmaze-刘洋
2018/08/29
1.7K1
(理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
禁止IIS缓存静态文件的方法(png,js,html等)
IIS为了提高性能,默认情况下会对静态文件js,html,gif,png等做内部缓存,这个缓存是在服务器iis进程的内存中的。IIS这么做在很大程度上可以提高静态文件的访问性能,在正常情况下只要静态文件更新了IIS也会更新缓存。但是如果更新的静态文件很多就有可能出现缓存不更新的情况。
会长君
2023/04/26
2.9K0
【缓存】HTML5缓存的那些事
在HTML5出生之前,通常在浏览器(客户端)使用cookies来存储客户端的内容;
前端修罗场
2023/10/07
4151
【缓存】HTML5缓存的那些事
如何优化tomcat配置(从内存、并发、缓存4个方面)优化
  Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。    JAVA_OPTS参数说明    -server 启用jdk 的 server 版;    -Xms java虚拟机初始化时的最小内存;    -Xmx java虚拟机可使用的最大内存;    -XX: PermSize 内存永久保留区域    -XX:MaxPermSize 内存最大永久保留区域    服务器参数配置
拓荒者
2019/03/11
2.2K0

相似问题

Javascript -从内存缓存访问对象

15

如何从AWS Lambda访问内存缓存?

16

内存访问和缓存

22

访问内存缓存项

11

毕加索-仅访问内存缓存

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文