搭建流媒体服务器 PingOS 平台搭建

说实话,搭个流媒体服务器这事儿吧,我之前帮朋友弄过一次,感觉PingOS这平台操作起来还算顺手。
不过得说明,我这经验主要还是基于CentOS 7 6 4 位环境,其他系统我没亲自试过,可能有点偏差。

环境准备这块,确实得先整好。
我印象里是得确保系统是更新过的CentOS 7 6 4 位,不然某些依赖装不上。
Git肯定得装,用Yum装一般就行:yum install -y git。
这步简单,但别忘了。

下载源码是关键一步。
我记得PingOS官方好像没直接开下载链接,得去他们GitHub仓库或者文档里找编译指令。
我当时是用了git clone命令,具体地址得查查最新版。
克隆下来之后,得解压,然后看文档里有没有现成的编译脚本,通常有就省事了。

快速安装这步,官方文档写得挺细。
一般就是先cd进解压后的目录,然后跑./configure、make、make install这几个命令。
说实话,这过程有时候会卡,特别是编译Nginx和Rtmp模块的时候,我朋友那机器CPU有点吃紧,装了快一个小时。
这时候最好先yum update一下系统,补点内核和库。

启动服务配置是核心。
装完之后,按文档启动PingOS服务。
默认端口8 0和1 9 3 5 是固定的,但用8 0肯定不行,你想想多少网站都用8 0啊?我建议改端口,比如改到8 08 0,或者自己随便挑个不常用的。
改端口得改配置文件,就在/usr/local/pingos/conf/nginx.conf里。
这文件挺大,主要是在http和rtmp块里修改。
比如server块里的监听端口,还有rtmp的配置,比如rtmp_stat这些。
改完保存,然后systemctl reload nginx,这样配置就生效了。

测试推流效果是最后一步。
我这有具体操作过:用OBS推流,设置推流地址是RTMP协议的,比如rtmp://ip地址:1 9 3 5 /live/stream1 播放端就用支持HLS的软件,比如VLC,把刚才OBS里录的.flv文件转成.m3 u8 ,然后用浏览器打开那个http://ip地址:8 08 0/hls2 /stream1 .m3 u8 如果画面能出来,那就说明通了。

不过要注意的是,如果你用阿里云,防火墙和安全组得关了。
我当时朋友在那卡了很久,后来发现是安全组没放行端口,急死个人。
建议先放行8 08 0和1 9 3 5 ,然后测试通了再收窄。

总的来说,PingOS这平台搭建流程不算特别复杂,但每一步都得仔细。
特别是配置文件那块,官方文档虽然详细,但有些地方写得有点绕,我当时还得自己琢磨半天。
后续还想优化的话,比如加转码功能,就得看文档里有没有那部分了,这块我没亲自跑过。
数据我记得是RTMP流量一般能达到几GB每秒,但具体得看服务器配置,我这只是个参考。

Linux access.conf 限制用户ssh/rsh登陆不生效的问题

说实话,我在处理CentOS7 .4 的系统安全问题时,遇到过不少次这类诡异的情况。
比如有一次,有个客户抱怨说配置了/etc/security/access.conf,明明写了拒绝某些IP登录,但根本不管用。
折腾了大半天,发现问题就出在PAM配置上。

当时我检查/etc/ssh/sshd_config,发现UsePAM确实被设置为yes,这步是满足的。
但关键问题在于/etc/pam.d/sshd和/etc/pam.d/rsh这两个文件,它们都通过account include password-auth引用了password-auth文件。
有意思的是,password-auth这个文件本身,默认情况下可能就忘了加载pam_access.so模块。

最让我头疼的是,在/etc/pam.d/password-auth里,虽然pam_access.so已经存在,但被pam_permit.so给覆盖了。
因为pam_permit.so用的是required这一级,位置又在后面,所以不管什么用户,最后都会被这个模块直接放行。
当时我还发现,之前有人注释掉了pam_localuser.so,这玩意儿可能也在干扰访问控制逻辑。

