# ethtool eth0
# 顯示以太網(wǎng)狀態(tài)(replaces mii-diag)
# ethtool -s eth0 speed 100 duplex full
# 把網(wǎng)卡 eth0 速度改為 100兆/秒,采用全雙工
# ethtool -s eth0 autoneg off
# 禁用自動協(xié)商模式
# ethtool -p eth1
# 閃爍網(wǎng)絡(luò)接口 LED 燈 - 如果支持的話,非常實用
# ip link show
# 在 Linux 上顯示所有網(wǎng)絡(luò)接口(同 ifconfig 類似)
# ip link set eth0 up
# 使設(shè)備激活(或Down掉)。同 "ifconfig eth0 up"
# ip addr show
# 在 Linux 上顯示所有 IP 地址(與 ifconfig 類似)
# ip neigh show
# 與 arp -a 類似
# ifconfig fxp0
# 查看 "media" 字段(FreeBSD)
# arp -a
# 查看路由(或主機) ARP 條目(所有系統(tǒng))
# ping cb.vu
# 第一個要試的事情...
# traceroute cb.vu
# 列印到目的地的路由路徑
# ifconfig fxp0 media 100baseTX mediaopt full-duplex
# 100兆/秒 全雙工(FreeBSD)
# netstat -s
# 對每個網(wǎng)絡(luò)協(xié)議做系統(tǒng)級分析
另一些命令,雖然不總是默認(rèn)安裝,但很好找:
# arping 192.168.16.254
# 在網(wǎng)絡(luò)層上 Ping
# tcptraceroute -f 5 cb.vu
# 使用 tcp 替換 icmp 來跟蹤,透過防火墻
# route -n
# Linux 或使用 "ip route"
# netstat -rn
# Linux, BSD 和 UNIX# route print
# Windows
# route add 212.117.0.0/16 192.168.1.1
# route delete 212.117.0.0/16
# route add default 192.168.1.1
永久的添加路由可在 /etc/rc.conf 配置文件中設(shè)置
static_routes="myroute"
route_myroute="-net 212.117.0.0/16 192.168.1.1"
# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254
# ip route add 192.168.20.0/24 via 192.168.16.254
# 等同于上面命令# route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0
# route add default gw 192.168.51.254
# ip route add default via 192.168.51.254 dev eth0
# 等同于上面命令
# route delete -net 192.168.20.0 netmask 255.255.255.0
# route add -net 192.168.20.0 -netmask 255.255.255.0 192.168.16.254
# route add default 192.168.51.254 1
# 1 = 通過此路由跳數(shù)減 1
# route change default 192.168.50.254 1
永久條目配置在 /etc/defaultrouter
中。
# Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253
# Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254
使用 add -p
來是路由設(shè)置永久有效。
# ifconfig eth0 192.168.50.254 netmask 255.255.255.0
# 第一個 IP
# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0
# 第二個 IP
# ip addr add 192.168.50.254/24 dev eth0
# 等價命令
# ip addr add 192.168.51.254/24 dev eth0 label eth0:1
# ifconfig fxp0 inet 192.168.50.254/24
# 第一個 IP
# ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0
# 第二個 IP
永久條目設(shè)置在 /etc/rc.conf 中
ifconfig_fxp0="inet 192.168.50.254 netmask 255.255.255.0"
ifconfig_fxp0_alias0="192.168.51.254 netmask 255.255.255.0"
用 ifconfig -a
命令檢查設(shè)置
# ifconfig hme0 plumb
# 啟用網(wǎng)卡
# ifconfig hme0 192.168.50.254 netmask 255.255.255.0 up
# 第一個 IP
# ifconfig hme0:1 192.168.51.254 netmask 255.255.255.0 up
# 第二個 IP
通常在你更改之前先停下網(wǎng)絡(luò)接口。不要告訴我為什么你想改變 MAC 地址......
# ifconfig eth0 down
# ifconfig eth0 hw ether 00:01:02:03:04:05
# Linux
# ifconfig fxp0 link 00:01:02:03:04:05
# FreeBSD
# ifconfig hme0 ether 00:01:02:03:04:05
# Solaris
# sudo ifconfig en0 ether 00:01:02:03:04:05
# Mac OS X Tiger
# sudo ifconfig en0 lladdr 00:01:02:03:04:05
# Mac OS X Leopard
對于 Windows 已經(jīng)有許多工具了。像 etherchange?;蛘呖纯?"Mac Makeup", "smac"。
監(jiān)聽打開的端口:
# netstat -an | grep LISTEN
# lsof -i
# 列出所有因特網(wǎng)連接(Linux)
# socklist
# 列出打開的 socket (Linux)
# sockstat -4
# 使用 socket 的應(yīng)用程序列表(FreeBSD)
# netstat -anp --udp --tcp | grep LISTEN
# Linux
# netstat -tup
# 列出活躍的連接(Linux)
# netstat -tupl
# 列出系統(tǒng)中正在監(jiān)聽的端口(Linux)
# netstat -ano
# Windows
檢查正在運行的防火墻(只是典型配置):
# iptables -L -n -v
# 狀態(tài)信息Open the iptables firewall
# iptables -P INPUT ACCEPT
# 打開所有
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -Z
# 把所有鏈的包及字節(jié)的計數(shù)器清空
# iptables -F
# 清空所有鏈
# iptables -X
# 刪除所有鏈
# ipfw show
# 狀態(tài)信息
# ipfw list 65535
# 如果顯示 "65535 deny ip from any to any",那防火墻已被禁用
# sysctl net.inet.ip.fw.enable=0
# 禁用# sysctl net.inet.ip.fw.enable=1
# 啟用
查看然后啟用 IP 轉(zhuǎn)發(fā):
# cat /proc/sys/net/ipv4/ip_forward
# 查看 IP 轉(zhuǎn)發(fā) 0=禁用, 1=啟用
# echo 1 > /proc/sys/net/ipv4/ip_forward
或者編輯 /etc/sysctl.conf:
net.ipv4.ip_forward = 1
查看并啟用:
# sysctl net.inet.ip.forwarding
# 查看 IP 轉(zhuǎn)發(fā) 0=禁用, 1=啟用
# sysctl net.inet.ip.forwarding=1
# sysctl net.inet.ip.fastforwarding=1
# 專用路由器或防火墻Permanent with entry in /etc/rc.conf:
gateway_enable="YES"
# 如果主機是網(wǎng)關(guān)則設(shè)置為 YES。
# ndd -set /dev/ip ip_forwarding 1
# 查看 IP 轉(zhuǎn)發(fā) 0=禁用, 1=啟用
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 激活 NAT# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT \
--to 192.168.16.44:22
# 轉(zhuǎn)發(fā)端口 20022 到內(nèi)部 IP 端口(ssh)# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT \
--to 192.168.16.254:993:995
# 轉(zhuǎn)發(fā) 993-995 范圍端口
# ip route flush cache
# iptables -L -t nat
# 查看 NAT 狀態(tài)信息
使用 -D 替換 -A 來刪除端口轉(zhuǎn)發(fā)。
# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0
Or edit /etc/rc.conf with:
firewall_enable="YES"
# 設(shè)置 YES 來啟用防火墻功能firewall_type="open"
# 防火墻類型(看 /etc/rc.firewall)natd_enable="YES"
# 啟用 natd (如果 firewall_enable == YES)。natd_interface="tun0"
# 公共的網(wǎng)絡(luò)接口或要使用的 IP 地址。natd_flags="-s -m -u -dynamic -f /etc/natd.conf"
端口轉(zhuǎn)發(fā):
# cat /etc/natd.conf
same_ports yes
use_sockets yes
unregistered_only
# redirect_port tcp insideIP:2300-2399 3300-3399
# 端口范圍redirect_port udp 192.168.51.103:7777 7777
在 unix 上,對于所有的網(wǎng)絡(luò)接口的 DNS 條目都存儲在 /etc/resolv.conf 文件中。主機域也儲存在這個文件中。最小化配置如下:
nameserver 78.31.70.238
search sleepyowl.net intern.lab
domain sleepyowl.net
檢查系統(tǒng)域名:
# hostname -d
# 等同于 dnsdomainname
在 Windows 上,DNS 配置于每個網(wǎng)絡(luò)接口。要顯示配置的 DNS 和清空 DNS 緩存可是使用:
# ipconfig /?
# 顯示幫助
# ipconfig /all
# 顯示所有信息包括 DNS
# ipconfig /flushdns
# 清除 DNS 緩存
Dig 是你測試 DNS 設(shè)置的好朋友。舉個例子,用于測試的 DNS 服務(wù)器為 213.133.105.2 ns.second-ns.de
。查看哪個服務(wù)器客戶端接收應(yīng)答(簡單應(yīng)答).
# dig sleepyowl.net
sleepyowl.net. 600 IN A 78.31.70.238
;; SERVER: 192.168.51.254
#53(192.168.51.254)
路由器 192.168.51.254 應(yīng)答了,并返回了一條 A 條目(記錄)。任何條目都可查詢,DNS 服務(wù)器可用 @ 來選定:
# dig MX google.com
# dig @127.0.0.1 NS sun.com
# 測試本地服務(wù)器# dig @204.97.212.10 NS MX heise.de
# 查詢外部# dig AXFR @ns1.xname.org cb.vu
# 查看區(qū)傳送(zone transfer)
程式 host 也很強大。
# host -t MX cb.vu
# 獲取郵件 MX 記錄# host -t NS -T sun.com
# 通過 TCP 連接獲取 NS 記錄# host -a sleepyowl.net
# 獲取所有
查找屬于一個 IP 地址(in-addr.arpa.)的域名??捎?nbsp;dig
, host
和 nslookup
命令查詢:
# dig -x 78.31.70.238
# host 78.31.70.238
# nslookup 78.31.70.238
單個主機可以配置于文件 /etc/hosts 來代替本地正在運行的 named
反向域名查詢。格式很簡單,舉個例子:
78.31.70.238 sleepyowl.net sleepyowl
對于 hosts 文件和 DNS 查詢之間的優(yōu)先級,可在 /etc/nsswitch.conf
和 /etc/host.conf
中配置 order 名稱解析。這個文件同樣存在于 Windows 上,通常在:
C:\WINDOWS\SYSTEM32\DRIVERS\ETC
一些發(fā)行版(SuSE)使用 dhcpcd 作為客戶端。默認(rèn)網(wǎng)絡(luò)接口是 eth0。
# dhcpcd -n eth0
# 觸發(fā)更新(并不總是可以工作)
# dhcpcd -k eth0
# 釋放并關(guān)閉
租約(lease)的全部信息存儲在:
/var/lib/dhcpcd/dhcpcd-eth0.info
FreeBSD (和 Debian) 使用 dhclient
。要配置一個網(wǎng)絡(luò)接口(如:bge0)運行:
# dhclient bge0
租約(lease)的全部信息存儲在:
/var/db/dhclient.leases.bge0
使用
/etc/dhclient.conf
設(shè)置 prepend 選項或強制不同的選項:
# cat /etc/dhclient.conf
interface "rl0" {
prepend domain-name-servers 127.0.0.1;
default domain-name "sleepyowl.net";
supersede domain-name "sleepyowl.net";
}
dhcp 租約(lease)使用 ipconfig
來更新:
# ipconfig /renew
# 更新所有適配器# ipconfig /renew LAN
# 更新名叫 "LAN" 的適配器# ipconfig /release WLAN
# 釋放名叫 "WLAN" 的適配器
是的,這是一個使用簡單名稱重新命名你的適配器的好主意!
Bmon 是一個小的流量監(jiān)控控制臺,而且可以顯示不同的網(wǎng)絡(luò)接口的流量。
# tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\)
# tcpdump -l > dump && tail -f dump
# 緩沖輸出# tcpdump -i rl0 -w traffic.rl0
# 把數(shù)據(jù)報文寫入二進(jìn)制文件
# tcpdump -r traffic.rl0
# 從文件讀取數(shù)據(jù)報文(也可以使用 ethereal)
# tcpdump port 80
# 兩個經(jīng)典命令# tcpdump host google.com
# tcpdump -i eth0 -X port \(110 or 143\)
# 查看端口 110(POP) 或 143(IMAP)的數(shù)據(jù)報文
# tcpdump -n -i eth0 icmp
# 只捕獲 ping
# tcpdump -i eth0 -s 0 -A port 80 | grep GET
# -s 0 為全部包, -A 為 ASCII
另一些重要選項:
-A
顯示每個包清晰文本(除了報頭)
-X
顯示包的 ASCII 文本
-l
使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式
-D
顯示所有可用網(wǎng)絡(luò)接口對于 Windows 可以使用 www.winpcap.org。使用 windump -D 來列出網(wǎng)絡(luò)接口。
Nmap 是一個用于 OS 探測的端口掃描工具,她通常在許多發(fā)行版上有安裝,并且同樣可用于 Windows。如果你不掃描你的服務(wù)器,駭客們會為你做這些...
# nmap cb.vu
# 掃描主機上所有保留的 TCP 端口
# nmap -sP 192.168.16.0/24
# 找出在 0/24 上主機所使用的 IP
# nmap -sS -sV -O cb.vu
# 做秘密 SYN 掃描來探測系統(tǒng)和系統(tǒng)服務(wù)的版本信息
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0)
25/tcp open smtp Sendmail smtpd 8.13.6/8.13.6
80/tcp open http Apache httpd 2.0.59 ((FreeBSD) DAV/2 PHP/4.
[...]
Running: FreeBSD 5.X
Uptime 33.120 days (since Fri Aug 31 11:41:04 2007)
其他非標(biāo)準(zhǔn)但好用的工具有 hping
(www.hping.org),她是一個 IP 分組組裝/分析器,和 fping
(fping.sourceforge.net)。fping 可以在一個循環(huán)隊列(round-robin fashion)中掃描多種主機。
流量控制管理著一個網(wǎng)絡(luò)的隊列、流量監(jiān)控、調(diào)度以及其他流量設(shè)置(traffic parameters)。以下簡單實用的示例使用 Linux 和 FreeBSD 的能力來更好的利用帶寬。
DSL 或有線調(diào)制解調(diào)器有一個很長的列隊來提高上傳吞吐量(upload throughput)。然而用一個快速的設(shè)備(如以太網(wǎng))填充這個列隊將大大減少交互性。這就是限制設(shè)備上傳速度有用的原因,以匹配調(diào)制解調(diào)器的實際能力,這可以有效提高交互性。設(shè)置大約為 modem 最大速度的 90%。
給 512K 上傳速度的 modem。
# tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540
# tc -s qdisc ls dev eth0
# 狀態(tài)
# tc qdisc del dev eth0 root
# 刪除隊列
# tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540
FreeBSD 使用 dummynet
來控制帶寬,其配置工具為 ipfw。Pipe 用來設(shè)置限制帶寬的單位[K|M]{比特/秒|字節(jié)/秒},0 意味著沒有限制。使用同樣的 pipe 數(shù)字可重新配置它。舉個例子,限制上傳帶寬為 500K。
# kldload dummynet
# 如有必要加載這個模塊# ipfw pipe 1 config bw 500Kbit/s
# 創(chuàng)建一個帶寬限制的 pipe# ipfw add pipe 1 ip from me to any
# 轉(zhuǎn)移所有上傳進(jìn)入這個 pipe
使用 tc
的優(yōu)先級隊列來優(yōu)化 VoIP。在 voip-info.org 或 www.howtoforge.com 上可以看到完整的例子。假設(shè) VoIP 使用 UDP 端口 10000:11024 并且使用 eth0 設(shè)備(也可為 ppp0 或 so)。下列命令定義了三個隊列,并且用 QoS 0x1e
(設(shè)置所有位) 強制 VOIP 流量到隊列 1。默認(rèn)流量流入隊列 3,Qos Minimize-Delay 流入隊列 2。
# tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0
# tc qdisc add dev eth0 parent 1:1 handle 10: sfq
# tc qdisc add dev eth0 parent 1:2 handle 20: sfq
# tc qdisc add dev eth0 parent 1:3 handle 30: sfq
# tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \
match ip dport 10000 0x3C00 flowid 1:1 # 使用服務(wù)端端口范圍
match ip dst 123.23.0.1 flowid 1:1 # 或/和使用服務(wù)器 IP
狀態(tài)和移除:
# tc -s qdisc ls dev eth0
# queue status# tc qdisc del dev eth0 root
# delete all QoS
用你所計算的端口掩碼來定義 tc 過濾器的端口范圍。查詢 2^N 端口范圍結(jié)尾,推斷范圍并轉(zhuǎn)換成十六進(jìn)制。這就是你的掩碼 (mask)。例如 10000 -> 11024,它的范圍是 1024。
# 2^13 (8192) < 10000 < 2^14 (16384)
# 結(jié)尾是 2^14 = 16384# echo "obase=16;(2^14)-1024" | bc
# 掩碼是 0x3C00
假設(shè)最大連接帶寬為 500Kbit/s,我們使用優(yōu)先級 100:10:1 定義 3 個隊列給 VoIP:ssh:剩余所有。
# ipfw pipe 1 config bw 500Kbit/s
# ipfw queue 1 config pipe 1 weight 100
# ipfw queue 2 config pipe 1 weight 10
# ipfw queue 3 config pipe 1 weight 1
# ipfw add 10 queue 1 proto udp dst-port 10000-11024
# ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 # 或/和使用服務(wù)器 IP# ipfw add 20 queue 2 dsp-port ssh
# ipfw add 30 queue 3 from me to any # 剩余所有
狀態(tài)和移除:
# ipfw list
# 規(guī)則信息
# ipfw pipe list
# 管道信息
# ipfw flush
# 刪除除默認(rèn)外所有規(guī)則
一些可工作在已配置好的 NIS 客戶端上的命令:
# ypwhich
# 獲取提供 NIS 服務(wù)的服務(wù)器名
# domainname
# 已配置的 NIS 域名
# ypcat group
# 列印 NIS 映射 group
# cd /var/yp && make
# 重建 yp 數(shù)據(jù)庫
ypbind 正在運行嗎?
# ps auxww | grep ypbind
/usr/sbin/ypbind -s -m -S servername1,servername2
# FreeBSD/usr/sbin/ypbind
# Linux# yppoll passwd.byname
Map passwd.byname has order number 1190635041. Mon Sep 24 13:57:21 2007
The master server is servername.domain.net.
# cat /etc/yp.conf
ypserver servername
domain domain.net broadcast
更多建議: