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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...