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

无公网 ip, 通过跳板主机建立 VPN 做端口映射让外网 ip 访问, iptables 应该怎么写?

  •  
  •   behindflower · 2016-09-16 00:00:41 +08:00 · 4415 次点击
    这是一个创建于 2975 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如
    内网机器: 192.168.1.111
    VPS 外网 ip: X.X.X.X
    建立 VPN 分配的 NAT 地址: 10.10.0.1
    需要映射的端口: 80

    我在 VPS 上写的规则:

    iptables -t nat -A PREROUTING -d X.X.X.X -p tcp --dport 80 -j DNAT --to-destination 10.10.0.1:80

    路由器:

    iptables -t nat -A PREROUTING -d 10.10.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.111:80

    然而还是没办法成功转发。刚接触 iptables 不久,希望大家指正

    12 条回复    2016-09-20 21:15:24 +08:00
    dot
        1
    dot  
       2016-09-16 00:45:18 +08:00 via Android
    没太看懂,你是说, A 在内网, B 在外网, AB 组成 VPN , C 通过 B 映射的 A 某端口,接到 A 吗?
    dot
        2
    dot  
       2016-09-16 00:46:36 +08:00 via Android
    哦,规则我没看,但是如果你的 VPS 是国内的,在未备案的情况下, 80 端口不可用,你换个端口试试就知道了
    behindflower
        3
    behindflower  
    OP
       2016-09-16 01:04:30 +08:00
    @dot VPS 是香港的,其他端口像 53 88 也试过了
    panzhc
        4
    panzhc  
       2016-09-16 01:49:37 +08:00
    还缺一条 SNAT
    okudayukiko0
        5
    okudayukiko0  
       2016-09-16 17:20:58 +08:00
    用 SSH 或许更方便
    twy2004
        6
    twy2004  
       2016-09-16 19:27:00 +08:00
    还缺一条 SNAT
    +1
    behindflower
        7
    behindflower  
    OP
       2016-09-17 17:59:14 +08:00
    @panzhc @twy2004 我分别在 VPS 和路由器上加了一条命令
    > iptables -t nat -A POSTROUTING -s 10.10.0.1 -p tcp --dport 53 -j SNAT --to X.X.X.X:53
    > iptables -t nat -A POSTROUTING -s 192.168.1.111 -p tcp --dport 53 -j SNAT --to 10.10.0.1:53
    然而似乎数据只能进来不能出去
    behindflower
        8
    behindflower  
    OP
       2016-09-17 18:01:08 +08:00
    忘了说,上面的端口是 80 ,后来改成 53 也一样
    su8610
        9
    su8610  
       2016-09-17 23:47:48 +08:00 via Android
    干脆弄个反代把本地的 80 弄出去
    raysonx
        10
    raysonx  
       2016-09-18 09:22:42 +08:00 via Android
    网络结构太复杂了,还两层 nat 。。。没必要从你本地的局域网到 VPN 的虚拟内网还要过层 nat 。
    楼主肯定哪个地方没配置好,完整的 nat 规则看不到,防火墙策略看不到,路由表看不到,也没有用 TCPdump 抓包测试,甚至我都不知道你的 VPN 是哪种类型(基于路由表的还是基于 ipsec 策略的)你让大家怎么帮你解决问题
    binaryer
        11
    binaryer  
       2016-09-19 11:28:43 +08:00
    lilydjwg
        12
    lilydjwg  
       2016-09-20 21:15:24 +08:00
    我试过,这样的转发,好像是不能把流量转发到不同的网络接口上的。

    建议:用 autossh 跑一个 ssh 端口转发就好了嘛。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.