iptables 的转发问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
evansfix
V2EX    Linux

iptables 的转发问题

  •  
  •   evansfix 2018 年 12 月 21 日 3807 次点击
    这是一个创建于 2679 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在有一台国内的服务器,但是因为某些问题,禁止国际网络了(攻击太多),然后现在导致无法连接到 s?eam 的服务器,但是使用 iptables 作为转发是可以连接上去,服务端上显示的 ip 是 iptables 的那个 IP,所以我想求助一下 iptables 如何只进行包转发,而不改变来源 IP ?
    可能话说的比较多,但是简易演示如下:
    A 服务器:1.1.1.1
    B 服务器:2.2.2.2
    C 服务器:国外

    由于 A 服务器 无法连接到 C 服务器,所以想利用 B 服务器进行中转一下,连接到 C 服务器。
    目前是 A 可以通过 B 连接到 C,但是 C 上显示的是 B 的服务器 IP,我想 B 上面以 A 的 IP 进行中转。C 服务器获得的 IP 不是 B 的服务器 IP。请问有方法吗?
    14 条回复    2018-12-22 11:44:03 +08:00
    likuku
        1
    likuku  
       2018 年 12 月 21 日 via iPhone
    不作地址转换,那么只开启包转发这也是可以实现,只是也有条件的,以下建议基于一些之前类似的实践,建议你先在试验环境测试:

    条件:
    A 和 B 可顺利双向收发数据,
    B 和 C 可顺利通讯,
    A 可以收到 C 发来的数据(很重要)

    作法:
    B 开启 网络转发功能( ip_forwarding = 1,防火墙可关闭,或者针对 A C 都双向放行)

    A 机上 route 指令 /网卡配置 增加一些路由策略:
    目标是 C 网段 /IP 的 下一跳 gw 是 B 的 ip

    如此,B 会收到 A 发来目标是 C 的包转给 C,
    C 收到后,因为来源是 A,则响应 /反馈 接发给 A
    dbw9580
        2
    dbw9580  
       2018 年 12 月 21 日 via Android
    你这是 ip spoofing,很可能出不了运营商的网络
    evansfix
        3
    evansfix  
    OP
       2018 年 12 月 21 日
    @likuku 感谢您的回复,A 无法直接连接至 C,但是通过 B 可以。所以我想中转一下,但是不修改来源 IP,
    目前的情况是 C 点收到的 IP 是 2.2.2.2 (也就是 B 的 IP ) ,但是我没办法让他收到的 IP 是 1.1.1.1 ( A 的 IP )
    (A 和 B 我都有直接管理权限,C 点只作为收),所以想在 B 上做一个转发,让 A 通过 B 连接到 C,C 得到的 IP 是 A 的 IP 即可。


    @dbw9580 您好,我也测试过了,可以访问.但是无法被提交至 s?eam 的服务器,因为获取的 public 的 IP 是 B 的 IP。
    mason961125
        4
    mason961125  
       2018 年 12 月 21 日 via iPhone
    不可能实现,首先你这是 NAT,如果在 B 上把源 IP 改为 A 的 IP,那么回程路径就不会经过 B。
    mason961125
        5
    mason961125  
       2018 年 12 月 21 日 via iPhone
    建议补一下 路由&交换 知识
    evansfix
        6
    evansfix  
    OP
       2018 年 12 月 21 日
    @mason961125 也可以试试,在 iptables 上我没找到修改源的东西,请问有例子吗?
    mason961125
        7
    mason961125  
       2018 年 12 月 21 日 via iPhone   1
    @evansfix mangle 链专门用于修改包信息
    likuku
        8
    likuku  
       2018 年 12 月 21 日
    @evansfix 如此这般,那不能实现。

    C 机收到了“来自 A ” 的请求,当然是发回给 A 了,
    C 它不会发回给 B 的,除非 B 就是 C 的 默认路由 /默认网关,
    或者 你能控制 C 机,增加一条 目的到 A 的数据包 就发给 B
    likuku
        9
    likuku  
       2018 年 12 月 21 日
    web 服务里,proxy 和 后段 web server 的确是可以做到这种需求,
    但是,这得对中转 proxy 和 web server 都有特别设定才行,
    假若是你这个例子,那么就是 B, C 都必须你自己掌控才可。
    lieh222
        10
    lieh222  
       2018 年 12 月 21 日
    A 在 nat 表的 output 链做 dnat 到 B,B 再 DNAT 到 C,这时候 C 获得的地址是 A 的地址,所以回应的时候直接回到 A 去了,中间如果没有干扰应该可以通信,有干扰就没辙了,除非你能控制 C 服务器,让它把应该发往 A 的包转发到 B 上去
    julyclyde
        11
    julyclyde  
       2018 年 12 月 21 日
    首先,iptables 不负责转发
    你先理解完这一句再重新提问吧
    LGA1150
        12
    LGA1150  
       2018 年 12 月 21 日 via Android
    VPN
    sunznx
        13
    sunznx  
       2018 年 12 月 21 日
    在 1 楼的基础上,在 B 上加个 SNAT 应该可行
    azh7138m
        14
    azh7138m  
       2018 年 12 月 22 日 via Android
    @likuku 楼主这个是 B 做一个路由器,还是在公网上面的,这就有点尴尬了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3477 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 101ms UTC 00:39 PVG 08:39 LAX 17:39 JFK 20:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86