linux的iptables实现tcp转发 5C

琢磨了半天,没有进展,向大神来请教。

现在的问题是这样的。

有3台服务器,

A:172.26.1.1

B:172.26.5.2

C:10.9.56.3

B能访问到C的6379端口

A由于权限问题不能访问到C的6379端口,但是A能ping通C。

A能访问B。

然后我想的是,A请求B然后B把请求给C ,C把响应给B ,B在给A。

这个怎么实现呢, 我在网上看了

http://m.blog.csdn.net/blog/rao_warrior/8947444

http://www.firefoxbug.com/index.php/archives/2660/

但是没有成功。

1个回答

sysctl -A | grep 'net.ipv4.ip_forward'

net.ipv4.ip_forward = 0

如果为0,需要改成1

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

要使其失效做如下操作

sysctl -p

2.设置端口转发

#!/bin/bash
pro='tcp'
NAT_Host='Host_A'
NAT_Port=8080
Dst_Host='Host_B'
Dst_Port=80
iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host

查看规则
iptables -L -t nat

保存规则
iptables save
chkconfig iptables on
sudo chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

3.数据包流经过程

A -> B -> C -> B -> A
比如从A发出的数据包如下
Destion Source
DstB:PortB SrcA:PortA
B在PREROUTING链修改后数据包如下
Destion Source
DstC:PortC SrcA:PortA
B在POSTROUTING链修改后数据包如下
Destion Source
DstC:PortC SrcB:PortA
C处理数据包之后返回如下
Destion Source
DstB:PortA SrcC:PortC
B的数据包处理
Destion Source
DstA:PortA SrcB:PortB

ccboy2009
IccBoY 你上面的配置,是在哪台服务器上面配置呢,A ? B. 配置好后 A 怎么 访问 C
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