Linux網絡配置基礎篇linux
1、如何實現linux網絡通訊?vim
1)指定IP/NETMASK可實現本地通訊;服務器
2)指定路由(網關)可實現跨網絡通訊;網絡
3)指定DNS服務器地址可實現基於主機名的通訊,socket
主DNS服務器地址(當前服務器不在線時,啓用備用DNS服務器地址)tcp
備用DNS服務器地址編輯器
第三備份DNS服務器地址ide
2、配置網絡方式及網絡接口命名測試
linux 網絡屬於內核的功能,ui
配置方式:
靜態指定:使用命令直接指定或修改配置文件
動態分配:依賴於本地網絡中有DHCP服務
網絡接口命名方式:
傳統命名:
以太網:ethX, [0,oo),例如eth0, eth1, ...
PPP網絡:pppX, [0,...], 例如,ppp0, ppp1, ...
本地迴環:lo
可預測命名方案(CentOS):
支持多種不一樣的命名機制:Fireware, 拓撲結構
1) 若是Firmware或BIOS爲主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1, eno2, ...
2) 若是Firmware或BIOS爲PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...
3) 若是硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...
4) 若是用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10, ...
上述均不可用,則仍使用傳統方式命名;
命名格式的組成:
en:ethernet
wl:wlan
ww:wwan
名稱類型:
o<index>:集成設備的設備索引號;
s<slot>:擴展槽的索引號;
x<MAC>:基於MAC地址的命名;
p<bus>s<slot>:基於總線及槽的拓撲結構進行命名;
傳輸層協議:
tcp:面向鏈接的協議;通訊開始以前,要創建一個虛鏈路;通訊完成後還要拆除鏈接;
udp:無鏈接的協議;直接發送數據報文;
3、經常使用網絡配置命令
1.ifcfg命令家族: ifconfig, route, netstat
1)ifconfig命令:接口及地址查看和管理
ifconfig -a:顯示全部接口,包括inactive狀態的接口;
ifconfig IFACE IP/MASK [up|down]:爲指定接口配置ip,開啓或關閉接口;
fconfig IFACE IP netmask NETMASK :爲指定的接口配置ip,子網掩碼。
options:開啓或關閉混雜模式[-]promisc;
注意:當即送往內核中的TCP/IP協議棧,並生效,只對當前內核有效;
管理IPv6地址:
add addr/prefixlen
del addr/prefixlen
2)route命令:路由查看及管理
路由條目類型:
主機路由:目標地址爲單個IP;
網絡路由:目標地址爲IP網絡;
默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0
查看:# route -n
加:
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]
示例:route add -net 10.0.0.0/8 gw 172.18.0.1 dev eth1
到達10.0.0.0網絡經由172.18.0.1(下一跳)
route add default gw 192.168.0.1 到達任意網絡需經由192.168.0.1
刪除:
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例: route del -net 10.0.0.0/8 gw 192.168.0.1
3)netstat命令:
顯示路由表:netstat -rn
-r:顯示內核路由表
-n:數字格式
顯示網絡鏈接:
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t:TCP協議的相關鏈接,鏈接均有其狀態;FSM(Finate State Machine);
-u:UDP相關的鏈接
-w:raw socket相關的鏈接
-l:處於監聽狀態的鏈接
-a:全部狀態
-n:以數字格式顯示IP和Port;
-e:擴展格式
-p:顯示相關的進程及PID;
經常使用組合:
netstat-tan:查看tcp協議相關連接
netstat-uan:查看udp協議相關鏈接
netstat -tnl:查看處於監聽狀態的tcp協議相關鏈接
netstat-unl:查看處於監聽狀態的udp協議相關鏈接
netstat-tunlp:顯示處於監聽狀態的tcp及udp協議相關鏈接的進程及PID
顯示接口的統計數據:
全部接口:netstat -i
指定接口:netstat -I<IFace>
ifup/ifdown命令:啓用或禁用網卡(須要有網卡配置文件)
注意:經過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置;
配置主機名:
hostname命令:
查看:hostname
配置:hostname HOSTNAME
當前系統有效,重啓後無效;
hostnamectl命令(CentOS 7):
hostnamectl status:顯示當前主機名信息;
hostnamectl set-hostname:設定主機名,永久有效;
配置文件:/etc/sysconfig/network(CentOS6)
HOSTNAME=<HOSTNAME>
注意:此方法的設置不會當即生效; 但之後會一直有效;
配置DNS服務器指向:
配置文件:/etc/resolv.conf
nameserver DNS_SERVER_IP
如何測試(host/nslookup/dig):
# dig -t A FQDN(不會檢查hosts)
FQDN --> IP
# dig -x IP
IP --> FQDN
2.iproute家族:
ip命令:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;i
1)ip link: network device configuration
ip link set - change device attributes,dev NAME (default):指明要管理的設備,dev關鍵字可省略;
up和down:開啓或關閉接口
multicast on或multicast off:啓用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:設置MTU的大小,默認爲1500;
ip link show - display device attributes
ip link help - 顯示簡要使用幫助;
netns PID:ns爲namespace,用於將接口移動到指定的網絡名稱空間;
2)ip netns: -manage network namespaces.
ip netns list:列出全部的netns
ip netns add NAME:建立指定的netns
ip netns del NAME:刪除指定的netns
ip netns exe NAME COMMAND:在指定的netns中運行命令
3)ip address - protocol address management.
ip addr add IFADDR dev IFACE
[label NAME]:爲額外添加的地址指明接口別名;
[broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算獲得;
[scope SCOPE_VALUE]:
global:全局可用;
link:接口可用;
host:僅本機可用;
ip addr delete IFADDR dev IFACE
ip addr list [IFACE]:顯示接口的
ip addr flush dev IFACE:清空指定接口配置
4)ip route:路由表管理命令
ip route add - add new route
ip route change - change route
ip route replace - change or add new one
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
示例:
# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
# ip route add default via
#ip route del TYPE PRIFIX
#ip route get TYPE PRIFIX
3.ss命令:
ss [options] [ FILTER ]
選項:
-t:TCP協議的相關鏈接
-u:UDP相關的鏈接
-w:raw socket相關的鏈接
-l:監聽狀態的鏈接
-a:全部狀態的鏈接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
TCP的常見狀態:
TCP FSM:
LISTEN:監聽
ESTABLISEHD:已創建的鏈接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
EXPRESSION:
dport = 目標端口
sport = 源端口
示例:'( dport = :22 or sport = :22 )'
4、配置文件:
IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
IFACE:接口名稱;
路由的相關配置文件:/etc/sysconfig/network-scripts/route-IFACE
配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE經過大量參數來定義接口的屬性;其可經過vim等文本編輯器直接修改,也可使用專用的命令的進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
ifcfg-IFACE配置文件,以下圖
網絡服務:
network
NetworkManager
管理網絡服務:
CentOS 6: service SERVICE {start|stop|restart|status}
CentOS 7: systemctl {start|stop|restart|status} SERVICE[.service]
配置文件修改以後,若是要生效,須要重啓網絡服務;
CentOS 6:# service network restart
CentOS 7:# systemctl restart network.service
用到非默認網關路由:/etc/sysconfig/network-scripts/route-IFACE
支持兩種配置方式,但不可混用;
(1) 每行一個路由條目:
TARGET via GW
(2) 每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
給接口配置多個地址:
ip addr以外,ifconfig或配置文件均可以;
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0, eth0:1, ...
(2) 爲別名添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO:網上別名不支持動態獲取地址;static, none
nmcli命令:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
connection - start, stop, and manage network connections
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
如何修改IP地址等屬性:
# nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual