WSL2-CentOS7固定IP

来源:https://www.cnblogs.com/yuque/archive/2022/05/18/16283730.html
-Advertisement-
Play Games

ps命令 ps命令來自於英文片語”process status“的縮寫,其功能是用於顯示當前系統的進程狀態。使用ps命令可以查看到進程的所有信息,例如進程的號碼、發起者、系統資源使用占比(處理器與記憶體)、運行狀態等等。幫助我們及時的發現哪些進程出現”僵死“或”不可中斷“等異常情況。 經常會與kill ...


WSL2-CentOS7固定IP

WSL2 採用 Hyper-V 的 Internal Virtual Switch,這個虛擬交換機本身是可以設置靜態 IP 地址的,但是 WSL2 卻自作聰明,在每次全新啟動的時候將網路配置恢覆成 DHCP,這就導致WSL2每次全新啟動後的IP都不固定,如果需要一個固定的IP,需要做一些設置。

備註:如果使用localhost方式可正常訪問的話,可不做此固定IP配置;我是在win11中使用IDEA配置遠程訪問docker地址localhost:2375時無法連接,才進行配置的;實測在win10中可正常連接。

image_20220509142546

前置設置

因為WSL2每次全新啟動的時候將網路配置恢覆成DHCP;重新生成網關和IP ;為了使我們的自定義IP能生效;我們需要對WSL2進行配置,阻止它每次重新配置網關;如果不進行此配置,即使自定義了IP,在WSL2啟動後一段時間,自定義IP會被自動生成的IP進行覆蓋而無法生效。配置方法如下:

進入WSL2,使用命令查看:cat /etc/resolv.conf

image-20220509172624161

如圖所示,我們可以看到,配置文件註釋說明得很清楚:這個文件為WSL自動生成;如果不想生成這個文件,需要添加配置文件。

因此,我們按註釋的意思,使用命令新建配置文件:vim /etc/wsl.conf ;配置文件內容為:

[network]
generateResolvConf = false

增加此配置後,則不會再自動生成此文件。

由於原來的/etc/resolv.conf是可能是一個軟鏈接(鏈接到/run/resolvconf/resolv.conf);不管是真實文件還是軟鏈接,我們都需要刪除它,為後面腳本進行自定義DNS做準備

執行刪除命令:rm /etc/resolv.conf

至此,WSL2固定IP的前置設置完成

創建批處理文件設置靜態IP

完成前面的設置後,我們需要在windows創建一個 set_static_ip.bat 批處理腳本進行IP設置,腳本內容如下:

@echo off
rem 以管理員身份運行
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

rem 需要設置的子系統名稱
set linux=CentOS7
rem 設置網段
set localnet=192.168.86
rem 設置子系統的ip
set ip=%localnet%.2

wsl -d %linux% -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d %linux% -u root ip addr add %ip%/24 broadcast %localnet%.255 dev eth0
wsl -d %linux% -u root ip route add 0.0.0.0/0 via %localnet%.1 dev eth0
wsl -d CentOS7 -u root echo "nameserver %localnet%.1" ^> /etc/resolv.conf

powershell -c "Get-NetAdapter -IncludeHidden -Name 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress  %localnet%.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix %localnet%.0/24"
exit

腳本中的子系統名稱和網段可根據實際情況修改;雙擊執行此腳本可完成WSL2的靜態IP設置

開機自動設置

由於每次重新啟動Windows系統都需要執行一次這個腳本來設置靜態IP ;為了方便,我們需要一些設置來實現開機自動執行腳本;有兩種方式,可根據需要選擇:

  • 方式一:

    set_static_ip.bat 批處理腳本放到windows開機啟動目錄下 C:\Users\用戶名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 實現開機自動執行;需要註意的是,請把路徑中的 "用戶名" 替換為實際的用戶名

  • 方式二:

    在WSL2中使用命令編輯 vim ~/.bashrc;在最後添加如下內容:

    if [ `hostname -I` != 192.168.8.2 ]; then
         cmd.exe /c "D:\set_static_ip.bat" 1>nul
    fi
    

    註意:此方式實現是的在WSL2啟動時設置IP,且只適用於從windows應用商店下載安裝的WSL2分發版本,因為只有是從windows應用商店下載安裝的WSL2分發才可能調用cmd.exe;而其他方式(例如從github下載)安裝的WSL2分發則可能無法直接調用cmd.exe

Host映射

在windows的host文件(C:\Windows\System32\drivers\etc\hosts)添加如下內容:192.168.86.2 windows.wsl

在WSL2的host文件添加如下內容:(/etc/hosts)添加如下內容:192.168.86.1 windows.local

添加Host映射後,可實現windows和wsl互ping及互相訪問的能力;不添加映射,根據IP也可能互相訪問;只是映射後,主機名更容易記住。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .Net 6 WebApi 項目 在Linux系統上 打包成Docker鏡像,發佈為Docker容器實例 步驟教學,超詳細! ...
  • curl curl 報錯: curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate. 忽略方法 添加臨時 功能變數名稱解析 緩存的方式 ...
  • 配置yum源,自建機房的機器無影響,各雲伺服器建議使用雲伺服器的yum源地址 以騰訊雲為例,CentOS EPEL 更新伺服器yum所有軟體 ...
  • Termius是微軟的一款SSH終端工具,它支持多平臺。而且操作界面十分ha好看且簡潔,今天分享給大家❤️ 軟體下載 關註下方公眾號,回覆termius獲取下載地址 軟體功能介紹 Termius Mac破解版是一款非常好用而且漂亮的SSH客戶端,能快速遠程式控制制伺服器,可以定製自己喜歡的主題,支持FT ...
  • 基礎 查看powershell版本 PS C:\Users\chino> $PSVersionTable Name Value PSVersion 5.1.22000.653 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} ...
  • 為什麼要使用ember.js ​ ember.js是一個JavaScript框架,它大大減少了構建任何web應用程式所需的時間、精力和資源。它專註於讓你,開發人員,通過做所有常見的,重覆的,但重要的,涉及大多數web開發項目的任務,儘可能地提高生產力。 ​ 歷史 Ember.js的原始名稱是Spro ...
  • 管道與重定向的使用 標準輸入的文件描述符為0. 標準輸出的文件描述符為1 錯誤輸出的文件描述符為2 管道 管道:可以讓我們將多條命令連接在一起。 作用:將一個命令的標準輸出重定向給下一個命令,並作為該命令的標準輸入。 (base) [root@localhost ~]# ifconfig ens33 ...
  • 本文例子參考《STM32單片機開發實例——基於Proteus虛擬模擬與HAL/LL庫》 源代碼:https://github.com/LanLinnet/STM33F103R6 項目要求 單片機每隔1秒採集一次溫度值(0~40℃),並通過串口輸出(ASCII格式)。 硬體設計 在第一節的基礎上,在P ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...