01 前言
作為一名Linux工程師,不管是運維、應用、驅動方向,在工作中肯定會需要Linux環境。想要獲得Linux環境,一個辦法就是將電腦系統直接換成Linux系統,但我們平常用慣了Windows系統,直接切換為Linux系統或多或少會有很多不方便的地方。另一個比較土豪的辦法是,再買一臺電腦,然后將系統換成Linux系統。但這種方法就比較傷錢包了。
一個比較折中的方案是,在自己的電腦上安裝一個Linux虛擬機。所謂虛擬機,就是在你已有的電腦里再虛擬出一個或多個電腦,可以理解為電腦中的電腦。
比如說,你可以在虛擬機里安裝一個Window電腦,或者安裝一個Linux電腦,都是可以的。虛擬機的作用就是幫你虛擬出運行一臺真正的電腦所需要的各種資源,然后就可以在上面跑其它的操作系統。
常用的虛擬機有Wmware,VirtualBox這兩種。這兩種虛擬機用起來差不多,但WMware功能更全面,因此良許更喜歡用VMware,你們可以根據自己的喜好來選擇。
02 虛擬機的安裝
首先要下載虛擬機的安裝包,當前最新版本是VMware 14.1.1。下載途徑有三個:
1. VMware官網;
2. 百度軟件中心;
3. 找良許Linux --> 回復:虛擬機,獲取下載鏈接。
虛擬機安裝包下載完畢之后,將它安裝到電腦里。這個安裝過程很簡單,一路下一步就好了。
03 Ubuntu鏡像的下載
虛擬機安裝完之后,這時候才完成第一步。這就像買回來了一臺電腦,但還沒安裝操作系統。Linux的發行版有很多版本可以選擇,比如:Ubuntu,Fedora,Centos,OpenSUSE,等等。其中,對于入門者來說,使用Ubuntu比較適合,因為它各種庫什么的都已經集成好了,無需再繁瑣的安裝了。
獲取Ubuntu18.04 64位操作系統的鏡像方法有三個:
1. Ubuntu官網;
2. 百度軟件中心;
3. 找良許Linux --> 回復:虛擬機,獲取下載鏈接。
下載完之后把鏡像隨便放在一個地方(比如桌面),你只要能找到就好,安裝完之后就可以刪除掉它。
04 虛擬機硬件配置
在正式安裝虛擬機之前,要先配置一下電腦,比如給它分配多大內存,CPU幾核的,網絡類型是怎樣的,等等,就跟我們攢機一樣。
1. 虛擬機安裝完畢之后,界面如下圖所示:
點擊圖中紅圈圖標,開始創建一個新的虛擬機;
2. 在彈出的對話框中選擇自定義,然后點擊下一步:
3. 在 「虛擬機硬件兼容性」 里選擇默認的即可,直接下一步:
4. 在 「安裝客戶機操作系統」 里選擇 「稍后安裝操作系統」 ,然后點擊下一步:
5. 依然選擇默認的,直接下一步:
6. 在這一步 「命名虛擬機」 里,給自己的虛擬機命個名稱,比如Ubuntu_LX,再選擇要安裝的位置。虛擬機所產生的文件比較大,所以選擇位置所在的磁盤最好剩余空間大一些。
7. 虛擬機處理器數量及內核都選擇2,對于開發來說夠用了。即使不夠用的話,這個參數也是可以修改的。
8. 虛擬機內存選擇2048M,也就是2G,最好選擇1G,2G,4G,8G,不要選擇3G這樣的。這個參數后期也可以修改。
9. 后面這幾步都可以直接「下一步即可」 ,磁盤空間20G不夠的話可以選擇40G,這個是動態的,也就是不是一下子就占用了你磁盤40G,而是用多少占多少。
10. 上面幾步完成之后,虛擬機長這個樣:
05 Ubuntu鏡像安裝
虛擬機硬件配置好之后,接下來正式安裝Ubuntu操作系統。
1. 點擊上圖圈出來的 「編輯虛擬機設置」
2. 在彈出的菜單里,從左邊選擇 「CD/DVD(SATA)」 ,然后在右邊選擇「使用ISO鏡像文件」,再點擊瀏覽,找到Ubuntu鏡像。
3. 之后點擊確定,再點擊「開啟虛擬機」 。
4. 虛擬機開啟之后,選擇 「Install Ubuntu」 。左邊的語言選擇,是指系統語言。我們做開發的,建議語言什么的都選擇英語。
5. 接下來這步選擇的是鍵盤布局。我們這邊所使用的布局是美國標準的,所以都選擇English(US)。
6. 接下來這一步直接默認:
7. 在 「Installation Type」 里也是默認即可,直接點擊 「Install Now」,之后的彈出窗口里點擊 「continue」:
8. 在 「Where Are You?」 地圖里點擊一下大中國,然后點擊 「continue」:
9. 在 「Who Are You?」 填入個人基本信息,然后點擊 「continue」,接下來就進入了下載安裝的過程,整個過程大概需要20分鐘。
10. 安裝完畢之后選擇 「restart now」,重啟虛擬機。至此,虛擬機及Linux系統均已經安裝完成。
在下一篇里,良許Linux將手把手教你Linux虛擬機的基本配置,使虛擬機達到可以正常開發的程度。
點擊上方"walkingcloud"關注,并選擇"星標"公眾號
什么是 WireGuard?
WireGuard 是一個易于配置、快速且安全的開源 Virtual Private Network,它利用了最新的加密技術。目的是提供一種更快、更簡單、更精簡的通用 Virtual Private Network,它可以輕松地在樹莓派這類低端設備到高端服務器上部署。
IPsec 和 OpenV*P*N 等大多數其他解決方案是幾十年前開發的。安全研究人員和內核開發人員 Jason Donenfeld 意識到它們速度慢且難以正確配置和管理。
這讓他創建了一個新的開源Virtual Private Network 協議和解決方案,它更加快速、安全、易于部署和管理。
WireGuard 最初是為 Linux 開發的,但現在可用于 Windows、macOS、BSD、iOS 和 Android。除了可以跨平臺之外,WireGuard 的最大優點之一就是易于部署。配置和部署 WireGuard 就像配置和使用 SSH 一樣容易
WireGuard 受到 Linus 本人的推薦,將整合到最新版Linux Kernel中,安裝部署更方便。WireGuard 總共幾千行代碼,只需十分鐘就能搞定一臺WireGuard服務器。
Wireguard安全性高。極佳的Virtual Private Network 漫有特性,設備支持廣泛。內核級別的端對端隧道加密技術,擁有良好的加密特性。Wireguard配置文件由兩部分組成:interface和peer。服務器端、客戶端互為平等關系。支持預共享密鑰preshared key加密,防攻擊
當將 WireGuard 安裝為內核模塊時,基本上需要你自行修改 Linux 內核并向其添加代碼。從 5.6 內核開始,你無需手動添加內核模塊。默認情況下它將包含在內核中
所以下面使用Fedora Server 33版本來配置Wireguard
(內核版本5.8.15,默認就支持wireguard)
參考如下連接完成
https://www.linode.com/docs/guides/set-up-wireguard-vpn-on-ubuntu/
拓撲如下
(圖片可放大查看)
1) 左側內網A Fedora33機器的IP 192.168.233.128作為wireguard Server端
2) 在左側出口路由器上映射192.168.233.128的TCP 22(SSH)和UDP 51820(WireGuard Server通信端口),映射后公網為10.20.90.193(模擬公網IP)
3) 右側內網B Fedora33機器的IP 192.168.198.131作為wireguard Client端
內網IP 192.168.233.128
dnf install wireguard-tools
(圖片可放大查看)
(圖片可放大查看)
1、服務端的私鑰
wg genkey | tee /etc/wireguard/server.key
yAQFm+E6gVBCG7c72lhRngaCZy+gVzCCpRbudPmuKms=
2、服務端的公鑰
cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub
BRPmId4mnGBfCgmniDf3Ar+1cvXcS85pntqYH1w0jlM=
3、客戶端的私鑰
wg genkey | tee /etc/wireguard/client.key
8F3bI2FydYhh8Ps9Xi2IenrdQrH9xXw6wzJaVrRSSHE=
4、客戶端的公鑰
cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pub
hXhveUdRmz6uQEr+7fQOh1YQ1c56sTiIXfzHVTmeBGs=
(圖片可放大查看)
ip addr或者ifconfig
先確認目前的網絡接口名稱
如下圖所示網絡接口名稱 為ens33
(圖片可放大查看)
接下來編輯wg0.conf
vi /etc/wireguard/wg0.conf
#添加如下內容
[Interface]
# specify generated private key for server
PrivateKey = yAQFm+E6gVBCG7c72lhRngaCZy+gVzCCpRbudPmuKms=
# IP address for VPN interface
Address = 172.16.100.1
# UDP port WireGuard server listens
ListenPort = 51820
# possible to set any commands after WireGuard starts/stops
# set routing rules like follows to access to local network via VPN session
# [wg0] ? VPN interface name
# [eth0] ? Ethernet interface name
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE
[Peer]
# specify public key for client
PublicKey = hXhveUdRmz6uQEr+7fQOh1YQ1c56sTiIXfzHVTmeBGs=
# clients' VPN IP addresses you allow to connect
# possible to specify subnet ? [172.16.100.0/24]
AllowedIPs = 172.16.100.5
vi /etc/sysctl.conf
添加一行
net.ipv4.ip_forward=1
生效配置
sysctl -p
(圖片可放大查看)
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0.service
ip addr
(圖片可放大查看)
1)映射192.168.233.128的TCP 22(SSH)——方便調試
2)UDP 51820(WireGuard Server通信端口)
映射后公網為10.20.90.193(模擬公網IP)
由于是使用VMwareWorkstation虛擬機NAT模式搭建的環境,端口映射的配置方式如下
(圖片可放大查看)
(圖片可放大查看)
(圖片可放大查看)
dnf install wireguard-tools
(圖片可放大查看)
(圖片可放大查看)
vi /etc/wireguard/wg0.conf
cat /etc/wireguard/wg0.conf
添加如下配置
[Interface]
# specify private key for client generated on WireGuard server
PrivateKey = 8F3bI2FydYhh8Ps9Xi2IenrdQrH9xXw6wzJaVrRSSHE=
# IP address for VPN interface
Address = 172.16.100.5
[Peer]
# specify public key for server generated on WireGuard server
PublicKey = BRPmId4mnGBfCgmniDf3Ar+1cvXcS85pntqYH1w0jlM=
# IP addresses you allow to connect
# on the example below, set WireGuard server's VPN IP address and real local network
AllowedIPs = 172.16.100.1, 192.168.233.0/24
# specify server's global IP address:port
# (acutually, example of IP below is for private range, replace to your own global IP)
EndPoint = 10.20.90.193:51820
(圖片可放大查看)
nc -vuz 10.20.90.193 51820
(圖片可放大查看)
wg-quick up wg0
#關閉則用wg-quick down wg0
(圖片可放大查看)
wg show
(圖片可放大查看)
如下圖所示,測試OK,WireGuard虛擬專用網搭建成功
(圖片可放大查看)
若Server端沒有關閉firewalld防火墻,可能會導致客戶端無法訪問Server端的LAN網絡
需要在Server端關閉firewalld防火墻并重啟wg-quick服務