一、知識整理
1、跨網絡通信:路由
路由的分類:主機路由;網絡路由;默認路由。
將主機接入網絡,需要配置網絡相關設置。一般包括如下內容:主機名;IP/MASK;路由:默認網關;DNS服務器:主、次、第三DNS服務器。
2、網絡配置文件:IP、MASK、GW、DNS相關配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相關配置文件:
/etc/sysconfig/network-scripts/route-IFACE
3、dmesg查看開機信息
[root@localhost ~]# dmesg | grep SELinux [ 0.000137] SELinux: Initializing. [ 0.000153] SELinux: Starting in permissive mode [ 1.642242] SELinux: Registering netfilter hooks [ 9.496131] SELinux: 2048 avtab hash slots, 105321 rules. [ 9.506233] SELinux: 2048 avtab hash slots, 105321 rules. [ 9.531455] SELinux: 8 users, 105 roles, 4952 types, 302 bools, 1 sens, 1024 cats [ 9.531458] SELinux: 83 classes, 105321 rules [ 9.535006] SELinux: Completing initialization
4、lsmod查看綁定模塊:
[root@localhost ~]# lsmod | grep tcp tcp_diag 12591 0 inet_diag 18543 3 tcp_diag,dccp_diag,udp_diag
rmmod刪除模塊
網絡接口識別并命名相關的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
udev:udev 是Linux kernel 2.6系列的設備管理器。它主要的功能是管理/dev目錄底下的設備節點。它同時也是用來接替devfs及熱插拔的功能,這意味著它要在添加/刪除硬件時處理/dev目錄以及所有用戶空間的行為,包括加載固件時Linux 2.6.13內核。
卸載網卡驅動:modprobe -r e1000
modprobe e1000啟動網卡模塊
e1000是使用ethtool -i eth0命令查看,找到driver
[root@localhost ~]# ethtool -i eno16777736 driver: e1000 version: 7.3.21-k8-NAPI firmware-version: bus-info: 0000:02:01.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: no
5、臨時別名:ifconfig eno16777736:1 ####/#
刪除別名 ifconfig eno16777736:1 down
啟用和禁用網卡:ifconfig eth0 up/down
6、本地解析器:解析器執行正向和逆向查詢,聯網時先查詢本地解析再通過DNS解析。
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析),也可反向解析。DNS協議運行在UDP協議之上,使用端口號53。
/etc/hosts 本地主機名數據庫和IP地址的映像;對小型獨立網絡有用;通常,在使用DNS前檢查。
getent hosts 查看/etc/hosts內容
[root@localhost ~]# getent hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
cat /etc/resolve.conf 查看配置DNS
[root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManager # No nameservers found; try putting DNS servers into your # ifcfg files in /etc/sysconfig/network-scripts like so: # DNS1=xxx.xxx.xxx.xxx # DNS2=xxx.xxx.xxx.xxx # DOMAIN=lab.foo.com bar.foo.com
cat /etc/nsswitch.conf 可以更改優先級,默認hosts優先于DNS。
將hosts: files dns一行files和dns互換,用于改變優先級。
7、route配置文件/etc/sysconfig/network-scripts/route-IFACE
兩種格式:第一種 #### via GW
第二種:每三行定義一條路由
ADDRESS1=TARGET
NETMASK1=mask
GATEWAY1=GW
格式是:ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
8、在網卡配置文件中添加一行DOMAIN=magedu.com。在/etc/hosts文件中添加一行
#.#.#.# www.magedu.com
重啟網絡服務后,在/etc/resolv.conf會多出一行search magedu.com。此時用ping命令直接ping www. 會自動識別本地解析,ping #.#.#.#。
9、centos7網絡屬性配置:rhel7基于硬件,設備拓撲和設置類型命名:
systemd對網絡設備的命名方式:
①如果Firmware或BIOS為主板上集成的設備提供的索引信息可用,且可預測,根據此索引進行命名,例如eno1;
②如果Firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,例如ens1;
③如果硬件接口的物理信息可用,則根據此信息進行命名,例如enp2s0;
④如果用戶顯式啟動,也可根據MAC地址進行命名,例如enx2387a1dc56;
⑤上述均不可用時,則使用傳統命名機制。
網卡名稱:基于BIOS支持biosdevname中,內置網卡em1,em2;pci卡:pYpX(y:slot插槽,X:port端口)。
PCI定義局部總線的標準,支持10臺外設,64位尋址:pci插槽,基于局部總線的擴展插槽。
網卡名稱含義:
en:Ethernet 有線局域網
wl:wlan 無線局域網
ww:wwan無線廣域網
o <> 集成設備的設備索引號
s<> 擴展槽的索引號
x<MAC> 基于MAC地址的命名
p<bus>s<slot> enp2s1
網卡命名過程:
第一步:udev,輔助工具程序/lib/udev/rename_device;/usr/lib/udev/rules.d/60-net.rules
第二步:biosdevname 會根據/usr/lib/udev/rules.d/71-biosdevname.rules;
[root@localhost ~]# cat /usr/lib/udev/rules.d/60-net.rules ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device" , RESULT=="?*", NAME="$result"
第三步:通過檢測網絡接口設備,根據/usr/lib/udev/rules.d/75-net-description.rules。
二、命令詳解及事例
1、route命令:查看路由route -n;添加路由route -add
route add -net #.#.#.# gw #.#.#.# dev eth#
route del -net #.#.#.# netmask #.#.#.#
route del -host #.#.#.#
2、ip命令:ip [opt] OBJECT {help|COMMAND}
OBJECT:link|addr|route
ip link :network device configuration
[root@localhost ~]# ip link set dev eno16777736 up [root@localhost ~]# ip link set dev eno16777736 down [root@localhost ~]# ifup eno16777736 RTNETLINK answers: File exists [root@localhost ~]# ifdown eno16777736 [root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT
qlen 1000 link/ether 00:0c:29:51:36:20 brd ff:ff:ff:ff:ff:ff
ip link show [dev IFACE] 指定接口
[up] 僅顯示處于激活狀態的接口
ip addr {add|del} ADDR dev STRING
[LABEL] 添加地址時指明網卡別名
[scope {global|link|host}] :指明作用域
global 全局可用,默認。
當三塊網卡,兩塊網絡組掛掉之后,第三塊繼承了IP,也可以繼續用。因為IP是寫入內核中的,并不是寫在網卡上,當定義為global后,全局可用。
link 僅鏈接可用
host 本機可用
[broadcast ADDRESS] 指明廣播地址
ip address show :look at protocol addresses
[root@localhost ~]# ip addr add 172.16.100.13/16 dev eno16777736 label eno16777736:1 [root@localhost ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.1.54.250 netmask 255.255.0.0 broadcast 10.1.255.255 inet6 fe80::20c:29ff:fe51:3620 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:51:36:20 txqueuelen 1000 (Ethernet) RX packets 14445 bytes 1328780 (1.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 841 bytes 98076 (95.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno16777736:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.100.13 netmask 255.255.0.0 broadcast 0.0.0.0 ether 00:0c:29:51:36:20 txqueuelen 1000 (Ethernet) [root@localhost ~]# ip addr flush dev eno16777736 label eno16777736:1
清空一個網卡上的所有地址:ip addr flush
[root@localhost ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.1.54.250 netmask 255.255.0.0 broadcast 10.1.255.255 inet6 fe80::20c:29ff:fe51:3620 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:51:36:20 txqueuelen 1000 (Ethernet) RX packets 16177 bytes 1442437 (1.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 925 bytes 107932 (105.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip route add 添加路由
ip route default via 172.16.0.1
ip route add 192.168.0.0/16 via172.16.0.1
ip route add 192.168.1.22 via172.16.0.1
ip route delete
ip route del 192.168.1.22
顯示路由 ip route show|list
清空路由表 ip route flush [devv IFACE] [via PREFIX]
ip route flush dev eth0
3、ss命令:netstat通過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊通信獲取socket信息。
-t tcp協議相關
-u udp協議相關
-w 裸套接字相關
-l listen狀態的連接
-x unix sock相關
-a 所有
-n 數字格式
-p 相關的程序及PID
-e 擴展的信息
-m 內存用量
-o 計時器信息
TCP常見的狀態:tcp finite(有限的) state machine
LISTEN 監聽
ESTABLESHED 已建立的連接
FIN_WAIT_1
FIN_WAIT_2 四次斷開信號
SYN_SENT
SYN_RECV 三次握手信號
CLOSED 關閉狀態,數據傳輸完畢,暫時性
[root@localhost ~]# ss sport = :ssh Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 10.1.54.250:ssh 10.1.250.66:50129 [root@localhost ~]# ss dport = :ssh Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
ss -n dport = :ssh 目標端口destination
ss -n sport = :ssh 源端口source
常用組合:
[root@localhost ~]# ss -tan 數字格式顯示tcp連接的所有信息 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25套接字,代表一個主機 *:* ESTAB 0 52 10.1.54.250:22 10.1.250.66:50129 LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
[root@localhost ~]# ss -tanl 數字格式顯示tcp連接的listen狀態的所有信息 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* [root@localhost ~]# ss -tanlp 數字格式包括PID和命令顯示tcp連接的listen狀態的所有信息 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* users:(("sshd",pid=1211,fd=3))LISTEN0 100 127.0.0.1 :25 *:* users:(("master",pid=2350,fd=13))LISTEN 0 128 :::22 :::* users:(("sshd",pid=1211,fd=4))LISTEN 0 100 ::1:25 :::* users:(("master",pid=2350,fd=14))[root@localhost ~]# ss -uan 顯示PID,udp連接的所有信息 State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 ::1:323 :::*
顯示所有已經建立的HTTP連接
[root@localhost ~]# ss -o state established '( dport = :http or sport = :http )' Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
找出所有連接X服務器的進程
[root@localhost ~]# ss -x src /tmp/.X11-unix/* Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
列出當前的socket詳細信息:
[root@localhost ~]# ss -s Total: 548 (kernel 714) TCP: 5 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 714 - - RAW 0 0 0 UDP 2 1 1 TCP 5 3 2 INET 7 4 3 FRAG 0 0 0
4、RHEL7和Centos 7中默認的網絡服務有NetworkManager提供,這是動態控制及配置網絡的守護進程,在centos6中并不穩定,它用于保持當前網絡設備及連接處于工作狀態,同時也支持傳統的ifcfg類型的配置文件,支持bond to team??梢杂妹罟ぞ?/span>nmcli來控制NetworkManager,此命令需要NetworkManager是運行狀態,在7中還支持補全,使用起來功能更加強大。
nmcli命令相當于直接修改文件,重啟網絡即生效。
網絡組:是將多個網卡聚合在一起的方法,從而實現冗余和提高吞吐量。網絡組不同于bonding技術,它能提供更好的性能和擴展性,網絡組由內核驅動和teamd守護進程實現。
網絡組的方式:runner;broadcast;roundrobin;activebackup;loadbalance;lacp(implements the 802.3ad Link Aggregation Control Protocol)。
5、網絡組team#和接口port#之間的關系:
啟動網絡組接口或port都不會啟動另一個;當禁止team#時port一定禁止,反之不然;沒有port的team#可以啟動靜態IP;啟用DHCP連接時,沒有Port的team會等待port#的加入。
一、課后練習
1、配置模擬路由
步驟一:用兩個系統添加網卡,分別為eth0和eth1,添加新網卡的配置文件。若為centos7系統,為方便可更改文件使網卡使用普通命名方式。方法如下:
方法一:編輯/etc/default/grub配置文件,將其中GRUB_CMDLINE_LINUX的內容刪除并改為GRUB_CMDLINE_LINUX=”net.ifnames=0 rhgb quiet”;為grub2生成其配置文件,使用命令grub2-mkconfig -o /etc/grub2.cfg;重啟系統,但并沒有生效,需要再更改網卡的配置文件device新名字,重啟網絡服務。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.54.250 netmask 255.255.0.0 broadcast 10.1.255.255
inet6 fe80::20c:29ff:fe51:3620 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:51:36:20 txqueuelen 1000 (Ethernet)
方法二:直接修改/boot/grub2/grub.cfg;將linux16開頭的一行最后添加,如下:
linux16 /vmlinuz-0-rescue-b2197fdfc4d146048b4934eb2a563b8c
root=/dev/mapper/centos-root ro net.ifnames=0 rhgb quiet
重啟,更改文件生效。
步驟二:編輯配置文件,模擬為兩個路由器,因此只需要寫如下幾行即可,
更改四個網卡的配置文件,組成如下方式:
關閉兩臺路由器的NetworkManager服務,關閉防火墻,重啟網絡生效。
步驟三:添加路由
查看路由:路由器兩個端口的路由在配置完成后重啟網絡的時候就會自動生成,如果無意清空所有路由,則會出現無法添加路由或網絡不可達的狀況。使用route和route -n查看:
配置路由,使用命令或者直接編輯修改配置文件。此處使用命令:
注意:路由器本機的兩個接口不需要配置,默認就可以直接到達,因為默認路由自動生成,要想到達130的網絡直接使右側路由器的eth1口經過左側路由器的eth1口即可。
步驟四:開通路由功能
默認是無法作為路由器工作的,需要更改一個文件啟用路由功能:
步驟五:添加主機并測試
添加兩個主機,此處使用一個windows和一個centos7作為主機,形成如下關系:
配置完成后,使用ping -I IPACE ####命令測試。其中windows的IP可以在高級設置里面添加一個新的IP。
使用ping命令進行測試,先用右側的路由器對130.1網段檢測:
再用主機對左側的centos7進行測試:
問題:在實驗的過程中,使用左側的eth0對windows主機進行ping不能通,實驗了多種方法包括重啟網絡,關閉防火墻,關閉NetworkManager服務和SELinux服務,重新配置路由皆不能成功,最后重啟并重新配置解決。證明虛擬機的此主機還是有一定的不穩定性。
2、nmcli命令配置網絡組
步驟一:添加一塊網卡,使用ifconfig -a查看名字,此處在7中改了文件,因此是普通命名方式。手動生成新網卡的配置文件。
步驟二:使用命令創建網絡組
首先啟動服務
[root@localhost network-scripts]# service NetworkManager start Redirecting to /bin/systemctl start NetworkManager.service
設定名稱和模式為loadbalance
[root@localhost network-scripts]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}' 成功添加的連接 'team0'(c5d804b2-825c-40df-858f-08e15df45a66)。 [root@localhost network-scripts]# nmcli connection modify team0 ipv4.addresses 10.1.54.250/16 給定網絡為靜態,manual [root@localhost network-scripts]# nmcli connection modify team0 ipv4.method manual 連接網卡,con-name默認為team-slave-eth0,可以自行添加 [root@localhost network-scripts]# nmcli connection add type team-slave con-name team-slave-eth0 ifname eth0 master team0 成功添加的連接 'team-slave-eth0'(91b061f6-57b2-41eb-a004-ec89fabebd0b)。 [root@localhost network-scripts]# nmcli connection add type team-slave con-name team-slave-eth1 ifname eth1 master team0 成功添加的連接 'team-slave-eth1'(b2fa5eeb-e564-4571-a218-be821d1e1770)。 [root@localhost network-scripts]# nmcli connection up team0 成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/3) [root@localhost network-scripts]# nmcli device disconnect eth1 Device 'eth1' successfully disconnected. [root@localhost network-scripts]# nmcli device connect eth1 Device 'eth1' successfully activated with '093c0f9c-2401-402d-b9cc-f97921e5c33c'. [root@localhost ~]# nmcli connection up team-slave-eth1 成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/8) [root@localhost ~]# teamdctl team0 state setup: runner: loadbalance ports: eth1 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 eth0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0
步驟三:測試網絡組
經過測試,主備模式的網絡組在虛擬機模擬情況下依然有缺陷,像bonding的mode0模式,次斷開主能用,主斷開次不能使用。其他模式相對穩定。
刪除網絡組時,將生成的所有文件刪除,重啟網絡服務即可。
原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/45655