背景
閑置的舊筆記本電腦,改裝了Linux(CentOS 7)系統,無界面的最小安裝版本,想着做個簡單服務器放在公司學習和使用,即使在家也可以連公司VPN。忘記設置聯網,而又沒帶網線,遂采用連接WIFI的方式聯網,而公司的wifi又需要登錄工號和密碼,經過查找資料解決了該問題,特此記錄一下。
nmcli命令
CentOS使用NetworkManager管理網絡,NetworkManager中有很多管理工具包。
進入系統后,先執行NetworkManager自帶的nmcli命令查看網絡狀態 nmcli dev status
,可以看到 wifi 的 DEVICE是 wlp7s0
[root@localhost ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
enp8s0 ethernet 不可用 --
lo loopback 未托管 --
wlp7s0 wifi 未托管 --
然后通過以下命令將無線網口開啟
$ nmcli r wifi on
wpa_supplicant工具
裝機后,系統是自帶wpa_supplicant工具的, wpa_supplicant
是一個連接、配置WIFI
的工具,它主要包含wpa_supplicant
與wpa_cli
兩個程序。通常情況下,可以通過wpa_cli
來進行WIFI
的配置與連接,如果有特殊的需要,可以編寫應用程序直接調用wpa_supplicant
的接口直接開發。
官網: http://w1.fi/wpa_supplicant/。
啟動 wpa_supplicant
應用
這個時候我們先通過下面命令啟動wpa_supplicant工具(注意 -i 參數后面的 DEVICE 名稱)
[root@localhost ~]# wpa_supplicant -i wlp7s0 -c /etc/wpa_supplicant/wpa_supplicant.conf &
[1] 2597
[root@localhost ~]# Successfully initialized wpa_supplicant
啟動 wpa_cli
應用
搜索附近可用wifi
$ wpa_cli -i wlp7s0 scan // 搜索附近wifi網絡
$ wpa_cli -i wlp7s0 scan_result // 打印搜索wifi網絡結果
我們可以通過上面兩個命令獲取附近的wifi信息,如下:
[root@localhost wpa_supplicant]# wpa_cli -i wlp7s0 scan
OK
[root@localhost wpa_supplicant]# wpa_cli -i wlp7s0 scan_result
bssid / frequency / signal level / flags / ssid
xx:d0:xx:xx:xx:xx 2437 -51 [WPA2-EAP-CCMP][ESS] wifi_1
xx:d0:xx:xx:xx:xx 2462 -40 [WPA2-PSK-CCMP][ESS] wifi_2
xx:a5:xx:xx:xx:xx 2462 -48 [ESS] wifi_3
xx:78:xx:xx:xx:xx 2437 -58 [WPS][ESS] wifi_4
配置wifi
方式一:使用 wpa_cli
命令
其中 wifi_2、wifi_3、wifi_4 都比較簡單,我們可以通過wpa_cli
來配置,通過如下命令添加一個網絡,配置方式查自這篇博客
$ wpa_cli -i wlp7s0 add_network // 添加一個網絡連接
這樣便有了一個 scan_ssid為0的網絡連接。
如果要連接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]
(wpa
加密),wifi
名稱是name
,wifi
密碼是:psk
。
$ wpa_cli -i wlp7s0 set_network 0 ssid '"name"'
$ wpa_cli -i wlp7s0 set_network 0 psk '"psk"'
$ wpa_cli -i wlp7s0 enable_network 0
如果要連接加密方式是[WEP][ESS]
(wep
加密),wifi
名稱是name
,wifi
密碼是psk
。
$ wpa_cli -i wlp7s0 set_network 0 ssid '"name"'
$ wpa_cli -i wlp7s0 set_network 0 key_mgmt NONE
$ wpa_cli -i wlp7s0 set_network 0 wep_key0 '"psk"'
$ wpa_cli -i wlp7s0 enable_network 0
如果要連接加密方式是[ESS]
(無加密),wifi
名稱是name
。
$ wpa_cli -i wlp7s0 set_network 0 ssid '"name"'
$ wpa_cli -i wlp7s0 set_network 0 key_mgmt NONE
$ wpa_cli -i wlp7s0 enable_network 0
分配ip保存連接即可上網了『這一步可能報錯,參考方式二』
#分配 ip/netmask/gateway/dns
$ udhcpc -i wlp7s0 -s /etc/udhcpc.script -q
# 保存連接
$ wpa_cli -i wlp7s0 save_config
然后還可以斷開連接,選擇其他的網絡連接上網
# 斷開連接
$ wpa_cli -i wlp7s0 disable_network 0
# 連接已有的連接
$ wpa_cli -i wlp7s0 list_network 列舉所有保存的連接
$ wpa_cli -i wlp7s0 select_network 0 連接第1個保存的連接
$ wpa_cli -i wlp7s0 enable_network 0 使能第1個保存的連接
方式二:wpa_supplicant.conf 配置文件
方式一中 wifi_1 [WPA2-EAP-CCMP][ESS]
這樣的並未提及,通過對這篇文章的閱讀 Linux 使用wpa_supplicant手動配置連接wifi,對wpa_supplicant.conf 配置文件的學習與了解,發現方式一中wpa_cli -i wlp7s0 save_config
就是保存相關配置的.
通過對官放文檔http://w1.fi/cgit/hostap/plain/wpa_supplicant/README的閱讀,找到一些配置示例如下:
Example configuration files for some common configurations:
1) WPA-Personal (PSK) as home network and WPA-Enterprise with EAP-TLS as work
network
# allow frontend (e.g., wpa_cli) to be used by all users in 'wheel' group
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
#
# home network; allow all valid ciphers
network={
ssid="home"
scan_ssid=1
key_mgmt=WPA-PSK
psk="very secret passphrase"
}
#
# work network; use EAP-TLS with WPA; allow only CCMP and TKIP ciphers
network={
ssid="work"
scan_ssid=1
key_mgmt=WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
eap=TLS
identity="user@example.com"
ca_cert="/etc/cert/ca.pem"
client_cert="/etc/cert/user.pem"
private_key="/etc/cert/user.prv"
private_key_passwd="password"
}
2) WPA-RADIUS/EAP-PEAP/MSCHAPv2 with RADIUS servers that use old peaplabel
(e.g., Funk Odyssey and SBR, Meetinghouse Aegis, Interlink RAD-Series)
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="example"
scan_ssid=1
key_mgmt=WPA-EAP
eap=PEAP
identity="user@example.com"
password="foobar"
ca_cert="/etc/cert/ca.pem"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}
3) EAP-TTLS/EAP-MD5-Challenge configuration with anonymous identity for the
unencrypted use. Real identity is sent only within an encrypted TLS tunnel.
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="example"
scan_ssid=1
key_mgmt=WPA-EAP
eap=TTLS
identity="user@example.com"
anonymous_identity="anonymous@example.com"
password="foobar"
ca_cert="/etc/cert/ca.pem"
phase2="auth=MD5"
}
4) IEEE 802.1X (i.e., no WPA) with dynamic WEP keys (require both unicast and
broadcast); use EAP-TLS for authentication
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="1x-test"
scan_ssid=1
key_mgmt=IEEE8021X
eap=TLS
identity="user@example.com"
ca_cert="/etc/cert/ca.pem"
client_cert="/etc/cert/user.pem"
private_key="/etc/cert/user.prv"
private_key_passwd="password"
eapol_flags=3
}
5) Catch all example that allows more or less all configuration modes. The
configuration options are used based on what security policy is used in the
selected SSID. This is mostly for testing and is not recommended for normal
use.
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="example"
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk="very secret passphrase"
eap=TTLS PEAP TLS
identity="user@example.com"
password="foobar"
ca_cert="/etc/cert/ca.pem"
client_cert="/etc/cert/user.pem"
private_key="/etc/cert/user.prv"
private_key_passwd="password"
phase1="peaplabel=0"
ca_cert2="/etc/cert/ca2.pem"
client_cert2="/etc/cer/user.pem"
private_key2="/etc/cer/user.prv"
private_key2_passwd="password"
}
6) Authentication for wired Ethernet. This can be used with 'wired' or
'roboswitch' interface (-Dwired or -Droboswitch on command line).
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity="user"
password="password"
eapol_flags=0
}
通過以上的學習,再打開手機觀察手機上公司網絡連接,發現EAP方法為PEAP,然后CA證書、階段2身份驗證均可不填,輸入身份以及密碼即可,那么對 wpa_supplicant.conf 做相應配置。
$ vi /etc/wpa_supplicant/wpa_supplicant.conf
配置如下:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="wifi名稱"
scan_ssid=1
key_mgmt=WPA-EAP
eap=PEAP
identity="我的員工號"
password="密碼"
}
配置好了后為wlp7s0自動分配ip地址
$ dhclient wlp7s0
查看系統網絡連接狀態,發現wlp7s0已分配好地址
$ ip addr
ping 驗證網絡連接是否成功
$ ping www.baidu.com
重啟后的操作
# 先啟動 wpa_supplicant
$ wpa_supplicant -i wlp7s0 -c /etc/wpa_supplicant/wpa_supplicant.conf &
# 分配ip
$ dhclient wlp7s0
重啟自動連接wifi
配置阿里鏡像(可跳過)
首先配置阿里鏡像能下載快一點。
1. 備份
備份Centos7系統自帶的yum源配置文件(/etc/yum.repos.d/CentOS-Base.repo)
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
或:
$ cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2. 下載阿里雲yum源文件
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或:
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3. 更改CentOS-Base.repo
更改阿里雲的yum源文件,將所有http更改為https,不改有的鏡像下不下來
$ vim /etc/yum.repos.d/CentOS-Base.repo
4. 更新現有鏡像源
# 清除緩存:
$ yum clean all
# 生成緩存
$ yum makecache
5. 更新yum
$ yum update
固定IP與開機自啟動
1、如果ifconfig
命令不存在,先安裝net-tools
$ yum -y install net-tools
2、編寫固定ip與啟動wpa_supplicant
腳本
$ vi /home/newmean/autostart.sh
鍵入如下命令
#!/bin/sh
#wifi設置ip與子網掩碼
ifconfig wlp7s0 99.99.99.4 netmask 255.255.254.0
#設置默認網管
route add default gw 99.99.99.255
#更新生效
ifconfig wlp7s0 up
#啟動wpa_supplicant -B 后台啟動
wpa_supplicant -B -i wlp7s0 -c /etc/wpa_supplicant/wpa_supplicant.conf
#dhcp 獲取 ip 地址
dhclient
執行權限
$ chmod +x /home/newmean/autostart.sh
3、腳本加入rc.local
開機啟動
$ touch /etc/rc.local
$ chmod +x /etc/rc.local
$ vi /etc/rc.local
# 在最后一行加入autostart.sh的路徑
/home/newmean/autostart.sh
筆記本合住不斷網配置
1、編輯logind.conf文件配置
$ vi /etc/systemd/logind.conf
2、修改 HandleLidSwitch 項
HandleLidSwitch=lock
3、重啟生效配置
$ systemctl restart systemd-logind
配置說明:
HandlePowerKey //按下電源鍵后的行為,默認power off
HandleSleepKey //按下掛起鍵后的行為,默認suspend
HandleHibernateKey //按下休眠鍵后的行為,默認hibernate
HandleLidSwitch //合上筆記本蓋后的行為,默認suspend
配置項的可選范圍為:
ignore 忽略,跳過
power off 關機
eboot 重啟
halt 掛起
suspend shell內建指令,可暫停目前正在執行的shell。若要恢復,則必須使用SIGCONT信息。所有的進程都會暫停,但不是消失(halt是進程關閉)
hibernate 讓筆記本進入休眠狀態
hybrid-sleep 混合睡眠,主要是為台式機設計的,是睡眠和休眠的結合體,當你選擇Hybird時,系統會像休眠一樣把內存里的數據從頭到尾復制到硬盤里 ,然后進入睡眠狀態,即內存和CPU還是活動的,其他設置不活動,這樣你想用電腦時就可以快速恢復到之前的狀態了,筆記本一般不用這個功能。
lock 僅鎖屏,計算機繼續工作。
參考
- https://www.cnblogs.com/haosun/p/12421046.html
- https://www.cnblogs.com/hokori/p/14168584.html
- https://www.cnblogs.com/klcf0220/p/11121238.html
- wpa_supplicant官方文檔 http://w1.fi/cgit/hostap/plain/wpa_supplicant/README
- https://blog.csdn.net/u011271894/article/details/100981098
- https://blog.csdn.net/sac761/article/details/87930362
- https://www.cnblogs.com/zhaoyanhaoBlog/p/12118473.html
- https://www.dazhuanlan.com/wyw54765476/topics/1234467
- https://www.cnblogs.com/longchengruoxi/p/11451062.html