为OpenVZ VPS添加HE IPv6 tunnel

 Nov. 10, 2011, 11:20 p.m.   48 comments    IPv6 HE Tunnel vps

身为校园网用户,由于学校的公网出口带宽很少,纵有教育网千兆带宽,访问国外网站速度依然慢得难以忍受。但是,在教育网使用IPv6速度却还算不错,以至于很多时候不得不通过IPv6绕道访问国外网站。当初选择BURST.NET的VPS,一方面是因为便宜,另一方面也是因为它提供原生的IPv6支持,在教育网访问速度较快。

但是就在几个月前,BURST.NET的VPS上的IPv6线路全部出了问题,SSH完全无法连接,Ping测试也丢包率100%。发了ticket给了BURST.NET的客服,但是过了很久也没有给予解决,也许是因为IPv6的用户实在太少吧。当时在这种情况下,其实想着要换一家VPS商的,但是一时半会儿找不到这么便宜的,而且BURST.NET的IPv4访问速度看起来也还不错,就一直没有换。

过了这么久,BURST.NET的IPv6线路一直没有恢复正常,只好想想办法自己动手解决了。IPv6 tunnel本来是为了给没有原生IPv6支持的服务器提供IPv6访问的解决方案,鉴于我的VPS的IPv6线路基本处于瘫痪的状态,干脆通过IPv6 tunnel给它提供IPv6支持吧。

首先,需要到http://tunnelbroker.net/上申请免费的HE IPv6 Tunnel Broker,注册登录后,点击Create Regular Tunnel

IPv4 Endpoint中填入VPS的IPv4地址,然后在下面的Available Tunnel Servers选择服务器,可以根据自己VPS的地理位置,选择速度相对较快的服务器。

我本应该选择Los Angeles, CA, US的,但是提示Not Available (Full),只好选择旁边的Fremont, CA, US,然后点击Create Tunnel创建Tunnel

一般来说,成功创建Tunnel后只要按照网站上提供的Example Configurations就可以配置成功了,但是由于我的VPS不支持通过modprobe载入IPv6模块,只好放弃这么做而改用tb-tun

先检查tun/tap设备是否已经打开,可以通过命令cat /dev/net/tun检测,如果返回File descriptor in bad state,则说明tun/tap设备已经打开,否则需要给客服发ticket开启。

下载tb-tun

wget http://tb-tun.googlecode.com/files/tb-tun_r18.tar.gz

tar xvf tb-tun_r18.tar.gz

编译tb-tun

gcc tb_userspace.c -l pthread -o tb_userspace

假设VPS的Client IPv4 Address为1.2.3.4,而HE提供的Server IPv4 Address为5.6.7.8,且HE提供的Client IPv6 Address为2001:a:b:c::2/64,则只需如下设置

setsid ./tb_userspace tb 5.6.7.8 1.2.3.4 sit
ifconfig tb up
ifconfig tb inet6 add 2001:a:b:c::2/64
ifconfig tb mtu 1480
route -A inet6 add ::/0 dev tb

即可创建IPv6 Tunnel


mrma

mrma March 13, 2014, 9 p.m. Reply

请问为什么 我执行setsid ./tb_userspace tb 5.6.7.8 1.2.3.4 sit 这个后就 卡了好久好久好久 一直进行不完呢

Chon

Chon March 13, 2014, 9:01 p.m. Reply

这个没关系的,敲一下回车键就好了


mrma

mrma March 13, 2014, 9:03 p.m. Reply

但是执行全部执行完之后 ping6 he.net还是没反应

Chon

Chon March 13, 2014, 9:05 p.m. Reply

先检查一下tb_userspace这个进程有没有在运行,然后再用ip -6 route看一下路由表是否配置正确。


mrma

mrma March 14, 2014, 12:49 a.m. Reply

请问怎么删啊 我太菜了 把vps删的登陆不了了

Chon

Chon March 14, 2014, 11:47 p.m. Reply

不会是把IPv4的默认路由删了吧?得用ip -6 del default dev venet0


mrma

mrma March 15, 2014, 7:29 p.m. Reply

这个弄好了
用的ip -6 route del default dev venet0

