Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332974
  • 博文数量: 32
  • 博客积分: 822
  • 博客等级: 准尉
  • 技术积分: 388
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-27 13:55
文章分类

全部博文(32)

文章存档

2019年(2)

2017年(4)

2016年(9)

2015年(1)

2014年(1)

2012年(2)

2011年(13)

我的朋友

分类: LINUX

2011-11-29 16:40:52

环境:
    机房1-A,核心机房,单条网通线路  
    机房2-B,交换机房,双线机房(电信+网通),网通为网关
    机房3-C,数据请求,数据运用,纯电信网络
各机房在这儿假设成单一的一台主机(IP为虚拟IP),则为:
    SA:58.22.7.120
    SB:电信:218.85.135.22,网通:58.22.6.3,网通网关是:58.22.6.2
    SC:电信:61.154.149.29
需求:SC用户请求在SA中的数据,通过SB做中转,我们知道,电信直接访问网通的IP,延时非常的大,对于实现查询的服务来说,是不能接受的。现在讲讲我是怎么解决这个问题的:
    1.让SC请求的目的地址改成SB电信端的IP
    2.让SB上的IPTABLES修改由SC发过来的请求的目的地址为SA的IP,同时,把数据包的源地址改成本机的网通地址
    3.SB本机的默认路由会转发此数据包,把数据包由网关58.22.6.2发出,指向58.22.7.120
    4.SA主机收到由SB发送过来的数据包,正常返回请求数据
    5.SA发送的数据回到SB的网通接口;
    6.SB的IPTABLES服务把由SA发送过来的数据包的源地址改成SB的电信端地址
实现语句为:
cmd=/sbin/iptables
$cmd -t nat -A PREROUTING -p tcp --dport 3003 -j DNAT --to 58.22.7.120:3003
$cmd -t nat -A POSTROUTING -p tcp --dport 3003 -j SNAT --to 58.22.6.3
$cmd -t nat -A PREROUTING -p tcp --sport 3003 -j DNAT --to 218.85.135.22:3003
#此改写语句是基于在SB上,网通是默认网关的,具体的环境可以相应改变。
#========================over===================
这是针对具体的端口的,如例中是3003端口,而我们有时需要的是不确定的端口,或者说是直接以路由的形式来完成,如果你有更好的方案,不防交流一下。
阅读(2742) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~