centos 中继?centos7配置默认路由
大家好,今天小编来为大家解答centos 中继这个问题,centos7配置默认路由很多人还不知道,现在让我们一起来看看吧!
如何在CentOS中安装及配置Asterisk
如何在CentOS中安装及配置Asterisk
Asterisk是第一套以开放源代码软件实作的用户交换机(PBX)系统。Asterisk由 Digium的创办人 Mark Spencer于 1999年间,他还在奥本大学念书时开发出。与其他的用户交换机系统相同,Asterisk同样支援电话拨打另一只分机,和拨打到公共交换电话网与IP电话系统。Asterisk这个名称源自于星号"*"。
Asterisk采用双轨授权模式,免费模式使用 GNU General Public License(GPL)授权,而商用授权使用 proprietary模式,此授权不需要将系统源代码公开。
系统一开始之开发平台为 Linux,目前已可在相当多种的平台上运行,其中包括 NetBSD, OpenBSD, FreeBSD, Mac OS X与 Solaris。亦有人将系统移植到 Microsoft Windows平台上,即为 AsteriskWin32。Asterisk是相当轻量级的系统,可以在如 OpenWrt之类的嵌入式系统上运作。
下面的内容将带大家如何在CentOS中安装及配置Asterisk。
以下没有特殊注明,所有操作都是在命令行中
[前期准备]安装依赖软件和环境
yum–y upgrade(更新软件列表和部分软件)
yum–y update(升级现有软件)
yum install kernel-devel(安装devel版的内核,asterisk安装需要)
yum install kernel-PAE-devel(IntelCPU的服务器上超过4G内存是需要用到)
yum install bison
yum install bison-devel
yum install ncurses
yum install ncurses-devel
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
yum install gnutls-devel
yum install gcc
yum install gcc-c++
yum install newt-devel
yum install curl
yum install curl-devel
yum install mysql-devel
以上软件的安装可以用以下命令一起安装
yum–y install kernel-devel kernel-PAE-devel bison bison-devel ncurses ncurses-devel zlib zlib-devel openssl openssl-devel gnutls-devel gcc gcc-c++ newt-devel curl curl-devel mysql-devel
reboot安装完这些软件需要重启一下
显示系统已经安装的组件,和可以安装的组件:
#yum grouplist如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装:
#yum groupinstall"X Window System"
安装GNOME桌面环境 yum groupinstall"GNOME Desktop Environment"
安装KDE桌面环境 yum groupinstall"KDE(K Desktop Environment)"
卸载GNOME桌面环境
yum groupremove"GNOME Desktop Environment"
卸载KDE桌面环境 yum groupremove"KDE(K Desktop Environment
centos英文版下如何安装中文语言包
centos安装过程中,安装语言包时选择了english,在安装完毕后浏览中文网页或查看中文文档时总是宣誓乱码,因此需要安装中文语言包,如果不能从安装盘进行安装,可以通过yum进行安装,安装办法为:
yum groupinstall<language>-support
在上面的命令中,<language>是下列之一: assamese, bengali, chinese, gujarati, hindi, japanese, kannada, korean, malayalam, marathi, oriya, punjabi, sinhala, tamil, thai,或 telegu。
VNC
xsetroot-solid grey
vncconfig-iconic&
#xterm-geometry 80×24+10+10-ls-title“$VNCDESKTOP Desktop”&
gnome-session&
startkde&
twm&
[准备所需软件]
Asterisk 1.4.26.2
Dahdi-linux-complete-2.2.0.2+2.2.0(包含dahdi-linux 2.2.0.2和dahdi-tools 2.2.0)
Libpri 1.4.10.1
Asterisk-addons 1.4.9
asterisk-sounds 1.2.1
[安装过程]
tar-xvzf libpri-1.4.10.1.tar.gz
tar-xvzf dahdi-linux-complete-current.tar.gz
tar-xvzf asterisk-1.4.26.2.tar.gz
tar-xvzf asterisk-addons-1.4.9.tar.gz
tar-xvzf asterisk-sounds-1.2.1.tar.gz
cd libpri-1.4.10.1
make&& make install
cd../dahdi-linux-complete-2.2.0.2+2.2.0
make all
make install
make config
cd../asterisk-1.4.26.2
./configure
make menuselect(编译选项选择)
make&& make install
make samples
make config
cd../asterisk-addons-1.4.9
cd cdr
修改cdr_addon_mysql.c,具体操作如下
输入命令”vi cdr_addon_mysql.c”
移动光标到开头的一个空白行,按下键”i”
输入”#define MYSQL_LOGUNIQUEID”
按”esc”键,输入”:wq”回车
cd..
./configure
make menuselect
make&& make install
make samples
cd../asterisk-sounds-1.2.1
make&& make install
cd/etc/init.d/
./asterisk start
asterisk-r
Asterisk功能介绍
Asterisk包含许多多昂贵的商用交换机系统才具有的功能,例如:语音信箱、多方语音会议、交互式语音应答(IVR)、电话选单与电话客服中心等机制。
管理者亦可透过 Asterisk内建的分机操作语言撰写拨号脚本以达到特殊的功能目的。甚至可以透过 C语言撰写相容的模组,或以任何相容的语言借由 stdin与 stdout或网络 TCP socket开发Asterisk Gateway Interface(AGI)程式。
若要 Asterisk系统拨打至公共交换电话网或中继链接公共交换电话网,管理者必须安装适当的硬件。如由 Digium官方生产之各种 PCI接口卡,用以提供 Asterisk连接 T1、E1线路或其他传统线路之能力。中国大陆亦有如 OpenVox价格相对低廉之相容接口卡。
Asterisk支援非常广泛的影像与IP电话协定[4]。包括会话发起协议(SIP)、Media Gateway Control Protocol(MGCP)与 H.323协定。Asterisk可相容于大部分的 SIP电话。Inter-Asterisk eXchange(IAX2)协定是一个由 Asterisk原生提供的 Asterisk PBX交换机间中继链接协定,部分 VoIP服务商甚至原生支援 IAX2协定。
为了满足传统电话与 IP电话混合的服务环境,Asterisk可以让管理者建议一个全新单一的电话系统,或逐步的将既有电话系统转移使用新技术。部分的公司直接使用 Asterisk取代传统的交换机,而有些公司则使用 Asterisk提供进阶功能,如语音信箱等,或将长途电话透过 Asterisk改以网络传输以达到节费机制。
由于Asterisk过于专业且复杂,所以目前也存在大量衍生自Asterisk但简化过的通信系统,以让用户较容易使用。比如在欧美比较流行的elastix、trixbox、或以简体中文为基础的Freeiris等。
使用宝塔面板Docker搭建rustdesk远程中继服务器
使用宝塔面板Docker搭建rustdesk远程中继服务器,一款自建远程工具,能提供无限制流、高清画质的远程体验,适合私人定制使用。步骤如下:
一、准备国内云服务器,如阿里云、腾讯云等,配置无需过高等级,但宽带应适当大些,以满足画面共享的需求。若无云服务器,可通过百度云申请。
二、使用Docker安装Rustdesk中继服务器。首先需安装Docker,教程可自行百度搜索。安装完成后执行docker version命令,检查Docker是否成功安装。
三、在宝塔面板中,确保Docker已启用状态。接下来,选择Docker项目模板进行添加,创建并配置模板文件(需以.yml结尾,内容根据实际需求调整)。编排模板后,拉取并运行镜像。
四、设置Rustdesk服务器时,请确保网络设置正确,如使用--net=host可让hbbs/hbbr看到对方真实的IP,而非容器IP。去掉-p选项,确保与目标系统正常连接。
五、部署Rustdesk客户端。从rustdesk.com/zh/下载客户端,首次安装后,设置控制端,输入云外网IP作为ID服务器和配置文件中指定的Key。
六、远程链接步骤:输入被控制端ID,连接后输入显示的密码或让被控端接受连接。注意,如果不需要网页客户端支持,可关闭对应端口。
七、若遇到登录问题,可参考rustdesk_server_api项目,其地址为github.com/kingmo888/rustdesk_server_api,解决登录功能中账号密码显示问题。
八、使用Rustdesk时,推荐使用以下部署方式:直接运行.bat文件(仅适用于Windows系统)、代码运行(不推荐)、Docker运行(推荐)或使用docker-compose方式(强烈推荐)。确保系统兼容性,如在CentOS中配置Django4时,可能因sqlite3版本过低出问题,需修改依赖库文件。
九、在使用过程中,如遇问题,请查阅官方文档或社区讨论,以便解决。
edgemesh利用iptables劫持流量时遇到的问题分析
kubeedge相比kubernetes,主要的提供了跨子网构建集群的方案;其最强大的特点就是让kubernetes不在局限于一个物理机房之内;集群中的主机节点可以在不同的私有局域网内。
不同私有网络之下的主机要进行相互通信,最主要的就是受限于防火墙NAT形态:
上面的各组网方案之中,依次安全性增强,在对称锥形的网络中,所有主机都在各自的防火墙背后,直接穿透访问就非常困难,所以直接edgemesh提供了两种穿透访问方案:
edgemesh-server: Deployment云端
edgemesh-agent: DaemonSet云端+边缘
对于全锥形NAT、受限性NAT、部分端口受限锥形NAT访问可以直接采用如下方案;
对于直接穿透访问不了的请求,edgemesh-agent就会将流量转发到edgemesh-server上进行中继,因为所有的edgemesh-agent在启动后,就会于云端的edgemesh-server建立一个隧道网络;
在kubernetes+kubeedge组成的边缘云集群上,无论云端or边缘主机,都部署了edgemesh-agent,其有两个主要功能:
环境:
mkedge3 10.136.77.2北四环办公室边缘盒子 edgemesh-agent role: edgenode kernel: 5.2.14-1.el7.elrepo.x86_64
mkedge2 10.201.82.131天坛机房 edgemesh-agent role: edgenode kernel: 4.15.6-1.el7.elrepo.x86_64
用例:
在mkedge2上启动tcp-echo-cloud容器,通过mkedge3上的busybox容器进行远程telnet tcp-echo-cloud 2701
说明:
从实际流量抓包看来看,从办公室机房能够直接访问到天坛机房主机,不需要中继;
mkedge3发起请求tcp抓包
mkedge2上接收载荷tcp抓包
环境:
mkmaster1 10.200.50.118国贸机房 edgemesh-server, edgemesh-agent role: master kernel: 5.2.14-1.el7.elrepo.x86_64
mkworker3 10.202.42.112亦庄机房 edgemesh-agent role: cloudnode kernel: 5.2.14-1.el7.elrepo.x86_64
mkedge3 10.136.77.2北四环办公室边缘盒子 edgemesh-agent role: edgenode kernel: 3.10.0-514.el7.x86_64
用例:
在mkworker3上启动tcp-echo-cloud容器,通过mkedge3上的busybox容器进行远程telnet tcp-echo-cloud 2701
说明:
从实际流量抓包看来看,从办公室机房不能直接访问到亦庄机房主机,需要国贸机房的edgemesh-server中继;
mkedge3发起请求tcp抓包
mkmaster1进行中继tcp抓包
mkworker3上接收载荷tcp抓包
先说结论,怀疑主机默认内核 4.15.6-1.el7.elrepo.x86_64(centos7)存在调用系统内核函数getsockopt的严重bug!!!
环境:
mkmaster1 10.200.50.118国贸机房 edgemesh-server, edgemesh-agent role: master kernel: 5.2.14-1.el7.elrepo.x86_64
mkworker1 10.201.82.139天坛机房 edgemesh-agent role: cloudnode kernel: 5.2.14-1.el7.elrepo.x86_64
mkworker2 10.201.83.74天坛机房 edgemesh-agent role: cloudnode kernel: 5.2.14-1.el7.elrepo.x86_64
mkedge1 10.201.82.148天坛机房 edgemesh-agent role: edgenode kernel: 4.15.6-1.el7.elrepo.x86_64
mkedge2 10.201.82.131天坛机房 edgemesh-agent role: edgenode kernel: 4.15.6-1.el7.elrepo.x86_64
mkedge3 10.136.77.2北四环办公室边缘盒子 edgemesh-agent role: edgenode kernel: 3.10.0-514.el7.x86_64
用例:
在mkworker1、mkworker2、mkedge1、mkedge2上启动同时启动tcp-echo-cloud容器,通过mkedge1上的busybox容器进行远程访问这些服务,发现一个都不通;
现状:
从实际流量抓包看来看,从业务容器发送请求给到edgemesh-agent:40001端口,之后流量就不见了踪影;
[图片上传失败...(image-2899d1-1641166544225)]
究竟是Go的版本不对?容器镜像问题?逐个进行了排查:
给edgemesh-agent:proxy.go的Run()函数中,realServerAddress(&conn)调用之前,增加了打印日志,同时在这个函数调用中,增加了一些日志输出标记位,重新制作容器进行测试,发现输出日志 555,但未输出 666,同时进程状态异常变为了 D:
然后就开始怀疑是这个内核调用出现了问题,先编写了一个go程序:
如下是在mkedge3宿主机上, kernel: 3.10.0-514.el7.x86_64,一个终端上先将程序启动监听18011端口,然后在另外一个连接mkedge3终端上,直接telnet这个端口,程序能够正确通信,并输出打印日志 address: 192.168.127.1:18011
如下是在mkedge1上测试, kernel: 4.15.6-1.el7.elrepo.x86_64,发现telnet之后,无法输出打印日志,并且程序在第三个终端窗口里也无法 kill-9,并且进程状态变为了 D;
不死心,程序在mkedge2上依然如上;
不死心,找了台内核升级为 kernel: 4.19.12-1.el7.elrepo.x86_64的主机,结果是正确的;
不死心:虽然严重怀疑了 kernel: 4.15.6-1.el7.elrepo.x86_64,那么就近是Go的问题,还是系统内核的问题呢?于是又写了一个C程序来测试: ,在compile-on-kernel4.15.6分支的/sockopt/sockoptchk.c
依然出现了上面出现的问题,说明应该就是kernel的问题了,需要推荐运维以后不要安装这个版本的内核了,目前看4.19.12以上的版本或者干脆就是3.10的内核都是打过patch的。