2010年1月10日

Ubuntu Linux 最佳化網路卡 MTU 與關掉 IPv6

這篇可能需要稍微要有 TCP / IP 與 OSI 七層模型的基礎,還有網路傳輸基本概念,可能才會比較清楚自己在改些什麼。

sudo ifconfig eth0 mtu 9000
# 修改 eth0 網卡的 MTU 為 9000

ping -c 1 -s -M do
# -M do 在 ICMP 上標示不要 Fragmentation。路由器就不會切割封包
# -s 參數為 ICMP payload 大小,值為 MTU 剪掉 ICMP 表頭大小 28
# 若 MTU 大小為 1500 則 payload byte 就是 1472

將 MTU 值寫入開機設定檔
sudo vi /etc/network/interfaces # 編輯網路設定檔
iface eth0 inet static # 設定 eth0 網路卡為固定 IP
pre-up /sbin/ifconfig eth0 mtu 9000 # 設定 eth0 MTU
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254

iface eth1 inet dhcp # 設定 eth1 網路卡為 DHCP
pre-up /sbin/ifconfig eth1 mtu 9000 # 設定 eth1 MTU

關閉 IPv6 支援
sudo vi /etc/modprobe.d/blacklist
加入 blacklist ipv6 即可

Ubuntu Linux 網路相關指令速記

/etc/network/interfaces
# 設定 IP, netmask, Gateway 或使用 DHCP 網路組態

/etc/hostname
# 主機名稱設定

/etc/resolv.conf
# 設定 DNS 伺服器和本機的網域名稱或網域查詢列表

/etc/hosts
# 建立靜態主機名稱與 IP 對應

sudo apt-get install network-manager-gnome
# 安裝圖形化網路管理介面 ( Gnome )

sudo apt-get install knetworkmanager
# 安裝圖形化網路管理介面 ( KDE )

netstat
# -a 列出所有連線,包含 TCP、UDP 和 Socket 通訊
# -l 列出主機在 Listen 的連線,通常為伺服器軟體
# -n 列出 netstat 時不做 IP 反查,速度較快
# -p 列出使用該連線的軟體名稱和 PID
# -t 列出 TCP 連線
# -u 列出 UDP 連線

ifconfig
# option: netmask, broadcast, mtu, IP address
# add UP or DOWN to enable or disable interface
# ifconfig eth0 hw ether AA:BB:CC:11:22:33 to change MAC address

sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0
# 設定固定 IP 與子網路遮罩

sudo route add default gw 192.168.1.254
# 設定預設閘道

route -n
sudo route del -net 0.0.0.0 gw 192.168.0.1
route -n
sudo route add -net  default gw 192.168.0.1 dev eth0
route -n
# 移除並新增路由表範例

sudo dhclient eth0
# 在網卡 eth0 上取得 IP, netmask, gateway and DNS

sudo vi /etc/network/interfaces # 設定網路範例

auto lo # 啟用 Loopback 設備。請勿變更!
iface lo inet loopback # 啟用 Loopback 設備。請勿變更!

auto eth0 # 啟用 eth0 網路卡
auto eth1 # 啟用 eth1 網路卡

iface eth0 inet static # 設定 eth0 網卡為固定 IP
address 192.168.1.1 # 設定 IP 位置
netmask 255.255.255.0 # 設定子網路遮罩
gateway 192.168.1.254 # 設定預設閘道
network 192.168.1.0 # 設定網路,可有可無
broadcast 192.168.1.255 # 設定廣播,可有可無

iface eth1 inet dhcp # 設定 eth1 網卡從 DHCP Server 取得 IP

sudo /etc/init.d/networking restart
# 重新啟用網路介面

sudo ifdown eth0
# 關閉 eth0 裝置

sudo ifup eth0
# 啟用 eth0 裝置並從 interfaces 讀取設定檔

sudo vi /etc/resolv.conf 編輯 resolv.conf 設定檔


nameserver 8.8.8.8 # 第一台 DNS 主機
nameserver 8.8.4.4 # 第二台 DNS 主機

search yzu.edu.tw edu.tw
# 網域優先搜尋。假設 ping www 或連線 www 則會自動嘗試 DNS 正解 www.yzu.edu.tw,若存在則直接回傳 IP 位置,若不存在則再嘗試 www.edu.tw。故連線同網域主機常常用到。缺點是若要連線 www.gmail.com 則首先會嘗試 DNS 正解 www.gmail.com.yzu.edu.tw,然後依序查詢下去,導致效能低落。

domain yzu.edu.tw
# 用法幾乎與 search 一樣,不過他只能設定一個,也就是主機本身的網域,不能含有其他。查詢的規則和 search 一樣,會把查詢的網址加上 domain 後所設定的網域,最後才會查詢到您的網址。

sudo vi /etc/hostname
# 設定主機名稱

sudo hostname -F /etc/hostname
# 立即更新系統 hostname

hostname -f
# 查詢系統的 FQDN ( 出錯時通常為 hosts 或 resolv.conf 沒設定好 )

