一条复杂的linux路由器、防火墙规则求教?

坚慧 发布于 2015/03/25 14:07
阅读 459
收藏 0

需求:

一台服务器只有一个公网ip地址为10.9.5.5(示例),开放了80端口的http代理服务和openvpn的1194服务,现在所有通过openvpn进入的用户,只要dport是80,通通转发到10.9.2.2:80上去,请问怎么解决呢?

解决方案:

我想到的方案是在服务器内部添加一个虚拟网卡192.168.1.5

1、将10.9.5.5:1194接收的数据都转发到192.168.1.5:1194,由openvpn处理

2、为openvpn处理后、src=192.168.1.5的这些数据设置路由规则,最终需要通过10.9.5.5发送到外网

2、为src=192.168.1.5,dport=80的规则添加规则,这些数据都发送到10.9.8.6:80这台服务器80端口上。

请教各位大侠,这样的规则该怎么设置啊?

以下是问题补充:

@坚慧:因为10.9.5.5这台服务器上还有代理服务,本身有发送到其他服务器80端口的请求,因此不能简单的把src=10.9.5.5,dport=80数据直接转发到10.9.8.6:80. 简而言之,就是要把来自openvpn发送到(其他服务器)80端口的数据,跟代理服务器发送到(其他服务器)80端口的数据区分开来。 (2015/03/25 14:11)
加载中
0
mhye
mhye

假设你的openvpn是一个单独的服务器,地址为192.168.1.5 ,路由器地址10.9.5.5

第一个要求最简单了,就是postrouting的规则 -j DNAT 192.168.1.5。之后如果不是出于审核工作,路由器关于vpn已经没有什么可以做的了

第二个就是prerouting 把SNAT把原地址变成192.168.1.5。

第三条规则属于理解上的问题。既然vpn服务器已经做了SNAT的工作,iptables查找PREROUTING以后,下面POSTROUTING就可以基于源地址做一次DNAT,这样来自vpn的80可以经过两次规则查找到达10.9.8.6:80,但是我不理解这样做的目的是什么

0
坚慧
坚慧

引用来自“mhye”的评论

假设你的openvpn是一个单独的服务器,地址为192.168.1.5 ,路由器地址10.9.5.5

第一个要求最简单了,就是postrouting的规则 -j DNAT 192.168.1.5。之后如果不是出于审核工作,路由器关于vpn已经没有什么可以做的了

第二个就是prerouting 把SNAT把原地址变成192.168.1.5。

第三条规则属于理解上的问题。既然vpn服务器已经做了SNAT的工作,iptables查找PREROUTING以后,下面POSTROUTING就可以基于源地址做一次DNAT,这样来自vpn的80可以经过两次规则查找到达10.9.8.6:80,但是我不理解这样做的目的是什么

openvpn 不是单独的服务器,上面还有一个http代理服务,

这样做是为了统计,把通过openvpn访问web的用户流量,跟通过http访问web的用户流量,分别统计汇总,好看看是使用哪部分的用户多,用谁多就增加谁。


返回顶部
顶部