1. 在linux虛擬中安裝dhcpv6后,Server發送的dhcpv6 advertise報文中的udp校驗和出錯,導致用戶不能獲取IPv6地址
修正方法:將該接口的校驗關閉
ethtool --offload enp3s0 rx off tx off
Actual changes:
rx-checksumming: off
tx-checksumming: off
tx-checksum-ip-generic: off
tcp-segmentation-offload: off
tx-tcp-segmentation: off [requested on]
tx-tcp6-segmentation: off [requested on]
原因分析: 實體主機中有的網卡不支持硬件校驗和計算,但是虛擬機中卻默認通過網卡自動進行校驗和計算(應用層使用了隨機校驗和填充),而實際網卡并不具備該能力,所以發出的報文校驗和是錯誤的。
2. FreeBSD中su:Sorry問題解決
FreeBSD中不能直接使用su提升用戶權限,需要將用戶加入wheel組才能使用
編輯/etc/group文件,將用戶加入
wheel:*:0:root,用戶名
如
cat /etc/group | grep wheel
wheel:*:0:root,admin
3. Linux 掛在光驅
mount -t cd9660 /dev/cd0 /mnt/cdrom
4. linux加載新的硬盤
a). fdisk -l 可以看到新加載的硬盤,如/dev/sdb
b). 對硬盤進行分區
fdisk /dev/sdb
m --- 查看命令菜單
n --- 新建分區(選擇創建主分區或擴展分區,選擇分區號和分區大小---起始和終止扇區)
w --- 分區信息寫入sdb磁盤中
c). 內核重新讀取分區表
partprobe /dev/sdb
d). 創建文件系統(格式化分區) --- 主流ext4或xfsd
mkfs.ext4 /dev/sdb1
e). 臨時掛載
mkdir /mnt/disk2
mount /dev/sdb1 /mnt/disk2
df -h #查看實際掛載情況
f). 永久掛載
參考/etc/fstab內容
加入行:
/dev/sdb1 /mnt/disk2 ext4 defaults 0 0
5. 其中samba服務(與windows的文件共享)
a). 安裝文件
yum install samba samba-client samba-common -y
b). 關閉SeLinux
/etc/selinux/config, vim /etc/selinux/config,將SELINU置為disabled (SELINUX=disabled)
注:未啟動先,需要臨時關閉(執行setenforce 0),否則后面打開時,會出現無權限訪問問題
c). 配置/etc/samba/smb.conf
d). 防火墻放開samba服務
firewall-cmd --permanent --add-service=samba
firewall-cmd reload
e). 其中smb服務
systemctl enable smb
systemctl enable nmb
systemctl start nmb smb
f). 設置samba用戶(smbpasswd –a 用戶名)
注: 需要關閉SELINUX否則會導致無權限訪問問題
6. KVM虛擬機網絡速度慢的問題
ethtool --offload enp1s0 gso off tso off sg off gro off rx off tx off
或啟動虛擬機時自動執行
增加腳本,如/root/setnetwork.sh
[root@centos8 ~]# cat /root/setnetwork.sh
#!/bin/bash
para="on"
if [ $1 == "off" ];then
para="off"
elif [ $1 == "on" ];then
para="on"
fi
echo "set interface offload $para"
ethtool --offload enp1s0 gso $para tso $para sg $para gro $para rx $para tx $para &
ethtool --offload enp3s0 gso $para tso $para sg $para gro $para rx $para tx $para &
編寫自定義服務
[root@centos8 ~]# cat /usr/lib/systemd/system/setnetwork.service
[Unit]
Description=set interface offload
After=network.target
[Service]
Type=forking
ExecStart=/root/setnetwork.sh off
ExecStop=/root/setnetwork.sh on
[Install]
WantedBy=multi-user.target
執行
systemctl enable setnetwork
systemctl start setnetwork
若系統是windows, 則需要在網卡設置屬性
將其Large Send Offload(IPv4, IPv6), TCP/UDP Checksum offload(IPv4, IPv6)均置為Disable
7. 在centos 8.1 KVM上安裝win10
一般默認安裝了virtio-win, 若沒有安裝,手動安裝一次
dnf install virtio-win
完成后,按照普通虛擬機安裝步驟進行,第一次啟動前,對配置進行如下修改
a). 磁盤類型按照實際的磁盤選擇(如使用STATA)
b). 網卡選擇e1000e
c). 增加顯示器(如圖所示)
8. 文件句柄相關的Linux命令
查看允許最大文件開啟數目(ulimit –a)
查看最大系統句柄最大數量限制
[root@centos8 ~]# cat /proc/sys/fs/file-max
382320
查看當前打開句柄總數
[root@centos8 ~]# lsof|awk '{print $2}'|wc -l
35978
查看句柄打開數量最大的進程名稱
[root@centos8 ~]# lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more
11826 2446
9490 2448
9490 2447
…
# 倒敘排列(第一列為句柄數量,第二列為進程ID)
[root@centos8 ~]# ps aux | grep 2446
Apache 2446 0.0 0.3 1933748 13412 ? Sl May10 0:16 /usr/sbin/httpd –DFOREGROUND
#查看進程
修改文件句柄限制
[root@centos8 ~]# cat /etc/security/limits.conf
9. 查看TCP Socket相關的統計信息
統計tcp連接狀態(IPv4, IPv6))
[root@node19216820131 ~]# netstat -n | awk '/^tcp*/ {++S[$NF]} END {for(a in S) print a, S[a]}'
SYN_RECV 5
CLOSE_WAIT 8
ESTABLISHED 1540
FIN_WAIT1 1
FIN_WAIT2 1
TIME_WAIT 220
TCP連接狀態詳解
- LISTEN: 偵聽來自遠方的TCP端口的連接請求
- SYN-SENT: 在發送連接請求后等待匹配的連接請求(ACK),即應用開始啟動一個TCP連接
- SYN-RECEIVED:收到和發送一個連接請求后等待對方對連接請求的確認,即一個連接請求已到達,等待確認
- ESTABLISHED: 代表一個打開的連接,數據正常交互
- FIN-WAIT-1: 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認:我已完成傳輸,等你哦
- FIN-WAIT-2: 從遠程TCP等待連接中斷請求,對方已同意釋放連接
- CLOSE-WAIT: 等待從本地用戶發來的連接中斷請求
- CLOSING: 等待遠程TCP對連接中斷的確認:兩邊同時嘗試關閉連接
- LAST-ACK: 等待原來的發向遠程TCP的連接中斷請求的確認:等所有的報文到達或死掉
- TIME-WAIT: 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
客戶端與服務器端建立TCP/IP連接后關閉SOCKET后,服務器端連接的端口狀態為TIME_WAIT, 主動關閉的一方在發送最后一個 ack 后就會進入 TIME_WAIT 狀態 停留2MSL(max segment lifetime)時間,這個是TCP/IP必不可少的。
- CLOSED: 沒有任何連接狀態
若有大量的TIME_WAIT狀態的連接,通過調整內核參數解決(vim /etc/sysctl.conf)
加入以下內容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后執行 /sbin/sysctl -p 讓參數生效。
- net.ipv4.tcp_syncookies = 1 表示開啟SYN cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
- net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;
- net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
- net.ipv4.tcp_fin_timeout 修改系統默認的 TIMEOUT 時間
10. 查看服務那個端口建立的連接最多
netstat -na | grep ESTABLISHED | awk '{ print $5 }'| sort | uniq -c | sort -r -n
查看那個IP建立的連接數目最多
netstat -na | grep ESTABLISHED | awk '{ print $5 }' | awk -F: '{ print $1 }' | sort | uniq -c | sort -r –n
附注:awk
- BEGIN語句塊在awk開始從輸入流中讀取行之前被運行,這是一個可選的語句塊,如變量初始化、打印輸出表格的表頭等語句通常能夠寫在BEGIN語句塊中。
- END語句塊在awk從輸入流中讀取全然部的行之后即被運行。如打印全部行的分析結果這類信息匯總都是在END語句塊中完畢,它也是一個可選語句塊。
- pattern語句塊中的通用命令是最重要的部分,它也是可選的。假設沒有提供pattern語句塊,則默認運行{ print },即打印每個讀取到的行。awk讀取的每一行都會運行該語句塊。
這三個部分缺少任何一部分都可以。