跳到主要內容

How to ping a IPv6 address on Linux?

Problem

假如我想透過ping6檢查一個ipv6的主機是否還活著,我可能需要注意些什麼?

Link-Local

從許多網路文章都可以知道,ping FE80::/64(link-local)位置必須加上網卡名稱:

ping6 fe80::28e8:eeea:c9c2:4f04%eno1
ping6 fe80::28e8:eeea:c9c2:4f04 -I eno1

而ping非link-local如Global或Unique的位置不需要加網卡名稱:

ping6 2a00:1450:8003::69

對programmer來說,使用相同方式會比較好維護,因此指令都加上網卡名稱可能是個方法。然而,為了方便使用者使用,有沒有可能不需讓使用者提供網卡名稱呢? 是否程式可以自己嘗試所有網卡名稱,來告訴使用者目標機器是否還活著呢? 我的意思是指,假設有網卡eno1與eno2,是否可能透過以下指令,來告訴使用者 fe80::28e8:eeea:c9c2:4f04這台機器活著呢?

ping6 fe80::28e8:eeea:c9c2:4f04%eno1
ping6 fe80::28e8:eeea:c9c2:4f04%eno2

這方法最大的問題在於,如果兩個網段都存在著相同的IPv6位置,就會誤判。我有兩台主機,網路設定如下:

Linux:

Windows:

其中Windows eth5與Linux eno1的Link-Local位置重複。接著在另外一台主機執行ping指令:
可以得知,如果使用每張網卡都ping的方式,的確有可能會發生誤判的情形。因此,有幾個做法:
  • 忽略這種會重複的情況。畢竟位置這麼多,重複機率極低。PRTG和opManager應該都是使用這種模式。
  • 根據網卡去管理。就我所知,華為eSight在使用之前,會先選擇管理的網卡。

執行指令與參數

在比較舊版本的Linux中,是無法使用ping -6,因此建議直接使用ping6。此外,我在CentOS7.3曾發生過-I參數無效的情形(link),因此建議使用%去傳遞管理網卡名稱。

ping6 [位置]%[網卡名稱]

Reference

留言

這個網誌中的熱門文章

PostgreSQL - Unattended installation on windows

Introduction 要將別人軟體包裝到自己軟體中,不可或缺的東西就是Unattended installation。以Unattended installation來說,我們可以選擇透過Installer的silent mode安裝,也可以透過把目標軟體做成portable的版本。本篇文章分享這兩種方法,教導大家如何將PostgreSQL透過Unattended installation方式安裝到目標系統成為service。 Note. 本篇以PostgreSQL 10.7為例。 Install with installer Tips 安裝程式或反安裝程式的參數,除了可以直接上官網搜尋Installation User Guide以外,也可以直接使用help參數查詢: postgresql- 10.7 - 2 -windows-x64.exe --help Windows安裝程式主要有EnterpriseDB與BigSQL兩種。BigSQL版本安裝元件是透過網路下載且支援參數不如EnterpriseDB版本多,以我們需求來說,我們傾向於使用EnterpriseDB版本。接下來分享給大家安裝與反安裝方法。 Installation @ echo off set INSTALL_DIR =C:\postgres10 set INSTALLER =postgresql- 10.7 - 2 -windows-x64.exe   rem options for installation set SSMDB_SERVICE =postgresql- 10 set MODE =--unattendedmodeui none --mode unattended   set DB_PASSWD =--superpassword postgres set DB_PORT =--serverport 5432   set SERVICE_NAME =--servicename % SSMDB_SERVICE %   set PREFIX =--prefix "%INSTALL_DIR%" set DATA_DIR =--datadir "%INSTALL_DIR%\data"   set OPTIONS =

How to install RIDE on Windows?

Introduction 多年沒在Windows上開發RobotFramework,趁著這次整理一下RIDE安裝方法。 目前RIDE最新版本與Python對應版本如下: (3.6 < python <= 3.11) Install current released version (2.0.8.1) with: pip install -U robotframework-ride 安裝Python 直接到Python官網找尋最新的3.11版本,我使用3.11.9: link 。安裝就是一直下一步而已。 安裝wxPython 每次安裝RIDE最困難的都是wxPython。看了一下 官網 描述,我就姑且相信一下: 接著進入下 載頁面 就有安裝教學。基本上就是到Python目錄下的Scripts直接執行以下command: pip install -U wxPython 安裝RIDE 接著就如RIDE官網所說,執行以下command: pip install -U robotframework-ride 啟動RIDE 直接在相同目錄下執行ride就可以啟動了,你也可以直接在桌面建ride連結,加快下次啟動時間。 沒想到這次這麼順利就安裝完成了。因為我是使用java去啟動robot framework,就不特別講要怎麼使用pip安裝robot framework了。

Hello World!

即將要搬家,因此舊網頁內容將慢慢轉移至Blogger。 如果要存取舊網頁,可以使用以下連結: https://wiki.tonylin.idv.tw/dokuwiki/doku.php