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

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

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

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

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

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

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

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

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

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

    但是微林可以。
    这是为什么啊!
        22
    shutongxinq   2015-10-02 15:31:53 +08:00
    @yexm0 感谢告知。
        23
    dreamtrail   2015-10-02 16:38:43 +08:00   ♥ 1
    阿里云用 iptables 做 udp 转发,我测试过是可以用的
        24
    facat   2015-10-02 16:56:57 +08:00 via Android
    为什么不自己写一个转发的程序?如果有编程基础的话不难吧?
        25
    ferock   2015-10-02 17:13:14 +08:00 via Android
    @dreamtrail 求具体的配置,我配置完以后测试防火墙没有拦截其他的端口
        26
    XiaoxiaoPu   2015-10-02 17:48:44 +08:00 via Android
    @ferock ip forward 打开了吗? sudo iptables-save 看一下现有的防火墙
        27
    bazingaterry   2015-10-02 17:55:03 +08:00
    iptables 就可以完成 udp 转发
        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
    ```
        29
    jiongjionger   2015-10-02 19:45:20 +08:00
    UDP 转发需要看 ISP 和机房的脸色,出于防御 DDOS 和安全以及和谐的考虑,多多少少都有限制。
        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
        31
    ferock   2015-10-04 19:41:01 +08:00
    @alect 根据你这个我再试试
        32
    ferock   2015-10-04 19:44:30 +08:00
    @alect tcp 和 udp 能设置成一个端口么?比如 443
        33
    alect   2015-10-04 22:00:51 +08:00
    @ferock 可以啊, udp 和 tcp 是独立的,可以同时设置为 443
        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
        35
    yoshikiliu   2016-04-01 11:35:53 +08:00
    我也遇到同样的问题,请问现在你是怎么解决的?
        36
    ferock   2016-04-01 15:17:17 +08:00
    @yoshikiliu 是阿里云么?如果是, iptables 规则正确就可以做到
        37
    yoshikiliu   2016-04-01 19:05:54 +08:00
    @ferock 不是 其他的 输入了不行
        38
    IgniteWhite   2016-12-03 00:54:33 +08:00 via iPad
    @gzlock 我也在玩 robocraft 哈哈哈
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2814 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 03:48 · PVG 11:48 · LAX 20:48 · JFK 23:48
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1