網路基本指令


比較主流的版本, 例如 ubuntu 或 fedora, 都有圖形介面設定網路的工具。 比較陽春的版本, 例如 slax, 無線網路的設定可能要另外安裝套件, 例如 wlassistant

如果無法用圖形介面的工具設定上網, 最快的方法還是下指令自助。 請先變身為 root -- 在 debian 系列 (例如 ubuntu) 的版本裡, sudo bash 然後打自己的密碼; 在其他系列的版本裡 (例如 fedora/mandriva/slackware), su 然後打 root 的密碼。

Linux 有沒有抓到網卡?

第一步先查看 linux 是否有抓到您的硬體。 下 ifconfig -a 如果只出現 lo 一項, 就是沒偵測到網卡。 以我的 eeepc 為例, 正常應該至少偵測到 lo, eth0 (有線網卡), ath0 (無線網卡) 三項, 當然名稱也有可能略有不同。 如果沒有偵測到硬體, 就比較麻煩。 請用您的 linux 版本名稱及網卡晶片名稱上網搜尋。

如果有偵測到 lo 以外的名字, 請繼續。 以下的 eth99 請改用您所看到的真實網卡名稱取代。

連線

如果有偵測到網卡, 但網路卻不通, 請下 route -n 應該要看到至少兩列數字, 類似這樣:

    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    0.0.0.0         192.168.3.254   0.0.0.0         UG    0      0        0 eth0

如果有, 表示網路其實已正常連線; 可能只是沒設定 DNS。 請跳到下一節 「設定 DNS」。

如果 ifconfig -a 有出現 (例如) eth99, 但 route -n 卻沒有出現含有 eth99 的兩列數字, 那麼請按照您的連線環境, 挑一個方法設定連線:

自動取得 ip

若您的網路環境是自動取得 ip, 請下 dhclient eth99

有些版本的指令是 dhcpd 而不是 dhclient; 總之先按 dhc 然後按一兩次 Tab 鍵, 系統會提示。

固定 ip

若您的網路環境是固定 ip, 例如是 987.321.456.789 請下:

        ifconfig eth2 987.321.456.789 netmask 255.255.255.0
        route add default gw 987.321.456.254

其中 netmask 後面的數字, 及 gw 後面的數字, 可先用 windows 機器查出。

ADSL 撥接

若您的網路環境是 adsl, 請下 pppoeconf 或 有些版本的指令是 pppoe-setup 而不是 pppoeconf; 總之先按 pppoe 然後按一兩次 Tab 鍵, 系統會提示。

逐步回答問題, 包含帳號及密碼等等。 注意: 帳號要完整打出, 包含 @ 及後面一串, 像是 12345678@hinet.net 。 其他大多數問題如果看不懂, 可直接按 Enter 採用建議值。

關於 pppoe-setup 的補充: 在詢問 nameserver 時, 可考慮回答 "server"。 設定成功後, 按照 pppoe-setup 的指示, 用 pppoe-start 啟動連線。

無線網路

        iwlist eth99 scan # 先查詢附近有那些網路
        iwconfig eth99 essid 網路代號 mode managed key 網路密碼
        dhclient eth99

有些版本的指令是 dhcpd 而不是 dhclient; 總之先按 dhc 然後按一兩次 Tab 鍵, 系統會提示。

有些版本的 linux 提供 wlassistant 之類的圖形介面協助無線連線。 例如在我所製作的 「百毒不侵救命碟」 底下, 進入 slax 以後, 因為被我改成用 cyut 登入, 所以要用 cyut 的身份下: sudo wlassistant

一篇很棒的無線網路連線簡介文章: How to Configure Wireless on Any Linux Desktop 適用任何版本的 linux。 也請參考: 「用命令列設定無線網路」

設定 DNS

最後, 如果 route -n 看來正常, 但仍舊無法上網, 請在瀏覽器裡面打這個網址: 61.219.38.89 或這個網址: 203.66.88.89。 如果數字 ip 可以上網, 但文字 ip 不行, 那就是忘記設定 /etc/resolv.conf 請在這個檔案裡面加一句:

        nameserver 168.95.1.1

或把裡面的數字改成網路提供者給您的 DNS 網址。 nameserver 指令可以有好幾列。 請把回應速度快的 DNS 伺服器放前面。

自我約束上網速度

曾經因為下載大檔案而被室友抱怨嗎? 可以用 trickle 指令自我限制上網速度, 把頻寬留給別人, 快快惹人愛 哦!

區網裡還有那些電腦? 開了什麼服務?

有些時候會需要知道某個區域網路裡面還有那些其他電腦。 (例如懷疑你的固定 IP 被別人搶走了。) 比方說我從無線分享器取得網址 192.168.1.21 那麼可以下: nmap -sP 192.168.1.0/24 從 192.168.1.1 到 192.168.1.254 逐一查看每個 IP 是否已被使用。 這裡的 /24 表示前面 24 個 bit 固定; 後面 8 個 bits 從 0 變化到 255 逐一檢查每個 ip。 (當然, 扣除 .0 和 .255 之類的例外 ip) 所以這個指令會列出 192.168.1.1 到 192.168.1.254 之間, 已被佔用的 ip 位址。

如果進一步想知道某一部電腦到底開啟了那些服務呢? nmap 192.168.1.21 會列出 192.168.1.21 這部機器所開啟的服務。 如果 nmap 回報該電腦未上線, 也可試打 nmap -PN 192.168.1.21 不論是否上線, 就是要強制檢查; 當然, 這樣會花比較久的時間。 請拿兩部電腦互相測試。 試著在一部機器上停止/重新啟動某些服務 (例如 apache 網頁伺服器), 然後從另一部機器回頭檢驗。

有一次我用 slax 開機, 透過 hinet 浮動 ip 上網, 並且想從其他電腦連線進去看它的網頁, 結果一直連不上。 當初這部 slax 電腦與其他電腦一起躲在 192.168.1.* 的區域網路裡面的時候, 明明別人就可以看得見它的網頁服務呀; 為什麼改用 hinet 的浮動 ip 就不行了呢? 用上述指令測試一下, 發覺所有服務都被關掉了。 後來才發現: 原來 slax 內建防火牆。 於是按照 論譠的建議:

	iptables -F INPUT
	iptables -F OUTPUT
	iptables -F FORWARD
	iptables -t nat -F

再重新測試一次, 防火牆果然就卸除下來了。 也請搜尋 linux disable firewall。

參考資料

更多參考資料, 請用文中指令及關鍵詞搜尋。

  1. Diagnose and fix network problems yourself