ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/fIr1ax ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net v.gd/4A2G5b v.gd/VBg0IE v.gd/kVkm7n v.gd/jCKP1G linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com v.gd/2P9wTx v.gd/FtfpqE v.gd/eMfHsm v.gd/Ub7mqv v.gd/RReVk0 v.gd/vS3uTI v.gd/4Zxmba v.gd/1BnFph
Pages
Monday, 31 August 2020
两个古稀老头的搏命:美国大选前瞻
美国面临的中国难题
并不是说所有民主党人都是亲华派,所有共和党人都是反华派。实际上,今年7月皮尤研究中心的一项研究表明,大多数共和党人(83%)和民主党人(68%)都对中国持负面看法。但是,在如何应对中国的问题上,两边的想法却大相径庭。
概述习近平领导下的中国威胁
新疆已成为世界上压迫程度最高的警察极权地区,很大一部分原因是中共认为伊斯兰教是对其统治稳定的威胁(我明白新疆曾经发生过恐怖袭击,例如2009年乌鲁木齐的“ 七五事件”夺走了近200人的生命。但是,以预防尚未发生的犯罪为名将上百万的民众关押起来,只会使该地区的局势更加极端化。香港在中共公然违反《中英联合声明》后,已经从亚洲最自由的城市之一变为最不自由的城市之一。学生们因和平抗议而被捕,人们行使言论自由权已经感到不再安全。台湾拥有自己的护照、货币、军队,最重要的是拥有自己的民主选举,可以说在任何层面上它都是一个独立的国家。尽管如此,中共还是试图说服全世界台湾是中华人民共和国的一部分。最近,中共及其宣传机构几乎每天都在威胁,如果台湾继续追求独立,就要武力入侵台湾。
When it comes down to it, the thorniest privacy dispute of 2020 isn’t about privacy or technology at all — it’s about China. The question “Is Facebook better, worse, or the same as TikTok?” is more or less the same as “Is the United States better, worse, or the same as China?” And in 2020, this is becoming a genuinely difficult question to answer.本质上来说,2020年的用户隐私争议根本不是关于隐私或者技术,而是关于中国这个国家。 “ Facebook是比TikTok更好还是更坏,还是说它们是一丘之貉?”这个问题,就像是在问“美国是比中国更好还是更坏,还是说它们是一丘之貉?”一样。在当下的2020年,我们对这个问题真心很难作出回答。
你对中国的真实生活状况真的一无所知。在中国,目前还有多达6亿人的每月生活费低于150美元(这很大程度上也跟中共政府推行户口政策限制人口流动有关)你明显并不了解,在中国,任何为社会不公发声或批评政府的人都会面临牢狱之灾甚至失踪(而在美国,Sarah 可以不经分析写出一篇批评美国政府的文章,根本不用担心会失踪或被起诉。这不是正好回答她关于“哪个国家人文待遇更好”的问题吗?)显然你丝毫没有考虑过,如果一个政府把上百万的本国公民仅仅因为宗教信仰不同就关进类似集中营的设施,这种做法有多么违背道德。
SSR Helper CLI
A CLI helper of ShadowsocksR Python.
一个命令行界面的ShadowsocksR助手工具 English Document is on the way.Plz be patient~
声明
- 本工具仅用于技术研讨,使用ShadowsocksR代理访问互联网时请您自觉遵守所在地的法律法规,文明上网,在本工具辅助下使用ShadowsocksR访问国际互联网所带来的问题与开发者无关
- 提问前请注意,本工具仅在Linux平台下测试通过,也仅Linux下的问题进行维护,如有其它平台下的需求,欢迎Fork/PR
特点
- 使用命令行控制ShadowosocksR Python版本的本地客户端Daemon
- 本地可维持了一个SSR服务器列表,并可从中选择服务器使用ShadowosocksR的Python本地客户端连接,且该列表基于分组和备注,易于管理
- 可通过友好的CLI或SSR URI手动添加服务器
- 在较新的Linux平台(Systemd)下支持开机自动启动服务
- 完善的SSR订阅功能支持
- 默认开启TCP FastOpen(Linux Kernel 3.7+)
- 测试延迟功能
安装
推荐通过 yarn 安装:
因上游相关 BUG,使用 yarn 安装可能出现
(1) does not exist
问题,暂时建议使用新版 npm 解决
yarn global add ssr-helper
也可通过传统的 npm:
npm install -g ssr-helper
依赖配置
本工具仅为 ShadowsocksR Python 的一个CLI,NPM包中并未包括该脚本,您需要自行下载,并在客户端内进行配置
您可以使用如ShadowosocksRR等新的分支版本,但基于稳定考虑仍推荐manyuser版本,可在Home目录下运行以下命令安装:
git clone -b manyuser https://github.com/shadowsocksr-backup/shadowsocksr.git
然后将Python Client的路径配置进来(如您的Python Client安装在/home/noah/shadowsocksr
):
ssr config /home/noah/shadowsocksr
命令行使用
现在您已经可以使用SSR Helper了,终端下运行 ssr
即可看到欢迎界面 以下仅对常用命令做以介绍,详细的命令列表可运行 ssr help
查阅
ssr config [path]
: 配置Python Client的路径,绝对路径ssr add
: 手动添加服务器,具备友好的界面ssr add [uri]
: 使用SSR URI手动添加服务器到列表ssr connect
: 选择服务器连接并设置为默认服务器,具备友好的界面ssr ls
: 显示服务器信息,具备友好的界面ssr rm
: 从列表删除服务器,具备友好的界面(注:删除后连接不会中断,需运行connect
命令重新连接)ssr edit
: 编辑服务器信息,具备友好的界面ssr local
: 编辑SSR本地服务信息,编辑后需要重新连接生效ssr start
: ShadowsocksR Python Client Daemon的 start 命令,启动连接,使用CLI配置的默认服务器ssr restart
: ShadowsocksR Python Client Daemon的 restart 命令,重新启动连接,使用CLI配置的默认服务器ssr stop
: ShadowsocksR Python Client Daemon的 stop 命令,停止服务,使用CLI配置的默认服务器ssr status
: 可查看 ShadowsocksR Python Client Daemon的 运行状态ssr startup
: 设置服务开机自启,仅在Systemd启动的Linux平台下有效ssr unstartup
: 关闭服务开机自启,仅在Systemd启动的Linux平台下有效ssr delay
: 测试服务器的延迟ssr-subscribe add [url]
: 添加新的SSR订阅地址ssr-subscribe ls
: 列出所有SSR订阅地址和他们的当前标号ssr-subscribe rm [label]
: 基于ssr-subscribe ls
打印的标号删除SSR订阅地址ssr-subscribe update
: 从已添加的SSR订阅地址获取服务器信息
NAT 和 iptables
NAT
网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术。 是网络层协议。
目前最常用的端口多路复用NAPT(Network Address/Port Translators)中的Cone NAT型(圆锥型)。
客户机(内网终端)访问公网服务时,其IP和端口会被映射为网关的一个端口,客户机所有访问外网的流量均通过此端口,同时,此端口收到的所有数据包都会返回到客户机。在网关时,两个不同session但端口号相同。
通常,家用网络终端通过家用路由器访问互联网就是通过NAT技术,家用路由器会被DHCP服务器分配一个临时的公网IP,用以访问公网;其它终端如手机、电脑和路由器组建一个私网,其中,路由器为网关(NAT服务器),终端设备访问外网服务时,其IP和端口会被映射为网关的一个端口。
NAT 和代理
iptables 的 nat 表, 可以设置 SNAT、DNAT、MASQUERADE。
SNAT 对源IP的转换
是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机
- 正向代理
DNAT 对目标IP的转换
就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B
- 反向代理
- 端口转发
MASQUERADE
是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用 MASQUERADE
- 网关
NAT 和 ip forward (IP 转发)
Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。
# 临时生效:
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效 修改sysctl.conf
net.ipv4.ip_forward = 1
年代向錢看 中國射飛彈到南海,美軍加速部署亞太軍力反制. 捷克參議院議長率團訪台,台歐關係深化
https://www.graphcore.ai/,https://www.graphcore.ai/about,graphcore公司是一家英国公司,它是美国的nvidia公司的竞争对手。
Sunday, 30 August 2020
socks5-proxy-by-yuanrenguang715真是好用极了
自从5月份写了此文https://briteming.blogspot.com/2020/05/socks5-proxy-by-yuanrenguang715.html ,我就一直在用socks5-proxy-by-yuanrenguang715翻墙。
什么flynet (https://briteming.blogspot.com/2019/10/flynet.html), iox (https://briteming.blogspot.com/2020/08/iox.html),bit-tunnel (https://briteming.blogspot.com/2020/03/rustbit-tunnel.html)甚至ss,v2ray都不如它。在pc上,我已经很少用ss,v2ray翻墙。
socks5-proxy-by-yuanrenguang715堪称pc上,最好用的socks proxy程序。
类似的程序还有:
https://briteming.blogspot.com/2020/04/stepladder.html
https://briteming.blogspot.com/2020/04/gsocks5.html
它们的共同特点是都用到了证书(自签名证书就够了)。
看看https://github.com/yuanrenguang715/socks5-proxy/tree/master/server和
https://github.com/yuanrenguang715/socks5-proxy/tree/master/client,里面都有key和pem文件。
一个支持直播的视频程序:NodeTube
取自官方的项目介绍:NodeTube是YouTube的开源替代品,可提供视频,音频和图像上传,实时流媒体和内置获利功能。
官方没有详细的文档,自己部署的时候遇到很多坑,这里记录一下。另外吐槽一下这个程序的前端属实是有点简陋。不过反正能用,开源的嘛白嫖也不指望个啥。
系统debian10,安装nodejs10/mongodb/redis:
apt -y update apt -y install build-essential gnupg curl wget git curl -sL https://deb.nodesource.com/setup_10.x | bash - wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add - echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list apt -y update apt -y install nodejs mongodb-org redis-server
注意nodejs的版本只能是10,其他版本跑不起来或者跑起来有问题。
安装nginx/certbot,如果要直播支持还需要安装rtmp模块:
apt -y install nginx python-certbot-nginx libnginx-mod-rtmp
启动mongodb/redis,以及设置一下这些程序的开机自启:
systemctl start mongod redis
systemctl enable nginx mongod redis
现在拉取项目文件/安装依赖:
cd /opt git clone https://github.com/mayeaux/nodetube cd nodetube npm install
修改程序的配置文件:
nano .env.private
如下位置需要改动:
DOMAIN_NAME_AND_TLD='https://nodetube.imlala.best' INSTANCE_DOMAIN_NAME='nodetube.imlala.best'
如果你需要直播功能,还需要更改另一个配置文件:
nano .env.settings
其中要改动的位置如下:
LIVESTREAM_APP=true NODE_ENV='production' RUN_NGROK=false
修改目录/文件的所有者:
chown -R www-data:www-data /opt/nodetube
接着新建一个systemd服务文件:
nano /lib/systemd/system/nodetube.service
写入如下配置:
[Unit] Description=nodetube [Service] Type=simple User=www-data Group=www-data WorkingDirectory=/opt/nodetube ExecStart=/usr/bin/npm start Restart=always [Install] WantedBy=multi-user.target
启动以及设置开机自启:
systemctl start nodetube
systemctl enable nodetube
编辑nginx的主配置文件:
nano /etc/nginx/nginx.conf
在文件的末尾加入直播需要的rtmp配置:
rtmp { server { listen 1935; chunk_size 4096; application live { live on; on_publish http://127.0.0.1:3000/livestream/on-live-auth; on_publish_done http://127.0.0.1:3000/livestream/on-live-done; hls on; hls_path /opt/nodetube/hls; hls_fragment 10s; } } }
接着新建一个nginx站点配置文件用于反向代理:
nano /etc/nginx/conf.d/nodetube.conf
写入如下配:
server { listen 80; server_name nodetube.imlala.best; # 换成你的域名 client_max_body_size 0; root /opt/nodetube; location /uploads/ { gzip off; sendfile on; sendfile_max_chunk 1m; tcp_nopush on; try_files $uri @redirect; } location @redirect { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
接下来用certbot签一个ssl证书:
certbot --nginx --agree-tos --no-eff-email --email xxxxx@qq.com
证书签好了之后,由于这个程序直播界面有一个基于websocket的聊天功能是用的自签证书,这里需要把我们的证书替换掉自签证书,否则聊天功能不能正常使用:
cd /opt/nodetube/keys mv server.crt server.crt.bak mv server.key server.key.bak cp /etc/letsencrypt/live/nodetube.imlala.best/fullchain.pem server.crt cp /etc/letsencrypt/live/nodetube.imlala.best/privkey.pem server.key
给予正确的文件所有者,否则程序运行的时候报错:
chown www-data:www-data server.crt chown www-data:www-data server.key
最后重启一下nodetube即可:
systemctl restart nodetube
打开你的域名.
第一个注册的用户自动成为管理员,直播功能,在MY ACCOUNT-Livestreaming.
OBS和FFMPEG推流的方法都在页面内有介绍,自己看着设置就行了。
--------------
一个极易部署的流媒体服务:Node-Media-Server
现在有很多自建流媒体服务器的方法,最常用的应该是Nginx,但如果是自己想体验一下的话,这个Node-Media-Server比Nginx配置起来要简单很多,而且还有一个简单的WEB面板可以方便的查看一些信息。
这里使用Docker的方式部署,首先安装Docker
curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker
一条命令即可完成部署:
docker run -d -p 1935:1935 -p 8000:8000 --restart=always --name nms illuspas/node-media-server
然后我们需要进到容器内,做一些更改:
docker exec -it nms /bin/sh
编辑:
vi app.js
找到下面这一段,更改默认的管理员密码,然后把publish改为true,最后把secret也改一下,例如:
auth: { api: true, api_user: 'admin', api_pass: 'abcdefg', play: false, publish: true, secret: 'x1x2x3x4x5vhvhkttid' },
这样做的话是让推流有一个鉴权验证,不做验证的话任何人知道你这个服务器的地址都能用你这台机器推流,这样会造成滥用。
改完之后退出容器并重启:
exit docker restart nms
如果上面的重启报错,回显类似什么iptables/DNAT啥的,就直接重启Docker服务吧:
systemctl restart docker
因为我们给推流做了一个鉴权验证,这个时候我们需要计算一下推流的地址,首先要定义一个推流地址过期的时间,这里我假设地址在2019年的7月1日过期,那么将时间戳换算成unix的类型:
date -d "2019-07-01 00:00:00" +%s
执行上述的命令后,得到的unix时间戳是:
1561939200
然后我们把时间戳和之前在app.js内配置的secret进行一次md5加密,格式如下:
echo -n "/live/test-1561939200-x1x2x3x4x5vhvhkttid" | md5sum
注:其中的test是可以自己随便更改的,你这里可以理解为这是一个直播间的名字。
执行完上面的命令得到的md5值是:
2e99dbb982cd4bb0edd485a2d249745c
那么最终我们的推流地址就是:
rtmp://vpsip/live/test?sign=1561939200-2e99dbb982cd4bb0edd485a2d249745c
服务端这边就部署完成了,下面简单说一下怎么用FFMPEG/OBS推流。
安装FFMPEG,这边一切从简,直接用FFMPEG的静态包:
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz tar -xJf ffmpeg-release-amd64-static.tar.xz cd ffmpeg-4.1.3-amd64-static cp ffmpeg /usr/bin && cp ffprobe /usr/bin && cp qt-faststart /usr/bin
然后随便找个视频文件测试一下:
ffmpeg -re -i 230OREC-315.mp4 \ -c:v libx264 -preset superfast -tune zerolatency \ -c:a aac -ar 44100 -f flv rtmp://vpsip/live/test?sign=1561939200-2e99dbb982cd4bb0edd485a2d249745c
现在我们可以访问一下WEB面板看看推流是否正常:
http://vpsip:8000/admin/
这个媒体服务器支持很多种格式,像什么FLV/HLS/DASH都是支持的,相应的拉流地址:
http://vpsip:8000/live/STREAM_NAME.flv ws://vpsip:8000/live/STREAM_NAME.flv http://vpsip:8000/live/STREAM_NAME/index.m3u8 http://vpsip:8000/live/STREAM_NAME/index.mpd
自己弄个简单的html页面或者套个Dplayer都是可以的,这里就不多BB了。。这样一个私人直播服务器就搭建完成了。。
参考文献:
https://github.com/illuspas/Node-Media-Server/blob/master/README_CN.md
-----------------------------------------
Restreamer:免费的流媒体服务器
这个东西貌似主要用途是帮助你把网络摄像头的视频流快速传到Youtube等提供直播的平台,但它也内置了一个用NGINX实现的RTMP服务器,也可以拿来做普通的直播。
安装docker:
apt -y update apt -y install curl curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker
然后使用下面的命令启动即可:
docker run -d --restart always \ --name restreamer \ -e "RS_USERNAME=admin" -e "RS_PASSWORD=cvbm" -e "RS_TOKEN=cvbm"\ -p 8080:8080 \ -p 1935:1935 \ -v /mnt/restreamer/db:/restreamer/db datarhei/restreamer:latest
其中RS_PASSWORD是WEB的密码,RS_TOKEN是推流的鉴权验证。
访问WEB面板:
http://your-device-ip:8080
输入你刚才启动容器时设置的账号密码登录.
----------------------------------
Owncast:一个人的直播间
owncast是一个单用户的直播工具,带有聊天功能。
程序转码需要用到ffmpeg,建议在一台性能稍好的VPS上安装,安装基本工具:
apt -y update apt -y install ffmpeg unzip nginx python-certbot-nginx supervisor systemctl start supervisor nginx systemctl enable supervisor nginx
下载解压二进制文件:
mkdir -p /opt/owncast && cd /opt/owncast wget https://github.com/owncast/owncast/releases/download/v0.0.2/owncast-linux-0.0.2.zip unzip owncast-linux-0.0.2.zip
新建配置文件:
nano config.yaml
写入如下配置:
ffmpegPath: /usr/bin/ffmpeg webServerPort: 8080 instanceDetails: name: imlala title: MapleStory Solo Lotus summary: "Welcome" extraUserInfoFileName: "/static/content.md" logo: small: /img/logo128.png large: /img/logo256.png tags: - game - music - tech socialHandles: - platform: github url: http://github.com/owncast/owncast - platform: mastodon url: http://mastodon.something/owncast videoSettings: chunkLengthInSeconds: 5 streamingKey: password offlineContent: static/offline.m4v streamQualities: - low: videoBitrate: 400 scaledWidth: 600 audioPassthrough: true encoderPreset: veryfast - medium: videoBitrate: 800 encoderPreset: fast - high: videoBitrate: 2000 encoderPreset: faster
如果你只想开箱即用的话,修改streamingKey后面的值即可,这是你的直播密码。
其他的配置可参考如下地址的说明:
https://owncast.online/docs/configuration/
接下来新建一个supervisor配置文件用于守护owncast的进程:
nano /etc/supervisor/conf.d/owncast.conf
写入如下配置:
[program:owncast] priority=1 directory=/opt/owncast command=/opt/owncast/owncast autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/supervisor/owncast.log
更新supervisor配置即可启动owncast:
supervisorctl update
接下来新建nginx站点配置文件用于反向代理:
nano /etc/nginx/conf.d/owncast.conf
写入如下配置:
server { listen 80; server_name owncast.imlala.best; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; } }
使用certbot签一个ssl证书:
certbot --nginx --agree-tos --no-eff-email --email example@qq.com
推流地址:
rtmp://owncast.imlala.best/live
流名称就是你在config.yaml内设置的streamingKey密码。
---------------
相关帖子:https://briteming.blogspot.com/2016/09/nginx.html