Ubuntu Linux 無線網路設定筆記

Ubuntu Desktop 中的圖形化介面設定無線網路已十分完善,本篇將著重於 console 下如何設定無線網路。

iwconfig
# 測試無線網路是否成功驅動

lspci
# 查詢無線網路晶片組

iwconfig wlan0 txpower on
# 開啟無線網路電源

sudo iwlist eth0 scanning
# 查詢可用的無線網路


sudo iwconfig eth0 up
sudo iwconfig eth0 essid key 12345678
# 啟用 eth0 無線網卡,12345678 為 WEP 密碼

sudo dhclient eth0
# 透過 DHCP 自動取得 IP

sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0 # 設定 IP 與 netmask
sudo route add default gw 192.168.0.254 # 設定預設閘道


vi /etc/network/interfaces # 直接設定無線網路組態到 interfaces
auto eth0 # 啟用無線網路
iface eth0 inet static # 設定 eth0 為固定 IP 若要自動取得請改成 dhcp
wireless-essid # 設定無線網路名稱
wireless-key # 設定無線網路密碼
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1

若要使用 DHCP 則最下面三行可省略。

Ubuntu Linux 透過 ADSL 上網

目前 Ubuntu 的最新發行版 9.10 圖形化介面中的 DSL 撥號程式仍然有 BUG
使用 console 來撥號是唯一使用 ADSL 連線上網的方法。

sudo pppoeconf
# 文字介面 ADSL PPPOE 撥號連線

plog
# 查詢 PPPOE 狀態

sudo poff
# 中斷 PPPOE 連線

sudo pon dsl-provider
# 啟用 PPPOE 連線

Ubuntu Linux 簡單的 Shell 環境變數設定

看完書才知道 Shell 的博大精深與變幻莫測阿,這邊只是一個小小設定的紀錄,更多的詳細用法是無法在一篇文章內說完的,去買書吧XD"

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# Ubuntu Linux 預設環境變數

echo $PS1
# 印出 PS1 環境變數 ( \u 表示 username \h 表示 hostname \w 表示 folder )

PS1='\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\]:\[\033[1;31m\]\w\[\033[1;36m\]\$ \[\033[0m\]'

# 彩色 PS1 環境變數 ( 因排版限制,本處中間無斷行 )

vi ~/.bashrc or vi /home/user/.bashrc
# 編輯個人的 bashrc 可使每次打開 shell 都自動定義好色彩

Ubuntu Linux 變更 console 解析度與中文檔名支援

sudo vi /boot/grub/menu.lst
# 編輯 Grub 設定檔
title           Ubuntu, kernel 2.6.18-30
root            (hd0,1)
kernel          /vmlinuz-2.6.18-30
root=/dev/hda3 ro quiet splash vga=0x31B
initrd          /initrd.img-2.6.18-30 savedefault
boot
將 kernel 最後方的 0x31B 修改為 framebuffer 的代碼,重開機後的 console 解析度就會生效囉

sudo vi /etc/default/grub
# 若為 grub2 則須修改此檔案中的 GRUB_GFXMODE=640x480 變數
# 更改完記得 sudo update-grub 來更新設定檔案

sudo apt-get install jfbterm
# 安裝 UTF-8 中文 console 支援

jfbterm
# 執行

Ubuntu Linux 調整 IDE 裝置的效能

本篇只適用於 IDE 裝置,SATA 或 SCSI 預設已經開啟 DMA 加速。

sudo hdparm /dev/hda
# 取得硬碟組態
# -m multcount 每一次 I/O 動作可以掃描的磁區多寡。通常設為 -m16 以取得最佳效能。而 -m0 為停用
# -c IO_support 預設是 16 位元傳輸 -c0 32 位元非同步傳輸是 -c1 同步傳輸參數是 -c3
# -d using_dma 一定要開!-d0 關閉。-d1 開啟
# -X UDMA 額外參數。ATA33 是 -X66 ATA66 是 -X68 ATA100 是 -X69
# -t cache 讀取測試。測試硬碟從快取讀取資料的速度,通常會比 -T 快很多很多,通常是實體匯流排的速度。
# -T 硬碟讀取測試。測試硬碟真正讀取資料速度。
# -i 硬碟組態資訊。顯示詳細硬碟組態設定。

sudo hdparm -tT /dev/hda
# 測試硬碟效能

sudo hdparm -c1 -m16 -d1 -X69 /dev/hda
# 設定新參數並測試效能

sudo vi /etc/hdparm.conf
# 編輯硬碟參數設定檔 ( 設定完重開機才會生效 )
#/dev/cdroms/cdrom0 {
#       dma = on
#       interrupt_unmask = on
#       io32_support = 0
#}

#/dev/hda {
#       mult_sect_io = 16
#       write_cache = off
#       dma = on
#}

#command_line {
#       hdparm -q -m16 -q -W0 -q -d1 /dev/hda
#}

sudo /etc/init.d/hdparm restart
# 立即重新啟用 haparm

搜尋此網誌