我們在網絡通信時候用到socket套接字,有的時候我們更希望Linux能使用http協議等于前端有一定的交互,那么xinetd服務無疑是Linux下一種很好的方法。
什么是xinetd呢?xinetd是新一代的網絡守護進程服務程序,又叫超級Internet服務器,常用來管理多種輕量級Internet服務。xinetd提供類似于inetd+tcp_wrapper的功能,但是更加強大和安全。
簡單介紹下xinetd的特色
1) 強大的存取控制功能
— 內置對惡意用戶和善意用戶的差別待遇設定。
— 使用libwrap支持,其效能更甚于tcpd。
— 可以限制連接的等級,基于主機的連接數和基于服務的連接數。
— 設置特定的連接時間。
— 將某個服務設置到特定的主機以提供服務。
2) 有效防止DoS攻擊
— 可以限制連接的等級。
— 可以限制一個主機的大連接數,從而防止某個主機獨占某個服務。
— 可以限制日志文件的大小,防止磁盤空間被填滿。
3) 強大的日志功能
— 可以為每一個服務就syslog設定日志等級。
— 如果不使用syslog,也可以為每個服務建立日志文件。
— 可以記錄請求的起止時間以決定對方的訪問時間。
— 可以記錄試圖非法訪問的請求。
4) 轉向功能
可以將客戶端的請求轉發到另一臺主機去處理。
5) 支持IPv6
6) 能與客戶端交互
當我們在linux下安裝了xinetd服務后,將/etc/services 這個文件中添加相應的服務協議和端口號,然后再/xinit.d目錄中添加相應的配置文件就可以啟動這個服務了。
讓我們看一些基本的應用.我們要看的第一個基本的服務是echo,它是inetd 和 xinetd固有的服務。
service xecho
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
server = /usr/bin/rsync
}
下面說明每一行選項的含義:
— disable = yes:表示禁用這個服務。
— socket_type = stream:表示服務的數據包類型為stream。
— wait = no:表示不需等待,即服務將以多線程的方式運行。
— user = root:表示執行此服務進程的用戶是root。
— server = /usr/bin/rsync:啟動腳本的位置。
可以用sudo service xinetd restart啟動。
當然如果連接的話你還需要有ssh或者telnet服務器 ,telnet服務器是通過xinetd(超級Internet守護進程)來管理的,安裝apt-get install telnetd。
安裝完后,需要為xinetd建立一個配置文件/etc/xinetd.d/telnet,該文件的內容如下所示:
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的配置用法,具體還有很多方面的應用例如我們可以用一個簡單的大小寫轉換的程序測試下,在連接xinetd的終端下實現,或者實現一個小的服務器,讓我們的xinetd的可以連接到瀏覽器上。