linux網絡基礎linux
學習linux,網絡基礎尤其關鍵,這是架設服務器的根基,沒有網絡,就沒有服務。windows
簡單介紹下網絡經常使用的命令centos
ifconfig:傳統的配置網絡接口的命令服務器
route:主要是配置路由功能網絡
ip:集成了網絡接口和路由配置,建議使用這個命令dom
hostname:設置主機名socket
ping:測試網絡的連通性xss
host:dns信息查詢tcp
nslookup:dns解析查詢ide
tcpdump:抓包工具,相似wireshark
netstat:查看網絡鏈接狀態
ss:查看網絡鏈接狀態,推薦使用
網絡屬於內核的功能,網卡信息內核識別的。
網卡命名
網卡在centos6命名規則的配置文件:
/etc/udev/rules.d/70-persistent-net.rules7
能夠在這裏修改網卡的名字:
ip地址:
私有地址:
A類10.0.0.0/8
B類172.16.0.0/16-172.31.0.0/16
C類 192.168.0.0/24-192.168.255.0/24
A類: 255.0.0.0, 8:
0 000 0001 - 0 111 1111
127個A類,127用於迴環,1-126
2^7-1個A類
容納多少個主機:2^24-2
主機位全0:網絡地址
主機位全1:廣播地址
B類:255.255.0.0, 16
10 00 0000- 10 11 1111
128-191
129.1.0.0.
130.1.0.0
64個B類,2^14個B類網
容納多少個主機:2^16-2
C類:255.255.255.0, 24
110 0 0000 - 110 1 1111
192-223
32個C類, 2^21個C類網
容納多個少個主機:2^8-2
D類:
1110 0000 - 1110 1111
224-239
E類:
240-255 用於科學實驗
169.254.0.0
上面這個是當dhcp沒有生效以後會自動隨機獲取的地址,是ICANN組織預留的,和本地私有Ip地址同樣(windows)
網絡服務腳本:
Usage: /etc/init.d/network {start|stop|status|restart|reload|force-reload}
網絡配置文件:
網絡功能配置文件:
/etc/sysconfig/network
NETWORKING=yes #是否開啓網絡功能
HOSTNAME=localhost.localdomain #主機名
網卡配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=: 關聯的設備名稱,要與文件名的後半部「INTERFACE_NAME」保持一致;
BOOTPROTO={static|none|dhcp|bootp}: 引導協議;要使用靜態地址,使用static或none;dhcp表示使用DHCP服務器獲取地址;
IPADDR=: IP地址
NETMASK=:子網掩碼
GATEWAY=:設定默認網關;
ONBOOT=:開機時是否自動激活此網絡接口;
HWADDR=: 硬件地址,要與硬件中的地址保持一致;可省;
USERCTL={yes|no}: 是否容許普通用戶控制此接口;
PEERDNS={yes|no}: 是否在BOOTPROTO爲dhcp時接受由DHCP服務器指定的DNS地址;
DNS1= : dns服務器地址,也能夠配置在這裏
DNS2=
域名配置文件:
/etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
例子:
[root@localhost ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
路由配置文件:
/etc/sysconfig/network-scripts/route-ethX
默認是沒有的,須要手動新建文件
注意:1 .對應的網絡nexthop必定要是這個ethX對應接口IP的網絡,否則沒法生效
2.因爲默認網關是當配置ip的時候則會生效,假如2個接口,兩個網關,建議
route add default gw nexthop #來手動指定
或者是一個接口不要設置網關便可
添加格式一:
DEST via NEXTHOP
例子
[root@localhost network-scripts]# vi route-eth0
default via 192.168.80.2
192.168.10.0/24 via 172.16.0.1
添加格式二:
ADDRESS0=
NETMASK0=
GATEWAY0=
例子:
[root@localhost network-scripts]# vi route-eth0
ADDRESS0=192.168.20.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.80.100
ifconfig
ifconfig命令
功能:配置網絡接口ip,mtu等相關網卡信息
語法:
ifconfig [ethX]
ifconfig ethX IP/MASK [up|down]
配置的ip地址當即生效,可是重啓則失效
192.168.1.1/24
192.168.1.1/255.255.255.0
經常使用的選項
--a: 顯示全部接口的配置住處
默認是up的網絡接口
設置虛擬輔助網卡:
ifconfig eth0:1 192.168.1.1/24 up
刪除虛擬輔助網卡
ifconfig eth0:1 down
例子:
1.顯示開啓的網卡up
ifconfig
2.顯示全部的網卡
ifconfig –a
3顯示特定的網卡
ifconfig eth0
4.設置網卡ip地址
ifconfig eth0 192.168.1.1/24 up
ifconfig eth0 192.168.1.10/255.255.255.0 up
route
route命令
功能:配置和查看路由(臨時生效)
語法:
查看路由 route –n
添加路由 route add {-host|-net} DEST gw NEXT-HOP [dev ethX]
刪除路由 route del {-host|-net} DEST
其中default == 0.0.0.0/0
例子:
1.查看路由
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
2.添加主機路由
[root@localhost ~]# route add -host 192.168.10.8 gw 172.16.0.1
3.添加網絡路由
[root@localhost ~]# route add -net 192.168.100.0/24 gw 172.16.0.1 dev eth1
4.添加默認路由
[root@localhost ~]# route add default gw 192.168.80.2
5.刪除主機路由,網絡路由和默認路由
[root@localhost ~]# route del default
[root@localhost ~]# route del -host 192.168.10.8
[root@localhost ~]# route del -net 192.168.100.0
[root@localhost ~]# route del -net 192.168.100.0/24
ip
ip命令
功能:集成ifconfig和route的功能
語法:
ip [ OPTIONS ] OBJECT { COMMAND | help }
經常使用object:
link:網絡接口屬性
addr:協議地址
route:路由
link
show
ip [–s]link show [dev] #顯示接口統計信息
set
ip link set dev [up|down] #啓動關閉接口
ip link set dev mtu length #設置接口IP的mtu大小,以太網要小於1500
ip link set dev name devname #設置dev的名字
注意:修改網卡名字,須要先關閉網卡,修改完成,重啓
addr
add
ip addr add ADDRESS dev DEV
broadcast {地址|+} #+是有系統根據這個設置自行計算
若是不指定,則廣播地址爲全0
label name 設備設置一個別名,例如eth0:0
scope :
global:容許全部的鏈接
site:只容許ipv6,來自本機的鏈接
link :只容許本設備的自我鏈接
host:只容許本機內部鏈接
默認是這個globe,經過ip addr show
ip addr add 172.16.0.1/16 dev eth2 broadcast 172.16.255.255
ip addr add 172.16.0.2/16 broadcast 172.16.255.255 dev eth2 label eth2:1# secondary地址
del
ip addr del ADDRESS dev DEV
broadcast {地址|+} #+是有系統根據這個設置自行計算
label name 設備設置一個別名,例如eth0:0
scope :
global:容許全部的鏈接
site:只容許ipv6,來自本機的鏈接
link :只容許本設備的自我鏈接
host:只容許本機內部鏈接
默認是這個global 確定使用global
刪除地址只要能惟一指定該地址便可,不須要寫出全命令
ip addr del 172.16.0.2/16 dev eth2
ip addr del 172.16.0.2/16 broadcast 172.16.255.255 dev eth2 label eth2:1
show
ip addr show dev DEV
利用這個就能夠查詢到一個網卡的輔助ip了ip addr show dev eth0
或者是這個ifconfig能夠查詢到
ip addr show
ip addr show eth0
flush 刪除
ip addr flush dev DEV to PREFIX
ip addr flush dev eth0 to 10.28.28/24 即刪除了
route
show
ip route show|list
add
ip addr add DEST via NEXTHOP dev DEV
ip route add 192.168.10.0/24 via 192.168.80.8 dev eth0
ip route add default via 192.168.80.2
注意:這個下一跳必定要和這個出接口是同個網段的,默認路由不用指定出接口
del
ip addr del DEST
ip route del 192.168.10.0/24
ip route del default
replace
ip addr replace DEST via NEXTHOP dev DEV
ip route replace 192.168.10.0/24 via 192.168.80.80 dev eth0
經常使用的選項
-s :統計更多輸出數據 == ifconfig eth0
例子:
link的設置
1.設置接口的mtu值爲1480
[root@fireward ~]# ip link set dev1 mtu 1488
2.顯示接口的信息
[root@fireward ~]# ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1488 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3e:58:cd brd ff:ff:ff:ff:ff:ff
3.修改eth1的名字爲mydev,並修改mtu爲1500
[root@fireward ~]# ip link set dev eth1 down
[root@fireward ~]# ip link set eth1 name mydev
[root@fireward ~]# ip link show mydev
3: mydev: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1488 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3e:58:cd brd ff:ff:ff:ff:ff:ff
[root@fireward ~]# ip link set mydev mtu 1500
注意:修改了網卡名字以後,經過服務service network restart重啓對其無效,能夠手動重啓
addr的設置
route的設置
ethtool
ethtool命令
功能:顯示網絡接口的屬性信息
語法:
ethtool [options] dev
經常使用的選項
-S :顯示網絡接口的統計信息
例子:
1.顯示這個接口的電器信息等
2顯示網絡接口的統計信息
traceroute
traceroute命令
功能:跟蹤路由通過的節點
語法:
traceroute IP|HOST
mtr
mtr命令
功能:動態跟蹤路由通過的節點
語法:
mtr IP|HOST
ping
ping命令
功能:查看網絡的連通性
語法:
ping [option] ip
經常使用的選項
-c num :設定ping的次數,默認一直ping
-s packetssize : 包大小
-i :設置ping包的發送interval root纔有權限設置小於0.2s
-n: 只是輸入這個ip ,不去域名解析,快速,推薦
-t: ttl set the ip time to live,ttl值
-W num :等待對方響應的秒數
-M {do|dont}: 主要檢測網絡的MTU數值的大小
do: 不讓這個數據包從新拆裝和打包
dont:表明不傳送這個DF標誌,表示數據包能夠從新拆包和打包
例子:
#只ping 8個包
ping -c 8 8.8.8.8
#設置ttl值爲2,丟失
ping -t 2 8.8.8.8
#不作域名解析,速度比較快
ping -n 168.95.1.1
#ping主機,會作域名解析
ping www.baidu.com
#0.02s發送一個icmp包
ping -i 0.02 8.8.8.8
#等待對方0.3秒的時間來響應數據包
ping -W 0.3 8.8.8.8
#發送數據包大小爲1000,數量爲2,不拆封數據包的icmp包
ping -c 2 -s 1000 -M do www.baidu.com #找出最大的MTU
若是有響應就是能夠接收,若是無響應就是這個mtu太大了
linux服務器指定dns服務器的方法爲:/etc/resolv.conf
/etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
指定本地域名解析/etc/hosts文件
配置格式爲:主機IP 主機名 主機別名
192.168.80.250 www.test.com
host
host命令
功能:dns解析工具,能夠ip-host host-ip
語法:
host [OPTION] server
經常使用的選項
-a :顯示詳細信息
-T : 使用tcp查詢 默認是53udp
-w seconds :等待時間
-t RT :查詢名稱的解析結果
RT: A NS SOA SIG CNAME
例子:
1.解析谷歌的域名服務器
2.查看百度的A記錄對應的dns服務器ip
3.查看百度的NS服務器
nslookup
nslookup命令
功能:直接或者交互查詢名稱服務器,ip-host host-ip
語法:
nslookup #交互
nslookup [option] server
經常使用的選項
-query=type{mx,cname ,A}:查看對應記錄的名稱對應服務器ip
例子:
1.直接查詢谷歌域名服務器的域名爲
2.查詢百度的ns服務器
3.交互查詢
tcpdump
tcpdump命令
功能:數據包捕獲工具
語法:
tcpdump [-AennqX] [-i 接口] [-w 存儲文件名]
[-r 文件] [所要摘取的數據包數據格式]
默認是不中止一直監聽的
經常使用的選項
-A:數據包的內容以ASCII碼打印,一般用來抓取WWW服務
-c packets :exit 知道收到這麼多的包後
-e :使用數據鏈路層的MAC數據包來顯示
-i interface : 監聽的網絡接口
-n :能夠防止使用域名解析,速度快
-nn:直接使用ip:port ,不使用這個域名服務
-r file :從這個file文件讀出數據包文件,經過-w保存的文件
-w 存儲的文件名:把抓到的數據包保存成這個文件
-q: quick quite output,輸入簡短的數據包信息
-X : 十六進制輸出hex ASCII 數據包信息,這個就相似wireshark查看密碼信息了
-XX :輸出十六進制的ASCII數據包信息,包括包頭
所要摘取的數據包數據格式:
host ip
host hostname
src host hostname|ip
dst host hostname|ip
src net netnum
dst net netnum
tcp port num
udp port num
ip host ip
gateway host
{ip|icmp|igrp|rip|udp|tcp}
邏輯組合 and or not
例子:
1.捕獲eth0接口的全部數據包到屏幕
[root@fireward ~]# tcpdump -i eth0
2.捕獲發送給目的ip192.168.80.253的數據包
[root@fireward ~]# tcpdump host 192.168.80.253
3.抓取特定協議的數據包
# tcpdump -i eth1 -nn arp
# tcpdump -i eth1 –X ip
# tcpdump -i eth1 –XX tcp
# tcpdump -i eth1 –nn udp
# tcpdump -i eth1 –v icmp
4.截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊
tcpdump host 210.37.28.11 and \(218.119.10.2 or 118.52.25.20\)
5.若是想要獲取主機210.27.48.1除了和主機210.27.48.2以外全部主機通訊的ip包
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
6.將捕獲的數據包保存到文件中
[root@fireward ~]# tcpdump -nn -XX -i eth0 -w /tmp/test tcp port 22
7.將保存的特定的文件讀取出來,直接打開沒法查看
[root@fireward ~]# tcpdump -r /tmp/test
netstat
netstat命令
功能:查看網絡鏈接狀態,路由,接口等統計信息
語法:
netstat [option]
經常使用的選項
-r :打印路由表 == route –n
-t :顯示tcp數據包鏈接
-u :顯示udp的數據包鏈接
-l :顯示正在監聽的服務
-a:顯示全部鏈接
-n:直接顯示FQDN ip:port,不作域名解析
-p:顯示進程號和進程名
-c:每隔一秒顯示一次,相似監控
建議使用命令watch –n second command 來監控
watch –n 2 netstat –ntup
統計類信息顯示:
-r 統計路由表信息
-g:統計多播組的信息
-i:統計all network interfaces tableinformation
例子:
1.顯示當前的路由表
2.顯示正在監聽的tcp和udp鏈接,顯示pid
[root@localhost ~]# netstat –ntlpu
3.顯示本機全部的網絡鏈接,包括socket類
[root@localhost ~]# netstat -an
ss
ss命令
功能:顯示linux網絡鏈接的狀態,同netstat,信息更詳細
語法:
ss [option]
經常使用的選項
-a :顯示全部套接字
-l :顯示正在監聽的套接字
-n :不作域名解析
-p :顯示套接字進程信息
-t : 只顯示tcp鏈接
-u :只顯示udp鏈接
-o :顯示套接字計時器信息,已創建的鏈接
-m :顯示套接字的內存使用狀況,已創建的鏈接
-V :顯示版本
-h :顯示幫助信息
-4 :只顯示ipv4
-6: 只顯示ipv6
例子:
1.顯示已經創建的鏈接的計時器信息
2.顯示已經創建的鏈接的內存使用狀況
3. 過濾tcp鏈接狀態中源端口或目的端口是22的