首页 > 分享 > ATS正向代理数据转发规则配置

ATS正向代理数据转发规则配置

2013年5月23日     浏览数:5,322 发表评论 阅读评论

我现在使用的ATS版本是3.3.1-dev.
作为正向代理我们要实现的是将80端口的数据转发到ATS监听的端口(以8080为例)

ATS的部署一般分为两种方式:
1、ATS与路由(Linux router)为同一台机器
2、ATS与路由分开

路由可使用Linux机器来允当,带双网卡。
eth0为LAN口,IP:192.168.1.1 ,LAN下接交换机,将客户PC接入。
eth1为WAN口,IP:192.168.16.1

一、ATS与路由一体
这种模式下可以两种配置方式
1、使用DNAT配置如下
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.1:8080
使用这种方式,将修改数据包的目的地址和端口,修改为192.168.1.1 8080。按照正常的数据转发流程,这个数据包从eth0进来,通过PREROUTING、FORWARD、POSTROUTING三个链,从eth1出去然后到达源服务器。
现在在PREROUTING链的NAT表中将协议为TCP,端口为80的数据做了DNAT重定向,定向到了本地的8080端口。现在的数据包将从eth0进来,依次通过PREROUTING、INPUT、OUTPUT、POSTROUTING。

还有一种类似的方式用REDIRECT
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-ports 8080

2、使用TPROXY
官方文档里有写TPROXY这种方式,我现在的配置方式与文档上的有些差别。配置如下:
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j MARK –set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -A PREROUTING -p tcp –dport 80 -j TPROXY –tproxy-mark 0×1/0×1 –on-port 8080

注意,ATS配置也要修改
records.conf
CONFIG proxy.config.http.server_ports STRING 8080:ipv4:tr-in

TPROXY,说是可以在不改变数据包的情况下,将数据包定向到本地监听端口。有了解这个的朋友,麻烦补充一个TPROXY原理。

在records.conf中还有一个tr-pass参数,说明用来解决non-http的,现在还没有弄明白。

二、ATS与路由分开
ATS服务器接入到路由的LAN口的交换机,IP为192.168.1.16
我现在使用的只有DNAT这一种
iptables -t nat -A PREROUTING -i eth0 ! -s 192.168.1.16 -p tcp –dport 80 -j DNAT –to 192.168.1.16:8080
iptables -t nat -A POSTROUTING -d 192.168.1.16 -p tcp –dport 8080 -j SNAT –to 192.168.1.1
第一条规则将从LAN进来的非来自ATS服务器的HTTP请求重定向到ATS服务器。第二条将转发到ATS的数据包的源IP修改成路由的IP,因为如果不修改源IP,那么源IP是客户端的IP,ATS将直接通过LAN口的交换转发把响应的数据包发到客户PC,但客户PC一看源IP是ATS服务器的,它没有发送过这样的请求,会将数据包丢掉。

分类: 分享 标签:
  1. 2013年5月23日14:39 | #1

    自己坐个沙发。。。

  2. cyb322
    2013年5月23日16:28 | #2

    非常详细。适合我们内网缓存!!!感谢大神的文章!!!

  1. 2015年12月31日06:10 | #1