但是我的vpn还是连接不上 下面的能看出是什么错误吗? 谢谢了
Connection reset by peer (WSAECONNRESET) (code=10054)
Sat Mar 15 19:11:10 2014 OpenVPN 2.3.0 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [eurephia] [IPv6] built on Jan 8 2013
Sat Mar 15 19:11:11 2014 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Sat Mar 15 19:11:11 2014 UDPv6 link local (bound): [undef]
Sat Mar 15 19:11:11 2014 UDPv6 link remote: [AF_INET6]2001:470:1c:b62::2:9999
Sat Mar 15 19:11:11 2014 read UDPv6: Connection reset by peer (WSAECONNRESET) (code=10054)
Sat Mar 15 19:11:13 2014 read UDPv6: Connection reset by peer (WSAECONNRESET) (code=10054)
Sat Mar 15 19:11:18 2014 read UDPv6: Connection reset by peer (WSAECONNRESET) (code=10054)
Sat Mar 15 19:11:26 2014 read UDPv6: Connection reset by peer (WSAECONNRESET) (code=10054)
Sat Mar 15 19:11:42 2014 read UDPv6: Connection reset by peer (WSAECONNRESET) (code=10054)

Chon

Chon March 15, 2014, 7:31 p.m. Reply

用TCP连接试试看

Yanyue

Yanyue Aug. 21, 2014, 4:38 p.m. Reply

请问您最终怎么解决这个问题的?用TCP么?


mrma

mrma March 15, 2014, 7:50 p.m. Reply

ipv6地址的翻墙
我试了tcp6 不好使

Chon

Chon March 15, 2014, 7:51 p.m. Reply

 没明白什么意思


mrma

mrma March 16, 2014, 8:22 p.m. Reply

谢谢了 好像是我的vps出了什么问题,还能问两个问题吗?
1、域名怎么绑定ipv6地址啊,用he.net的DNS服务器可以吗?我用的它,但是绑定后ipv6下没法访问,网站设置好ipv6地址后,在ipv6中是不是会自动用ipv6地址访问,在ipv4中会自动用ipv4的吗?
2、校园网的ipv6,手机能设置什么代理来直接连接ipv4网站吗?
要是有相关资料希望能推荐一下,感激不尽

Chon

Chon March 16, 2014, 11:29 p.m. Reply

1. 如果你说的是网站无法访问,可能是需要调整web服务器的IPv6配置,Google一下"apache/nginx ipv6"或者类似的关键词
2. 如果使用Android,据我了解,Shadowsocks for Android是支持IPv6的


mrma

mrma March 17, 2014, 10:08 p.m. Reply

谢谢 你真是个好人 再问最后一个问题啊? pptp的vpn,ipv4网络下可以用了,怎么才能在ipv6下用啊,网上找到的方法都不适用

Chon

Chon March 18, 2014, 12:17 a.m. Reply

我也没找到使用IPv6 PPTP VPN的办法


Linxs

Linxs March 22, 2014, 2:42 p.m. Reply