解决方法就是,我得把pam_access.so挪到pam_permit.so前面去。
调整后的配置大概是这样:
bash account required pam_unix.so account sufficient pam_succeed_if.so uid<1> 修改完password-auth后,还得检查/etc/security/access.conf的语法。
我记得有次配置错误,直接用+和-符号写反了,导致系统根本不识别。
正确的格式应该是:
bash +:root:ALL 允许root从所有IP登录 -:ALL:1 0.1 0.1 0.1 9 7 1 0.1 0.1 0.1 9 8 拒绝所有用户从指定IP登录
注意,规则是按顺序匹配的,像root这种例外规则,一定要放在通用的拒绝规则前面。
改完配置后,重启服务:
bash systemctl restart sshd
如果系统里还留有rsh服务(说实话,现在谁还用这个啊),那也得重启它。

补充一句PAM模块的执行逻辑,这很重要。
在account阶段,模块是按配置文件顺序执行的。
required级别的模块如果失败了,整个流程就终止了;而sufficient级别的模块一旦成功,后续的模块就都不执行了。
所以pam_access.so必须放在pam_permit.so前面,不然肯定被后者给劫持了。

最后验证方法,我通常会用pamtester这个工具。
装上之后,可以这么测试:
bash pamtester -u <用户名> sshd account
如果还是不行,那得去/var/log/secure里找PAM的错误信息:
bash grep pam_access /var/log/secure
记得有一次,客户的环境里网络ACL也同时配置了相同的规则,结果PAM和ACL冲突,搞得我头都大了。
所以排查这类问题,得像侦探一样,把所有相关的配置都捋一遍。

centos安装frrouting

CentOS7 .5 装FRR7 .4 ,步骤如下:
一、环境确认与依赖安装 系统CentOS7 .5 ,内核3 .1 0.0-8 6 2 ,不支持MPLS/VRF。
yum install git autoconf automake libtool make readline-devel texinfo net-snmp-devel groff pkgconfig json-c-devel pam-devel bison flex pytest c-ares-devel python-devel systemd-devel python-sphinx libcap-devel pcre-devel yum install python3 python3 -devel 下载libyang RPM包,rpm -ivh libyang-.rpm
二、FRRouting源码安装 groupadd -g 9 2 frr groupadd -r -g 8 5 frrvty useradd -u 9 2 -g 9 2 -M -r -G frrvty -s /sbin/nologin -c "FRR FRRouting suite" -d /var/run/frrfrr git clone https://github.com/FRRouting/frr.git -b 7 .4 cd frr ./bootstrap.sh ./configure --bindir=/usr/bin --sbindir=/usr/lib/frr --sysconfdir=/etc/frr --libdir=/usr/lib/frr --libexecdir=/usr/lib/frr --localstatedir=/var/run/frr --with-moduledir=/usr/lib/frr/modules --enable-snmp=agentx --enable-multipath=6 4 --enable-user=frr --enable-group=frr --enable-vty-group=frrvty --enable-systemd=yes --disable-exampledir --disable-ldpd --enable-fpm --with-pkg-git-version --with-pkg-extra-version=-MyOwnFRRVersion SPHINXBUILD=/usr/bin/sphinx-build make makecheck sudo make install
三、配置文件初始化 sudo mkdir -p /var/log/frr /etc/frr sudo touch /etc/frr/{zebra,bgpd,ospfd,ospf6 d,isisd,ripd,ripngd,pimd,nhrpd,eigrpd,babeld}.conf sudo chown -R frr:frr /etc/frr sudo touch /etc/frr/vtysh.conf sudo chown frr:frrvty /etc/frr/vtysh.conf sudo chmod 6 4 0 /etc/frr/.conf sudo install -p -m 6 4 4 tools/etc/frr/daemons /etc/frr sudo chown frr:frr /etc/frr/daemons 编辑 /etc/frr/daemons,启用所需服务:watchfrr_enable=yes zebra=yes bgpd=yes
四、系统参数调整 echo -e "net.ipv4 .conf.all.forwarding=1 \nnet.ipv6 .conf.all.forwarding=1 " | sudo tee /etc/sysctl.d/9 0-routing-sysctl.conf sudo sysctl -p /etc/sysctl.d/9 0-routing-sysctl.conf
五、服务启动与验证 sudo install -p -m 6 4 4 tools/frr.service /usr/lib/systemd/system/frr.service sudo systemctl preset frr.service sudo systemctl enable frr sudo systemctl start frr ps -elf | grep frr vtysh
六、常见问题处理 编译失败,检查python3 -devel。
内核限制,需升级内核至4 .9 +。

FRR7 .4 装完。