转载: http://shadowsocks.info/shadowsocks-udp/

VPS购买地址

udp是什么:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

shadowsocks-android 的 DNS (UDP) 转发功能

从 2.1.2 开始,shadowsocks-android 开始支持透明的 DNS (UDP) 转发功能。这项功能包括两个部分:
1. NAT(ROOT)模式下,仅支持转发 DNS 的 UDP 数据包。
2. VPN 模式下,支持转发所有的 UDP 数据包。
限制:
1. 当前只有 1.4 以上的 libev 或 nodejs 实现的服务器端才支持此项功能。
2. libev 服务器端还需要在命令行中加上 -u 的参数。
3. 此项功能默认关闭,依然由 pdnsd 负责转发 TCP 的 DNS 查询。

网友提出的几个问题:

问题一:shadowsocks-libev 默认启用了 udp relay 吗?

请问udp relay功能是否有必要打开?我看shadowsocks-android是有这个选项支持该功能的,但shadowsocks-qt5貌似不支持。
另外,config.json里面是不是不支持写明是否需要打开udp relay,而必须要ss-server -c /etc/shadowsocks/config.json -u这么写吗?

debian下文件在/etc/init.d/shadowsocks-libev,找到
start-stop-daemon –start –quiet –pidfile $PIDFILE –chuid $USER:$GROUP –exec $DAEMON — \
-c “$CONFFILE” -a “$USER” -u -f $PIDFILE $DAEMON_ARGS \
发现已经默认加上-u参数,1.6.1版测试结果

问题二:shadowsocks android vpn 模式要避免 dns 污染要打开 UDP 转发吗?

国内ps4联机很蛋疼,于是在路由器里搞了一个支持shadowsocks的固件,作者说支持udprelay,会转发udp数据包。
于是我就在我的服务器里开通了一个支持udprelay的ss账号,用的是最新版的ss-libev,启动参数中加了-u,应该没错。
实测ps4也可以打开youtube,但是ps4网络测试结果为nat类型失败。
我不确定是路由器固件作者的问题还是ss-libev的udprelay功能有bug,所以我需要一个可以很好支持udprelay的ss账号,进行测试。

问题三:shadowsocks 现在能不能代理游戏,我看说支持 UDP 了

对代理游戏有一定需求(MAC版的美服 BATTLE.NET),现在SS能不能直接全局代理游戏,搜索了下貌似之前的一个版本就添加了对UDP的支持且默认开启,是不是意思是开了全局模式就默认代理UDP/TCP了?

问题四:不确定 SS 服务器端是否支持 UDP 转发,有办法测试么?

买了个套装服务,内含SS,找了个703N的路由器刷了openwrt官方镜像开始一步一步安装shadowsocks-libev版,我的想法是用这个703N做全局翻,所以DNS解析也用udp转发到8.8.4.4:53,但测了半天不好用,才想起对面的SS服务器端未必开了这个功能,现在我如何确定服务器端是否打开了UDP转发?
或者UDP转发这个功能压根和服务器端没关系?

ss-tunnel.exe -c config.json -l 53 -L 8.8.8.8:53 -u
nslookup www.youtube.com 127.0.0.1
如有返回结果则开启了udp转发

/etc/init.d/shadowsocks 这个脚本里本身已经设置了 -u ,不是这样执行的。如果你要手动加 -u, 则是 ss-server -c /etc/shadowsocks/config.json -u

ss与udp转发的释疑的更多相关文章

  1. 使用Nginx转发TCP/UDP数据

    编译安装Nginx 从1.9.0开始,nginx就支持对TCP的转发,而到了1.9.13时,UDP转发也支持了.提供此功能的模块为ngx_stream_core.不过Nginx默认没有开启此模块,所以 ...

  2. JAVA NIO udp 实现 群转发

    场景很简单,就是多个客户端通过udp,连接到服务器(其实是无连接的,就是服务器保存了客户端的ip信息).然后通过udp协议先服务器发送消息,然后服务器在通过udp转发在各个客服端. 这个是不是 观察者 ...

  3. [转帖]使用Nginx转发TCP/UDP数据

    使用Nginx转发TCP/UDP数据 https://www.cnblogs.com/guigujun/p/8075620.html 编译安装Nginx 从1.9.0开始,nginx就支持对TCP的转 ...

  4. 在树莓派上使用ss和iptables实现fq功能

    VPS购买地址 以下所有叙述均来自互联网上已有文章, 本人只做收集和整理工作. 写在前面的话: 一直想把家里的树梅派做成一个fq路由器, 期间也看过很多GitHub上的开源项目: Redsock, C ...

  5. 转一个集成速锐的ss 回头试试 补充加速一、Vultr安装锐速

    https://liyuans.com/archives/ssr-serverspeeder-onekey.html Debian/Ubuntu 系统 ShadowsocksR 一键安装脚本 (集成锐 ...

  6. ss-libev 源码解析udp篇 (4)

    本篇分析remote_recv_cb,这是整个udp转发的反方向,即读取从后端发送过来的数据再发送给前端.对于ss-server,读取到的数据是目标地址的udp服务器发送回来的响应数据,ss-serv ...

  7. ss-libev 源码解析udp篇 (3)

    本篇分析server_recv_cb,这个是udp转发中最重要的函数. server_recv_cb: 当ss-local或ss-server接收到来自前端的udp数据包时调用.这个函数代码比较多,除 ...

  8. SS配置,Brook是什么?,Brook如何配置(Android篇)

    很长时间没有更新了,今天给大家分享一下什么是Brook,和SS有什么区别?写的不好,请勿见外,大佬绕过. Brook简单介绍 Brook 是一个高效的 Socks5 代理软件,官方支持Windows. ...

  9. python之udp协议的套接字

    udp是无链接的,先启动哪一端都不会报错 udp服务端 1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 ...

随机推荐

  1. loopback 05

    数据并发处理 数据库事务 事务隔离 ACID性质 原子性(Atomicity): 要么全部被执行,要么都不执行; 一致性(Consistency): 满足完整性约束; 隔离性(Isolation): ...

  2. Swift3.0语言教程查找字符集和子字符串

    Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...

  3. jQuery-认识JQuery,jQuery选择器

    认识JQuery: 1.window.onload与$(document).ready()的区别 window.onload $(document).ready() 执行时机 必须等待网页中的所有内容 ...

  4. 我的c++学习(2)比较两个数字大小

    #include "stdafx.h" #include<iostream> using namespace std; int max(int i, int j){ / ...

  5. oracle sql别名

    为sql的字段起一个别名,常以为是可有可无的,但是有时候是必要的. 例如在ibatis中 <!-- 获取已发或待发送的彩信记录列表 --> <resultMap id="m ...

  6. NUC_HomeWork1 -- POJ1088(DP)

    D - 滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Mic ...

  7. java中的IO操作总结

    一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnect ...

  8. javascript 返回字符长度,中文为两个字节,英文为一个字节

    //正则:用于区分中文为两个字节function getLength(str){    return String(str).replace(/[^\x00-\xff]/g,'aa').length; ...

  9. ACM +-字符串

    +-字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换. ...

  10. HDU-Minimum Inversion Number(最小逆序数)

    Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...