端口转发中的回流问题-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 752870
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-17 14:32
个人简介

小公司研发总监,既当司令也当兵!

文章分类

全部博文(144)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2020-07-13 17:28:53

问题描述


在一些内网部署服务的场景中,比如家庭nass,希望通过外部对内部服务进行访问。由于nat的隔离,则需要在网关防火墙上做端口转发(关于端口转发的原理,本文不表,默认读者是知道的)。经典拓扑如下:


如上图,网关设备外网ip 为12.x.x.178,内部网段外192.168.1.1。其中服务部署在内部主机 192.168.1.100上。为了让外部主机(pc1)能够通过网关设备的公网地址,访问到服务,在网关防火墙上,配置如下规则(核心规则):

点击(此处)折叠或打开

  1. iptables -t nat -i prerouting -d 12.x.x.178 -p tcp -m tcp --dport 8080 -j dnat --to-destination 192.168.1.100

  2. iptables -i foreard -d 192.168.1.100 -j accept
经过上面配置后,pc1 可以通过12.x.x.178:8080 访问到内部服务!

但是,内网pc2,试图通过12.x.x.178:8080 访问内部服务时,却无法访问!过程如下:


pc2在请求服务过程中,由于发送的目标地址和接收数据的源地址不匹配,所以pc2会丢弃相关数据包,而导致服务无法访问!通过tcpdump/wireshark抓包,也证实这一点。

凯发app官方网站的解决方案

经过上面的分析,我们已经很清楚问题的原因了:内部地址通过端口映射访问内部服务,在dnat后,源地址没有正确映射,导致出现发送接收不同源的问题。做如下调整即可:



总结
只要在外部映射的基础上,加两条内部dnat & snat映射规则,既可以处理:内部主机通过映射后的外部ip访问内部服务,造成的端口转发中的回流问题。新增配置如下()

点击(此处)折叠或打开

  1. iptables -t mangle -i prerouting -i br-lan -d 112.x.x.178 -j connmark --set-xmark 0x100000/0xf00000

  2. iptables -t nat -i prerouting -i br-lan -m connmark --mark 0x100000/0xf00000 -j dnat --to-destination 192.168.1.100

  3. iptables -t nat -i postrouting -o br-lan -m connmark --mark 0x100000/0xf00000 -j snat --to-source 12.x.x.178



阅读(7760) | 评论(0) | 转发(0) |
0

上一篇:lua split

下一篇:开篇

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图