你好,
请问一下我这里配置是否正确,我按照你所说的指令输了一遍,就是现在这样了,谢谢。
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tb Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: 2001:470:c:f0c::2/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1480 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:624 (624.0 b) TX bytes:624 (624.0 b)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: 2600:4402:c002:6::19c0:b3c2/128 Scope:Global
inet6 addr: 2600:4402:c002:6::90b3:5879/128 Scope:Global
inet6 addr: 2600:4402:c002:6::21d1:9d4b/128 Scope:Global
inet6 addr: 2600:4402:c002:6::5724:6a1c/128 Scope:Global
inet6 addr: 2600:4402:c002:6::d91d:a9b5/128 Scope:Global
inet6 addr: 2600:4402:c002:6::fac9:4e2f/128 Scope:Global
inet6 addr: 2600:4402:c002:6::f15b:fe18/128 Scope:Global
inet6 addr: 2600:4402:c002:6::8d5d:6af7/128 Scope:Global
inet6 addr: 2600:4402:c002:6::c701:6720/128 Scope:Global
inet6 addr: 2600:4402:c002:6::e7d2:bd4d/128 Scope:Global
inet6 addr: 2600:4402:c002:6::cb98:b1bd/128 Scope:Global
inet6 addr: 2600:4402:c002:6::12b2:f3e3/128 Scope:Global
inet6 addr: 2600:4402:c002:6::ae82:c78/128 Scope:Global
inet6 addr: 2600:4402:c002:6::89dc:1b8c/128 Scope:Global
inet6 addr: 2600:4402:c002:6::5f48:a6eb/128 Scope:Global
inet6 addr: 2600:4402:c002:6::9170:cfde/128 Scope:Global
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:42087 errors:0 dropped:0 overruns:0 frame:0
TX packets:29978 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:49057359 (46.7 MiB) TX bytes:2764719 (2.6 MiB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:67.207.208.140 P-t-P:67.207.208.140 Bcast:67.207.208.140 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

Chon

Chon March 22, 2014, 2:59 p.m. Reply

应该是没有问题的,不过,你这个本来就有IPv6地址?


LInxs

LInxs March 22, 2014, 8:19 p.m. Reply

请问
第四步中
tun_create: Permission denied
这是为什么?

Chon

Chon March 22, 2014, 11:34 p.m. Reply

很明显是权限不够

Linxs

Linxs March 22, 2014, 11:49 p.m. Reply

那个一开始我也是这么以为的
可我本身就是用root登陆
然后还尝试了sudo
都不行,正打算重装ing


Linxs

Linxs March 22, 2014, 11:56 p.m. Reply

不知为什么现在又可以了
汗汗,麻烦了


LInxs

LInxs March 23, 2014, 9:10 p.m. Reply

想问一下,按照你的这种方法建立的的通道也可像其他教程说的一样改conf的server的listen吗来实现v6的虚拟机访问?
还是说只能是nginx载入ipv6模块后才能通过该conf来实现ipv6的访问?
谢谢

Chon

Chon March 23, 2014, 11:21 p.m. Reply

nginx配置文件里设置好监听IPv6地址就行,前提是nginx编译了IPv6模块。


Linxs

Linxs March 23, 2014, 11:43 p.m. Reply

谢谢啦>_<


Linxs

Linxs March 24, 2014, 12:44 a.m. Reply

谢谢啦>_<


Linxs

Linxs March 24, 2014, 12:56 a.m. Reply

以为快要弄好了,现在真不知道问题出那了
首先安装你的方法配置好了tb
这是我的ifconfig

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1456 (1.4 KiB) TX bytes:1456 (1.4 KiB)

tb Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: 2001:470:c:f0c::2/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1480 Metric:1
RX packets:122 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:9436 (9.2 KiB) TX bytes:624 (624.0 b)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: 2600:4402:c002:6::19c0:b3c2/128 Scope:Global
inet6 addr: 2600:4402:c002:6::90b3:5879/128 Scope:Global
inet6 addr: 2600:4402:c002:6::21d1:9d4b/128 Scope:Global
inet6 addr: 2600:4402:c002:6::5724:6a1c/128 Scope:Global
inet6 addr: 2600:4402:c002:6::d91d:a9b5/128 Scope:Global
inet6 addr: 2600:4402:c002:6::fac9:4e2f/128 Scope:Global
inet6 addr: 2600:4402:c002:6::f15b:fe18/128 Scope:Global
inet6 addr: 2600:4402:c002:6::8d5d:6af7/128 Scope:Global
inet6 addr: 2600:4402:c002:6::c701:6720/128 Scope:Global
inet6 addr: 2600:4402:c002:6::e7d2:bd4d/128 Scope:Global
inet6 addr: 2600:4402:c002:6::cb98:b1bd/128 Scope:Global
inet6 addr: 2600:4402:c002:6::12b2:f3e3/128 Scope:Global
inet6 addr: 2600:4402:c002:6::ae82:c78/128 Scope:Global
inet6 addr: 2600:4402:c002:6::89dc:1b8c/128 Scope:Global
inet6 addr: 2600:4402:c002:6::5f48:a6eb/128 Scope:Global
inet6 addr: 2600:4402:c002:6::9170:cfde/128 Scope:Global
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:44543 errors:0 dropped:0 overruns:0 frame:0
TX packets:32509 errors:0 dropped:264 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:50168595 (47.8 MiB) TX bytes:3728365 (3.5 MiB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:67.207.208.140 P-t-P:67.207.208.140 Bcast:67.207.208.140 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

然后就配置好了ipv6模块
这是我的nginx -V
nginx version: nginx/1.4.6
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)
TLS SNI support disabled
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_uwsgi_module --without-http_scgi_module --with-ipv6

然后又配置好了
ngin.conf
如下
user www www;
worker_processes auto;
error_log /home/wwwroot/index/log/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
{
use epoll;
worker_connections 51200;
}

http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 4k;
large_client_header_buffers 4 4k;
client_max_body_size 50m;

sendfile on;
tcp_nopush on;

keepalive_timeout 60 60;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 16k;
fastcgi_buffers 16 16k;
fastcgi_busy_buffers_size 16k;
fastcgi_temp_file_write_size 16k;
fastcgi_intercept_errors on;

tcp_nodelay on;
server_tokens off;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/rss+xml application/xhtml+xml application/atom_xml;
gzip_disable "MSIE [1-6].(?!.*SV1)";
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';

include vhost/*.conf;
server
{
listen 8888;
server_name 67.207.208.140;
index index.html index.htm index.php;
root /home/wwwroot/index/web;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 4k;
gzip off;

location ~ .*\.php$
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log /home/wwwroot/index/log/access.log combined;
error_log /home/wwwroot/index/log/error.log crit;
}

server
{
listen 80;
listen [::]:80;
}
}

再然后配置了vhost的xs.conf
如下server
{
listen 80;
listen [::]:80;
server_name lovelixs.pw ipv6.lovelixs.pw ipv62.lovelixs.pw; #server_name end
index index.html index.htm index.php; #index end

set $subdomain '';
root /home/wwwroot/xs/web$subdomain;
include rewrite/amh.conf; #rewrite end

#error_page
error_page 400 /ErrorPages/400.html;
error_page 403 /ErrorPages/403.html;
error_page 404 /ErrorPages/404.html;
error_page 502 /ErrorPages/502.html;
location ~ /ErrorPages/(400|401|403|404|405|502|503)\.html$
{
root /home/wwwroot/xs/web;
}

location ~ .*\.php$
{
fastcgi_pass unix:/tmp/php-cgi-xs.sock;
fastcgi_index index.php;
include fcgi-host.conf;
fastcgi_param DOCUMENT_ROOT /web$subdomain;
fastcgi_param SCRIPT_FILENAME /web$subdomain$fastcgi_script_name;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
{
expires 30d;
}

location ~ .*\.(js|css)$
{
expires 12h;
}

access_log off; #access_log end
error_log /dev/null; #error_log end
}

然后的
/usr/local/nginx/sbin/nginx -t success
于是
killall nginx
/usr/local/nginx/sbin/nginx都成功

我ipv6绑定了ipv6.lovelixs.pw(he.net)
现在问题就是我能ping6 到它,然后绑定的ipv4 lovelixs.pw能进入,可是在ipv6环境中ipv6还是进不去,晕了,求解救。。

Chon

Chon March 24, 2014, 11:06 a.m. Reply

我现在ping不通ipv6.lovelixs.pw,暂时还不能确定是什么原因。


linxs

linxs March 24, 2014, 5:05 p.m. Reply

什么乱七八糟的,自己都不知道怎么回事好像弄好了==
好人一生平安。。。


LInxs

LInxs March 24, 2014, 5:25 p.m. Reply

我发现了,ping时通时不通,网站时能进时不能进,我无语了。
好伤心,不知道怎么回事,还是帮我看看吧那个>_<

Chon

Chon March 24, 2014, 5:39 p.m. Reply

不通的时候用traceroute检查一下,看看是哪里的问题。


linxs

linxs March 24, 2014, 5:39 p.m. Reply

有一点很奇怪,我明明绑定的ipv4于lovelixs.pw
可是ping后会返回两种情况,
一种是正在 Ping lovelixs.pw [2001:250:208:4000:2000:8:43cf:d08c]
第一次没ping出来,第二次却ping出来了
第二中ping lovelixs.pw 出现的就死ipv4的地址


wzan

wzan June 27, 2014, 10:26 p.m. Reply

问个问题 怎么把
setsid ./tb_userspace tb 5.6.7.8 1.2.3.4 sit
ifconfig tb up
ifconfig tb inet6 add 2001:a:b:c::2/64
ifconfig tb mtu 1480
route -A inet6 add ::/0 dev tb
ip -6 route del default dev venet0
用脚本加入到debian启动项?? 我试着直接复制到rc.local 启动后没反应 一条一条运行又会正常

Chon

Chon June 27, 2014, 11:12 p.m. Reply

第一个建议不要用setsid,改为在命令后面加&。

wzan

wzan June 28, 2014, 8:03 a.m. Reply

谢谢回复!!可以自动运行了

basin

basin Feb. 5, 2015, 2:54 p.m. Reply

你好,请问 rc.local 里setsid那条怎么写?
新手请赐教

Chon

Chon Feb. 5, 2015, 3:24 p.m. Reply

/path/to/tb/tb_userspace tb 5.6.7.8 1.2.3.4 sit &

basin

basin Feb. 5, 2015, 4:03 p.m. Reply

谢谢,搬瓦工centos6开机自动加载ipv6测试成功!


Lovaulonze

Lovaulonze July 12, 2014, 11:32 p.m. Reply

看了你的文章我觉得和我的VPS狀况很像 也是modprobe ipv6不行
但是每次ifconfig tb up的时候都显示no such device 究竟是VPS的限制呢还是其他原因呢 非常希望能够解答~


Lovaulonze

Lovaulonze July 12, 2014, 11:38 p.m. Reply

看了你的文章我觉得和我的VPS狀况很像 也是modprobe ipv6不行
但是每次ifconfig tb up的时候都显示no such device 究竟是VPS的限制呢还是其他原因呢 非常希望能够解答~

Chon

Chon July 13, 2014, 12:24 a.m. Reply

openvz限制了用户加载内核模块,所以只能使用上述tb-tun创建隧道。

Lovaulonze

Lovaulonze July 13, 2014, 12:30 a.m. Reply

VPS上tun开启了的
但是ifconfig tb up 这一句的时候总是no such device错误。。。
/etc/network/interfaces 修改也木有用 这个有解吗?

Lovaulonze

Lovaulonze July 13, 2014, 12:38 a.m. Reply

VPS上tun开启了的
但是ifconfig tb up 这一句的时候总是no such device错误。。。
/etc/network/interfaces 修改也木有用 这个有解吗?

Chon

Chon July 13, 2014, 2:09 a.m. Reply

我是问有没有启动tb-tun

Lovaulonze

Lovaulonze July 13, 2014, 8:29 a.m. Reply

明白原因了 之前编译的tb-tun 是r14, 和r18的参数不一样 怪不得建立不起来tunnel
PS 之前就看过你的一篇换nexus4屏幕的文章 没想到现在又帮到了 真是缘分呐


Yanyue

Yanyue Aug. 21, 2014, 9:21 a.m. Reply

您好,很抱歉打扰您,我也有个vps,原来提供ipv6地址的,后来商家不提供了。。。我在教育网内,想通过ipv6来上网,毕竟不是所有的学校都像贵邮一样网络免费的(虽然今年开始也收费了==)。
我在按照您的方法的过程中出现了如下问题:
[root@8 ~]# TUN name is tb
IPv4 SOCK_RAW created: 4
bind local address: Cannot assign requested address

[root@8 ~]# ifconfig tb up
tb: unknown interface: No such device
请问您能否告知该怎么办?
贵邮多人才,谢谢啦~

Yanyue

Yanyue Aug. 21, 2014, 9:33 a.m. Reply

啊啊啊,我找到错误了,我把client 和Server ip弄反了。谢谢~~


Arnie97

Arnie97 Aug. 23, 2014, 11:35 p.m. Reply

奇怪,我遇到了和楼上Yanyue一样的情况:
bind local address: Cannot assign requested address
但是我的IP地址顺序没问题啊
求问博主有没有什么建议…


seo2url

seo2url Dec. 12, 2015, 8:58 a.m. Reply

Deeply feel the harshness when dealing with internet streams.
However for those interesting in self broadcasting, there could be no easier way of streaming your mp3 library other than using the standalone mp3 streamer from djicy
http://djicy.com/
... yeah it comes with a price but it is worth it because that one does not require any external dependencies like the classical solutions