IccBoY 2015-10-27 03:52 采纳率: 50%
浏览 2472
已结题

linux的iptables实现tcp转发

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

现在的问题是这样的。

有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条回答 默认 最新

  • qq_31640875 2015-10-27 04:34
    关注

    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

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算