A. linux開啟埠命令
關閉埠
iptables -A INPUT -p tcp --dport 111 -j DROP
打開埠
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
B. linux系統中默認埠是9000的
一、埠和服務的關系
埠號與相應服務的對應關系存放在/etc/services文件中,這個文件中可以找到大部分埠。使用netstat命令
顯示的服務名稱也是從這個文件中找的。有人說將這個文件中的相應埠號注釋掉,就可以禁用該埠。
我試了卻不起作用,這種方法應該是沒有用的,是誤傳!將相應埠號注釋掉,唯一的作用就是使用netsat
命令時,將不顯示服務名(比如ftp)而是顯示埠號(比如21)。原理也很簡單:netstat無法在/etc/services
文件中找到埠號對應的服務名,自然就無法顯示了。所以/etc/services文件只是起到埠號與相應服務的
映射關系,與埠的啟動和關閉沒有關系!
二、查看本機開放的埠
1、netstat 查看埠和連接
netstat 列出目前已經連接的服務名
netstat -a 列出目前已經連接的和正在監聽的服務名
netstat -an 列出目前已經連接的和正在監聽的埠號(與上面的命令功能一樣,只是不解釋埠號對應的服務名)
netstat -ap 在上面命令的基礎上列出連接的PID(進歲虧程號),用這個PID,可以使用KILL 來殺死連接
例如:某個連接的PID=111,想踢出去就使用 KILL -9 111。ok!
netstat -rn 輸出路由表
2、nmap
nmap 127.0.0.1 查看本機開放的埠,會掃描所有埠
nmap -p 1024 65535? 127.0.0.1 掃描指定埠范圍
nmap -PT 192.168.1.1-111? 掃描一組范圍的電腦
三、關閉和開啟埠(服務)
關閉埠的方法:
1、因為每個埠都有對應的服務,因此要關閉埠只要關閉相應的服務就可以了。
2、用IPTABLE對埠進行限制,這樣也能使埠不被訪問,但埠本身並沒有關閉。
在這兒只介紹關閉服務的方法,IPTABLE的應用以後再討論。
linux中開機自動啟動的服務一般都存放在兩個地方:
/etc/init.d/文件夾下的服務:
這個文件夾下的服務都可以通過運行相應的SCRIPT來啟動或關閉。
例如:啟動sendmail服務 ./sendmail start (打開了TCP 25埠)
關閉sendmail服務 ./sendmail stop (關閉TCP 25 埠)
查看sendmail服務當前狀態 ./sendmail? status (查看服務是否運行)
/etc/xinetd.d/文件夾下的服務:
這個文件夾下的服務需要通過更改服務的配置文件,並重新啟動xinetd才可以。
例如:要啟動其中的auth服務,打開/etc/xinetd.d/auth配置文件,更改「disable=no」,保存退出。運行/etc/rc.d/init.d/xinetd restart
要停止其中的auth服務,打開/etc/xinetd.d/auth配置文件,更改「disable=yes」,保存退出。運行/etc/rc.d/init.d/xinetd restart
四、控制開機自動啟動的服務
上面說的控制服務開關方法是在啟動linux之後進行操作的,如果我想在linux啟動時控制哪些服務啟動、哪些服務關閉怎麼做
控制服務自動啟動的方法有3個:
1、更改/etc/rc.d下的對應文件夾:
如果你登陸的默認界面是字元界面,那麼修改rc.3文件夾,如果登陸界面默認是圖形界面,那麼修改rc.5。
在文件夾中,每個服務的名字前都帶有「K」或「S」,S就代表這個服務開機自動運行了,把它刪了或前綴改為「K」下次就不會啟動了。
2、使用ntsysv命令:
輸入ntsysv命令,將會出現一個服務列表,需要啟動的打「*」,簡單。
3、使用chkconfig命令:
讓某個服務不自動啟動:例如httpd:chkconfig --level 35 httpd? off ;35指的是運行級別
讓某個服務自動啟動:例如httpd:chkconfig --level 35 httpd? on ;伍源
查看所有服務的啟動狀態:chkconfig --list
查看某個腔雀態服務的啟動狀態:chkconfig --list |grep httpd
埠和服務的操作就到這兒吧。
C. Linux下埠如何分配
我們知道建立一個socket連接進行畢茄行網路通訊時需要四個元素client_ip:client_port<----->server_ip:server_port,socket綁定一個埠號用於標識進程。我一直好奇在linux平台上運行時進程的埠如何分配的?如何才能避免埠佔用沖突?
要想了解這些答案需要先了解Linux下埠范圍多少?如何修改埠范圍?一個進程的埠如何分配的?最後了解linux系統下埠如何分配的?
1)查看埠范圍:sysctl -a | grep range
2)修改埠范圍:sysctl.conf
vi /etc/sysctl.conf
net.ipv4.ip_local_port_range=32788 60000
配置立即生效:sysctl -p
另外,埠范圍不要超過1024 65535,1024以下系統使用,65535以上設置會提示失敗。
程序的埠分配分為固定分配和自動分配兩種。一套系統中固定埠是要進行規劃的,比如ftp的埠數簡為10021(控制連接時服務端的),控制連接時客戶端的埠就可以隨機分配。ftp數據連接如果在被動模式下服務端和客戶端的埠都可以隨機分配,如果在主動模式下,服務端的埠可以固定分配,客戶端的埠隨機分配。
固定分配,一般在服務端的進程啟動時分配埠,用於創建socket進行監聽客戶端,如ftp配置文件中的listen_port=10021,http默認的是80,snmp管理的 trap埠是162和snmp agent埠是161。
自動分配,創建進程即建立socket用於通訊,比如ftp服務端的數據連接進程,會從linux sysctl.conf定義的埠范圍,自動來分配埠,調用bind進行埠綁定。但有時候不進行綁定埠也能正常工作,這是因為協議棧對沒有埠檔察綁定的socket進行了自動綁定。每次調用第4層協議的sendmsg成員函數時,會進行埠號的檢查,如果沒有綁定就調用協議的成員函數get_port進行自動綁定。
D. 怎樣開啟Linux的DNS埠和DNS的輔助伺服器埠還有DHCP的埠。
需要先知道DNS和DHCP的埠號才可以對其進行操作,一般默認DNS埠號專為53,DHCP的默認埠號是67,68。
一般關閉埠的使屬用命令:iptables -A INPUT -p tcp --drop 53-j DROP
iptables -A OUTPUT -p tcp --dport 53-j DROP
一般打開埠使用命令:iptables -A INPUT -ptcp --dport 埠號-j ACCEPT或者nc -lp 23
查看埠是否打開使用命令:netstat -an | grep 53