網路相關之指令
網路相關之指令
前言
- 在 Ubuntu 中我們可以打開終端機(Ctrl+Alt+T)進行指令操作,就可以透過指令來管理檔案、系統與網路管理。
- 在說明指令$ls(1),$表示命令提示符號,ls 表示指令本身,(1) 表示本指令是在手冊第一章節中,詳細說明請參閱►線上手冊(man page)
- 一般指令格式►$指令 [選項] [選項值]
- 該指令的所有用法 ►$指令 --help
- 指令是由英文單字縮寫構成,因為指令繁多,所以理解指令原文,就很容易記住了。列如 : ls:list (中文為列表)。
網路參數設定使用的指令
任何時刻如果你想要做好你的網路參數設定,包括 IP 參數、路由參數與無線網路等等,就得要瞭解底下這些相關的指令才行!其中以 ifconfig 及 route 這兩支指令算是較重要的喔! ^_^!當然,比較新鮮的作法,可以使用 ip 這個彙整的指令來設定 IP 參數啦!
- ifconfig: 查詢、設定網路卡與 IP 網域等相關參數。
- ifup, ifdown : 這兩個檔案是 script,透過更簡單的方式來啟動網路介面。
- route :查詢、設定路由表 (route table)。
- ping : Packet Internet Groper,網路檢測工具。
- ip :複合式的指令, 可以直接修改上述提到的功能。
- nmap : 偵測非本機上的其他網路主機。
- netstat : 看本機網路連線與後門。
- iptables : 主要是第一層 : 封包過濾式的 netfilter 防火牆,他不是一種服務,是操作netfilter的命令。
- traceroutes : 檢查從你的電腦到網路另一端的主機是走的什麼路徑。
- host : 查出某個主機名稱的 IP。
- nslookup : 查詢 DNS 回應是否正常。
- nmcli: 查詢所有系統的網路界面。
- 網路硬體檢查 :使用 dmesg 跟 lspci
- 其他常用 :
#ifconfig(8)
- #ifconfig►顯示目前正在活動(active)的網路介面卡資訊
- #ifconfig -a►顯示系統上面所有的網路介面卡資訊
- 第一張網卡通常叫做eth0
- 第二張會叫做eth1。
- lo代表是loopback,系統預設一定會有這張虛擬的介面 ,預設網路名稱為localhost、IPv4為127.0.0.1
- #ifconfig eth0 ►顯示eth0這張網卡的資訊,硬體編號MAC address可以在這邊看到
- #ifconfig eth0 up►啟動eth0網卡
- #ifconfig eth0 down►關閉eth0網卡
- #ifconfig eth0 192.168.55.66►設定網卡的IP位址為192.168.55.66
- #ifconfig eth0 netmask 255.255.255.0►設定網卡的網路遮罩為255.255.255.0
- #ifconfig eth0 broadcast 192.168.55.255►設定網卡的廣播位址(Broadcast)為192.168.55.255
- #ifconfig eth0 192.168.55.66 netmask 255.255.255.0 broadcast 192.168.55.255►指令6, 7, 8的合體,完整設定網卡
- #route add default gw 192.168.55.254 eth0►設定網路閘道。雖然不屬於ifconfig指令,但通常設定完IP也必須要指定閘道,網路封包才會知道從哪邊出去,電腦才能夠順利上網
- #ifconfig eth0:0 192.168.55.77►指定另外一組IP位址192.168.66.77給eth0這張網路卡。同一張網路卡可以指定很多個IP位址,像是說下面就將另外兩個IP位址指定給eth0這張網卡,名稱分別為eth0:1與eth0:2:
- ifconfig eth0:1 192.168.55.87
- ifconfig eth0:2 192.168.55.97
- #ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF►將eth0這張網卡的硬體編號MAC address更改成AA:BB:CC:DD:EE:FF
- #ifconfig eth0 mtu 1000 ►設定網路的MTU(maximum transmission unit)為1000,意思是最大數據包的只能有1500 bytes。通常乙太網路的預設值是1500,調整這個數值大小有可能會導致網路不通
- #ifconfig eth0 promisc ►啟動promiscuous mode。一般來說,網卡拿到封包以後會檢查是不是屬於自己的,如果不是的話就會丟棄;啟動這個promiscuous mode就不會檢查封包,而是把所有接收到的封包都收下來
- #ifconfig eth0 -promisc ►關閉promiscuous mode
#ifup(8),#ifdown(8)
- #ifup eth0►啟用一個 'eth0' 網路設備
- #ifdown eth0►禁用一個 'eth0' 網路設備
#route -n : show routing table
現在已逐漸由ip route命令代替。
- #route add default gw 987.321.456.254
- #route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1► configure static route to reach network '192.168.0.0/16'
- #route del 0/0 gw IP►gateway remove static route
在虛擬機上Virtual Box
在筆電單機上
#ping:Packet Internet Groper
網際網路包探索器。網路檢測工具,透過發送 ICMP ECHO_REQUEST 的封包,檢查自己與特定設備之間的網路是否暢通,速度是否正常。
- #ping <host>►確認主機的存在,可輸入 hostname 或是 IP。例如:#ping 8.8.8.8 或 #ping google.com。
若上面只有 lo: 出現, 為網路不通, 請依序做: (每一步都用 ctrl-c 中斷)
- #ping 自己
- #ping 鄰居
- #nmap -sP 192.168.3.0/24
- #ping gateway
- #ping 8.8.8.8 ( google.com)
其中第三步應該要印出區網內所有鄰居。 以下是幾種常見的狀況:
- 如果看不到半個鄰居, 那多半是自己的問題。 例如網路線沒接好或插錯孔。
- 如果看得到 gateway 但連不到外界 (例如 google 的 DNS 伺服器 8.8.8.8), 而且鄰居們也是如此, 那多半是 gateway 對外連線有問題。
- 如果我看得到 gateway 但連不到外界; 可是別人卻看得到 gateway 也連得到外界, 那有可能是我的 IP 跟鄰居衝突了。 請先 ifconfig eth0 down 或 ifdown eth0 清除網卡舊的設定, 再換一個閒置的 IP 再試試看。 (見下方 「有線網卡, 固定 ip」。)
#ip(7,8)
- #ip addr show <nic>►顯示nic網路卡的ip位址。
- #ip route del 0/0►
- #ip link show►想要觀察 Linux 主機上面的網路卡有多少
#nmap -Network Mapper
# nmap [掃瞄類型] [掃瞄參數] [hosts 位址與範圍]
[掃瞄類型]:主要的掃瞄類型有底下幾種:
- -sT:掃瞄 TCP 封包已建立的連線 connect() !
- -sS:掃瞄 TCP 封包帶有 SYN 標籤的資料
- -sP:以 ping 的方式進行掃瞄
- -sU:以 UDP 的封包格式進行掃瞄
- -sO:以 IP 的協定 (protocol) 進行主機的掃瞄
[掃瞄參數]:主要的掃瞄參數有幾種:
- -PT:使用 TCP 裡頭的 ping 的方式來進行掃瞄,可以獲知目前有幾部電腦存活(較常用)
- -PI:使用實際的 ping (帶有 ICMP 封包的) 來進行掃瞄
- -p :這個是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式
[Hosts 位址與範圍]:這個有趣多了,有幾種類似的類型
- 192.168.1.100 :直接寫入 HOST IP 而已,僅檢查一部;
- 192.168.1.0/24 :為 C Class 的型態,
- 192.168.*.* :嘿嘿!則變為 B Class 的型態了!掃瞄的範圍變廣了!
- 192.168.1.0-50,60-100,103,200 :這種是變形的主機範圍啦!很好用吧!
範例1:使用預設參數掃瞄本機所啟用的 port (只會掃瞄 TCP)
- $nmap localhost
nmap 的用法很簡單吶!就直接在指令後面接上 IP 或者是主機名稱即可。不過,在預設的情況下 nmap 僅會幫你分析 TCP 這個通訊協定而已,像上面這個例子的輸出結果。但優點是順道也將開啟該埠口的服務也列出來了, 真是好! ^_^!那如果想要同時分析 TCP/UDP 這兩個常見的通訊協定呢?可以這樣做:
範例2:同時掃瞄本機的 TCP/UDP 埠口
- $nmap -sTU localhost
嘿嘿!與前面的範例比較一下,你會發現這次多了幾個 UDP 的埠口,這樣分析好多了!然後, 如果你想要瞭解一下到底有幾部主機活在你的網路當中時,則可以這樣做:
範例3:透過 ICMP 封包的檢測,分析區網內有幾部主機是啟動的
- $nmap -sP 192.168.1.0/24
看到否?鳥哥的環境當中有三部主機活著吶 (Host is up)!並且該 IP 所對應的 MAC 也會被記錄下來, 很不錯吧!如果你還想要將各個主機的啟動的 port 作一番偵測的話,那就得要使用:
- $nmap 192.168.1.0
請特別留意,這個 nmap 的功能相當的強大,也是因為如此,所以很多剛在練習的黑客會使用這個軟體來偵測別人的電腦。 這個時候請您特別留意,目前很多的人已經都有『特別的方式』來進行登錄的工作!例如以 TCP_Wrappers (/etc/hosts.allow, /etc/hosts.deny) 的功能來記錄曾經偵測過該 port 的 IP! 這個軟體用來『偵測自己機器的安全性』是很不錯的一個工具,但是如果用來偵測別人的主機, 可是會『吃上官司』的!特別留意!!
其他範例
- #nmap 192.168.1.21
- #nmap -PN 192.168.1.21
#netstat - 看本機網路連線與後門
如果你覺得你的某個網路服務明明就啟動了,但是就是無法造成連線的話,那麼應該怎麼辦? 首先你應該要查詢一下自己的網路介面所監聽的埠口 (port) 來看看是否真的有啟動,因為有時候螢幕上面顯示的 [OK] 並不一定是 OK 啊!
- #netstat -an►確認未被連接的連接埠。
# netstat -[參數]
- -r :列出路由表(route table),功能如同 route 這個指令;
- -n :不使用主機名稱與服務名稱,使用 IP 與 port number ,如同 route -n
- 與網路介面有關的參數:
- -a :列出所有的連線狀態,包括 tcp/udp/unix socket 等;
- -t :僅列出 TCP 封包的連線;
- -u :僅列出 UDP 封包的連線;
- -l :僅列出有在 Listen (監聽) 的服務之網路狀態;
- -p :列出 PID 與 Program 的檔名;
- -c :可以設定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網路狀態的顯示;
範例1:列出目前的路由表狀態,且以 IP 及 port number 顯示:
- $netstat -rn
- 其實這個參數就跟 route -n 一模一樣,對吧!這不是 netstat 的主要功能啦!
範例2:列出所有網路連線狀態,使用 IP 與 port number,列出 PID/Program Name
- $netstat -tup // show all active network connections and their PID
範例4:列出 "監聽中" 的TCP /UDP封包的連線,及對應的服務PID
- $netstat-tupl //show all network services listening on the system and their PID
netstat 的輸出主要分為兩大部分,分別是 TCP/IP 的網路介面部分,以及傳統的 Unix socket 部分。 還記得我們在基礎篇裡面曾經談到檔案的類型嗎?那個 socket 與 FIFO 檔案還記得吧? 那就是在 Unix 介面用來做為程式資料交流的介面了,也就是上頭表格內看到的 Active Unix domain sockets 的內容囉~
通常鳥哥都是建議加上『 -n 』這個參數的,因為可以避過主機名稱與服務名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當中, 我們先來談一談關於網路連線狀態的輸出部分,他主要是分為底下幾個大項:
Proto:該連線的封包協定,主要為 TCP/UDP 等封包;
Recv-Q:非由使用者程式連接所複製而來的總 bytes 數;
Send-Q:由遠端主機所傳送而來,但不具有 ACK 標誌的總 bytes 數, 意指主動連線 SYN 或其他標誌的封包所佔的 bytes 數;
Local Address:本地端的位址,可以是 IP (-n 參數存在時), 也可以是完整的主機名稱。使用的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差異。 如上所示,在 port 22 的介面中,使用的 :::22 就是針對 IPv6 的顯示,事實上他就相同於 0.0.0.0:22 的意思。 至於 port 25 僅針對 lo 介面開放,意指 Internet 基本上是無法連接到我本機的 25 埠口啦!
- Foreign Address:遠端的主機 IP 與 port number
- stat:狀態列,主要的狀態含有:
- ESTABLISED:已建立連線的狀態;
- SYN_SENT:發出主動連線 (SYN 標誌) 的連線封包;
- SYN_RECV:接收到一個要求連線的主動連線封包;
- FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
- FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
- TIME_WAIT:該連線已掛斷,但 socket 還在網路上等待結束;
- LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
基本上,我們常常談到的 netstat 的功能,就是在觀察網路的連線狀態了,而網路連線狀態中, 又以觀察『我目前開了多少的 port 在等待用戶端的連線』以及 『目前我的網路連線狀態中,有多少連線已建立或產生問題』最常見。 那你如何瞭解與觀察呢?通常鳥哥是這樣處理的:
範例5:秀出目前已經啟動的網路服務
- $netstat -tulnp
#iptables
- #iptables -F INPUT
- #iptables -F OUTPUT
- #iptables -F FORWARD
- #iptables -t nat -F
- 參考 : iptables的觀念與使用
#traceroutes:
檢查從你的電腦到網路另一端的主機是走的什麼路徑
- #traceroute google.com
#host : 查出某個主機名稱的 IP
這個指令可以用來查出某個主機名稱的 IP 喔!舉例來說,我們想要知道 tw.yahoo.com 的 IP 時,可以這樣做:
host [-a] hostname [server]
範例:列出 tw.yahoo.com 的 IP
- $host tw.yahoo.com
#nslookup:查詢 DNS 回應是否正常
- #nslookup google.com
#nmcli : 查詢所有系統的網路界面
- # nmcli connection show //查詢所有系統的網路界面
上面的 NAME 項目就是網路連線界面,而 DEVICE 就是剛剛查詢到的你的網路卡代號。通常網路界面名稱會與網路卡代號相同! 這樣在設定時比較不容易搞錯就是了。至於 UUID 則是裝置識別碼,基本上每個裝置的識別碼都不一樣才對。最終的 TYPE 當然就是乙太網路 (etherner) 囉。
- 停止界面運作: #nmcli connection down 界面名稱
- 刪除界面的方法: #nmcli connection delete 界面名稱
- 新增的方法: #nmcli connection add [type ethernet] [con-name eth0] [ifname eth0]
- 重新觀察界面的詳細設定: #nmcli connection show eth0
# nmcli connection show eth0 的內容
- connection.autoconnect [yes|no]:是否需要啟動這個網路界面
- ipv4.method [auto|manual]:取得的方式為自動或手動
- ipv4.addresses [IP/Netmask]:直接設定 IP 位址與子網路遮罩
- ipv4.gateway [GWIP]:設定 Gateway 的 IP 位址
- ipv4.dns [DNSIP]:設定 DNS server 的 IP 位址
網路硬體檢查: 使用 dmesg 跟 lspci
其他常用
- #rsync -av <host:dir1/> <dir2/>►讓 host的dir1 與 dir2 同步。
- #rsync -av <dir1/> <host:dir2/>►讓 dir1 與 host 的 dir2 同步。
- #scp <file> <host:>►將檔案 file 複製到 host 的 home下面。
- #scp <host:dir1/file> <dir2/>►將 host 的 dir1/file 複製到 dir2下面。
- #dhclient eth0►以dhcp模式啟用 'eth0'
- #pppoeconf►#pppoeconf 或 有些版本的指令是 #pppoe-setup 而不是 #pppoeconf; 總之先按 #pppoe 然後按一兩次 Tab 鍵, 系統會提示。
- echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing
- hostname
- host www.example.com lookup hostname to resolve name to ip address
- mii-tool eth0 show link status of 'eth0'
- ethtool eth0 show statistics of network card 'eth0'
- tcpdump tcp port 80 show all HTTP traffic
- iwlist scan show wireless networks
- iwconfig eth1 show configuration of a wireless network card
- whois www.example.com lookup on Whois database
參考資料
特色、摘要,Feature、Summary:
關鍵字、標籤,Keyword、Tag:
- Ubuntu,Linux,Network,
留言
張貼留言
Aron阿龍,謝謝您的留言互動!