當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 關(guān)于linux下的xinetd服務(wù)
我們?cè)诰W(wǎng)絡(luò)通信時(shí)候用到socket套接字,有的時(shí)候我們更希望Linux能使用http協(xié)議等于前端有一定的交互,那么xinetd服務(wù)無(wú)疑是Linux下一種很好的方法。
什么是xinetd呢?xinetd是新一代的網(wǎng)絡(luò)守護(hù)進(jìn)程服務(wù)程序,又叫超級(jí)Internet服務(wù)器,常用來(lái)管理多種輕量級(jí)Internet服務(wù)。xinetd提供類(lèi)似于inetd+tcp_wrapper的功能,但是更加強(qiáng)大和安全。
簡(jiǎn)單介紹下xinetd的特色
1) 強(qiáng)大的存取控制功能
— 內(nèi)置對(duì)惡意用戶(hù)和善意用戶(hù)的差別待遇設(shè)定。
— 使用libwrap支持,其效能更甚于tcpd。
— 可以限制連接的等級(jí),基于主機(jī)的連接數(shù)和基于服務(wù)的連接數(shù)。
— 設(shè)置特定的連接時(shí)間。
— 將某個(gè)服務(wù)設(shè)置到特定的主機(jī)以提供服務(wù)。
2) 有效防止DoS攻擊
— 可以限制連接的等級(jí)。
— 可以限制一個(gè)主機(jī)的大連接數(shù),從而防止某個(gè)主機(jī)獨(dú)占某個(gè)服務(wù)。
— 可以限制日志文件的大小,防止磁盤(pán)空間被填滿(mǎn)。
3) 強(qiáng)大的日志功能
— 可以為每一個(gè)服務(wù)就syslog設(shè)定日志等級(jí)。
— 如果不使用syslog,也可以為每個(gè)服務(wù)建立日志文件。
— 可以記錄請(qǐng)求的起止時(shí)間以決定對(duì)方的訪(fǎng)問(wèn)時(shí)間。
— 可以記錄試圖非法訪(fǎng)問(wèn)的請(qǐng)求。
4) 轉(zhuǎn)向功能
可以將客戶(hù)端的請(qǐng)求轉(zhuǎn)發(fā)到另一臺(tái)主機(jī)去處理。
5) 支持IPv6
6) 能與客戶(hù)端交互
當(dāng)我們?cè)趌inux下安裝了xinetd服務(wù)后,將/etc/services 這個(gè)文件中添加相應(yīng)的服務(wù)協(xié)議和端口號(hào),然后再/xinit.d目錄中添加相應(yīng)的配置文件就可以啟動(dòng)這個(gè)服務(wù)了。
讓我們看一些基本的應(yīng)用.我們要看的第一個(gè)基本的服務(wù)是echo,它是inetd 和 xinetd固有的服務(wù)。
service xecho
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
server = /usr/bin/rsync
}
下面說(shuō)明每一行選項(xiàng)的含義:
— disable = yes:表示禁用這個(gè)服務(wù)。
— socket_type = stream:表示服務(wù)的數(shù)據(jù)包類(lèi)型為stream。
— wait = no:表示不需等待,即服務(wù)將以多線(xiàn)程的方式運(yùn)行。
— user = root:表示執(zhí)行此服務(wù)進(jìn)程的用戶(hù)是root。
— server = /usr/bin/rsync:?jiǎn)?dòng)腳本的位置。
可以用sudo service xinetd restart啟動(dòng)。
當(dāng)然如果連接的話(huà)你還需要有ssh或者telnet服務(wù)器 ,telnet服務(wù)器是通過(guò)xinetd(超級(jí)Internet守護(hù)進(jìn)程)來(lái)管理的,安裝apt-get install telnetd。
安裝完后,需要為xinetd建立一個(gè)配置文件/etc/xinetd.d/telnet,該文件的內(nèi)容如下所示:
service telnet
{
disable = no
type = UNLISTED
socket_type = stream
wait = no
user = nobody
server = /usr/sbin/in.telnetd
server_args = -h
log_on_failure += HOST USERID
log_on_success += PID HOST USERID EXIT DURATION
id = id-git-stream
log_type = FILE /gitdaemonlog
}
這只是一些xinetd的配置用法,具體還有很多方面的應(yīng)用例如我們可以用一個(gè)簡(jiǎn)單的大小寫(xiě)轉(zhuǎn)換的程序測(cè)試下,在連接xinetd的終端下實(shí)現(xiàn),或者實(shí)現(xiàn)一個(gè)小的服務(wù)器,讓我們的xinetd的可以連接到瀏覽器上。