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

折腾了好几天,阿里云服务器转发 upd,很难实现

  •  
  •   ferock ·
    ferocknew · 2015-10-02 10:23:39 +08:00 · 21095 次点击
    这是一个创建于 3342 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实目的是为了转发 anyConnet , tcp 转发有很多办法, haproxy 或者 socat 都行。
    但是 udp 就是不行。现象就是, anyConnet 连上了,但是访问 twitter 或者 m.facebook.com 就会停在那里。

    也用微林的服务,效果很好,想实现和微林端口转发一样的功能,现在就卡在 udp 转发上了。
    尝试了 iptables 转发,似乎不行,发现阿里云的 iptables 没什么作用,开启以后,只设置了 22 ,和 80 ,结果其他端口依然可以有出入的流量。

    不知道大家有没有在阿里云上成功的方法。

    38 条回复    2016-12-03 00:54:33 +08:00
    ooxxcc
        1
    ooxxcc  
       2015-10-02 10:33:22 +08:00
    udp ……

    转发 udp 也可以用 socat ,搜一下就有例子

    $ sudo socat UDP4-RECVFROM:161,fork UDP4-SENDTO:localhost:10161
    ferock
        2
    ferock  
    OP
       2015-10-02 10:44:35 +08:00 via Android
    发帖之前已经试过了,可以转发 dns 53 端口,但是 anyconnet 还是不行。很神奇
    66CCFF
        3
    66CCFF  
       2015-10-02 11:15:13 +08:00
    @ferock anyconnect ……不是 TCP 么= =
    yexm0
        4
    yexm0  
       2015-10-02 11:57:58 +08:00 via Android
    anyconnect 可以 block udp 连接来让它单纯走 tcp 的吧。。。。
    chinawrj
        5
    chinawrj  
       2015-10-02 12:05:54 +08:00 via Android
    搞个 vpn 就行了啊。。。
    gzlock
        6
    gzlock  
       2015-10-02 13:23:10 +08:00 via Android
    docker hub 上有一个 Tommylau 的用户制作了一个 ocserv 镜像,看启动命令可以支持 UDP 转发,楼主可以去翻翻 Dockerfile
    但是我用来玩 steam 的 robocraft ,一开局就掉线,不知道是否 UDP 有问题
    ferock
        7
    ferock  
    OP
       2015-10-02 13:26:06 +08:00
    @gzlock 我搜一下, anyconnet 好像不只是 tcp 的,有 dns 解析走 udp 的,否则 dns 还是本地。会被污染
    gzlock
        8
    gzlock  
       2015-10-02 13:35:22 +08:00 via Android
    @ferock 其实 Tommylau 也在 V2EX ,但似乎很久不上了,@他也没回应
    然后我把 docker 架在香港服务器上,理论 UDP 没文体的话,应该是可以畅玩游戏的。
    但事实就是 robo craft 一开局,游戏里就会显示已经断线(一开局就黑屏,过一会返回大厅)
    玩游戏的环境: Mac ,用 anyconnect 的 Mac 客户端
    ferock
        9
    ferock  
    OP
       2015-10-02 13:41:37 +08:00
    没找到,这是什么东西
    aalska
        10
    aalska  
       2015-10-02 13:42:53 +08:00
    注释 ocserv 配置文件夹里的 UDP-PORT...

    全走 tcp
    ferock
        11
    ferock  
    OP
       2015-10-02 13:43:20 +08:00
    现在就超级好奇,微林是怎么实现 tcp + udp 的转发的,用下来效果真的很好, socat + 阿里云就是不行
    ylqhust
        12
    ylqhust  
       2015-10-02 13:50:18 +08:00
    找文档看看
    ferock
        13
    ferock  
    OP
       2015-10-02 13:54:41 +08:00
    @aalska 这个我试试
    czb
        14
    czb  
       2015-10-02 14:00:26 +08:00 via Android
    很多本地运营商对 UDP 发包限制很严格的,先看看是不是 ISP 的问题
    shutongxinq
        15
    shutongxinq  
       2015-10-02 14:02:54 +08:00
    tcp over tcp 真的好吗? vpn 很少用 tcp 是有原因的,效率低得多啊。
    ferock
        16
    ferock  
    OP
       2015-10-02 14:07:30 +08:00
    @aalska 测试可行,很赞!
    ferock
        17
    ferock  
    OP
       2015-10-02 14:07:40 +08:00
    @czb 我认为可能你说的是对的
    aalska
        18
    aalska  
       2015-10-02 14:20:51 +08:00
    @ferock 运营商对很多 UDP 连接有控制的
    yexm0
        19
    yexm0  
       2015-10-02 14:30:25 +08:00 via Android
    @shutongxinq 你应该要考虑运营商的影响。
    dreamtrail
        20
    dreamtrail  
       2015-10-02 14:54:43 +08:00
    那就转发 openvpn 算了
    ferock
        21
    ferock  
    OP
       2015-10-02 15:06:10 +08:00 via iPhone
    试过了, ios 8.4 可以, ios 9 不可以, socat !

    但是微林可以。
    这是为什么啊!
    shutongxinq
        22
    shutongxinq  
       2015-10-02 15:31:53 +08:00
    @yexm0 感谢告知。
    dreamtrail
        23
    dreamtrail  
       2015-10-02 16:38:43 +08:00   ❤️ 1
    阿里云用 iptables 做 udp 转发,我测试过是可以用的
    facat
        24
    facat  
       2015-10-02 16:56:57 +08:00 via Android
    为什么不自己写一个转发的程序?如果有编程基础的话不难吧?
    ferock
        25
    ferock  
    OP
       2015-10-02 17:13:14 +08:00 via Android
    @dreamtrail 求具体的配置,我配置完以后测试防火墙没有拦截其他的端口
    XiaoxiaoPu
        26
    XiaoxiaoPu  
       2015-10-02 17:48:44 +08:00 via Android
    @ferock ip forward 打开了吗? sudo iptables-save 看一下现有的防火墙
    bazingaterry
        27
    bazingaterry  
       2015-10-02 17:55:03 +08:00
    iptables 就可以完成 udp 转发
    lins05
        28
    lins05  
       2015-10-02 18:35:53 +08:00
    ```
    server_ip=YOUR-SERVR-IP
    iptables -t nat -A PREROUTING -p udp --dport 443 -j DNAT --to-destination $server_ip:443
    iptables -t nat -A POSTROUTING -p udp -d $server_ip --dport 443 -j MASQUERADE
    service iptables-persistent save
    ```
    jiongjionger
        29
    jiongjionger  
       2015-10-02 19:45:20 +08:00
    UDP 转发需要看 ISP 和机房的脸色,出于防御 DDOS 和安全以及和谐的考虑,多多少少都有限制。
    alect
        30
    alect  
       2015-10-04 00:01:12 +08:00
    假设阿里云为 8.8.8.8 境外那台为 4.4.4.4
    假设阿里云 TCP 端口为 4443 , UDP 端口为 4000 ,境外服务器 tcp443 , udp8000
    我按照这个可以正常转发 Anyconnect 也是用的阿里云

    iptables -t nat -A PREROUTING -p tcp --dport 4443 -j DNAT --to-destination 4.4.4.4:443
    iptables -t nat -A PREROUTING -p udp --dport 4000 -j DNAT --to-destination 4.4.4.4:8000
    iptables -t nat -A POSTROUTING -p tcp -d 4.4.4.4--dport 443 -j SNAT --to-source 8.8.8.8
    iptables -t nat -A POSTROUTING -p udp -d 4.4.4.4--dport 8000 -j SNAT --to-source 8.8.8.8
    ferock
        31
    ferock  
    OP
       2015-10-04 19:41:01 +08:00
    @alect 根据你这个我再试试
    ferock
        32
    ferock  
    OP
       2015-10-04 19:44:30 +08:00
    @alect tcp 和 udp 能设置成一个端口么?比如 443
    alect
        33
    alect  
       2015-10-04 22:00:51 +08:00
    @ferock 可以啊, udp 和 tcp 是独立的,可以同时设置为 443
    dingzi
        34
    dingzi  
       2015-12-24 19:30:02 +08:00
    @alect 我就是按照你的设置了 但是没有成功
    iptables -t nat -A PREROUTING -p tcp --dport 1000 -j DNAT --to-destination 153.92.41.**:1000
    iptables -t nat -A PREROUTING -p udp --dport 1000 -j DNAT --to-destination 153.92.41.**:1000
    iptables -t nat -A POSTROUTING -p tcp -d 153.92.41.** --dport 1000 -j SNAT --to-source 47.89.24.**
    iptables -t nat -A POSTROUTING -p udp -d 153.92.41.** --dport 1000 -j SNAT --to-source
    yoshikiliu
        35
    yoshikiliu  
       2016-04-01 11:35:53 +08:00
    我也遇到同样的问题,请问现在你是怎么解决的?
    ferock
        36
    ferock  
    OP
       2016-04-01 15:17:17 +08:00
    @yoshikiliu 是阿里云么?如果是, iptables 规则正确就可以做到
    yoshikiliu
        37
    yoshikiliu  
       2016-04-01 19:05:54 +08:00
    @ferock 不是 其他的 输入了不行
    IgniteWhite
        38
    IgniteWhite  
       2016-12-03 00:54:33 +08:00 via iPad
    @gzlock 我也在玩 robocraft 哈哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3305 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:45 · PVG 20:45 · LAX 04:45 · JFK 07:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.