ホームページ >バックエンド開発 >Golang >Go言語でIPアドレスを変更する方法

Go言語でIPアドレスを変更する方法

DDD
DDDオリジナル
2023-06-05 09:41:331522ブラウズ

Go 言語で IP アドレスを変更する方法: 1. ネット ライブラリの関数インターフェイス "net.InterfaceAddrs()" を使用してローカル IP アドレスを取得します; 2. "LinkByName" 関数を使用してローカル IP アドレスを取得します「eth0」という名前の IP アドレス ネットワーク インターフェース情報、次に「ParseAddr」関数を使用して新しい IP アドレスを解析し、次に「AddrAdd」関数を使用して新しい IP を指定されたネットワーク インターフェースに追加します。 3. 同じものを使用します。メソッドをコードとして使用してローカル IP アドレスを取得し、ローカル IP アドレスが変更されたことを確認します。

Go言語でIPアドレスを変更する方法

このチュートリアルの動作環境: Windows 10 システム、go バージョン 1.20、dell g3 コンピューター。

Go 言語は、多くの使いやすいネットワーク プログラミング ライブラリを提供する、同時実行をサポートする高性能プログラミング言語です。 IP アドレスを変更する場合、Go 言語には操作を簡単にするための API とツールがいくつか用意されています。今回はGo言語を使ってIPアドレスを変更する方法を紹介します。

IP アドレスの変更方法:

1. ローカル IP アドレスの取得

ローカル IP アドレスを取得します。 Go 言語は非常にシンプルです。ネット ライブラリの関数インターフェイスを使用して、ローカル IP アドレスを取得できます。以下は、ローカル IP アドレスを取得するサンプル コードです。

addrs, err := net.InterfaceAddrs()
if err != nil {
    fmt.Println("Error:", err)
}
for _, addr := range addrs {
    if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
        if ipnet.IP.To4() != nil {
            fmt.Println("Local IP: ", ipnet.IP.String())
        }
    }
}

このコード スニペットでは、ネット ライブラリの関数インターフェイス net.InterfaceAddrs() を使用して、ローカル IP アドレスを取得します。この関数は、IP アドレスを格納する配列を返します。ループを使用して IP アドレス配列を走査し、IPv4 アドレスでもループバック アドレスでもない IP アドレスをフィルターで除外し、最後にローカル IP アドレスを出力します。

2. ローカル IP アドレスを変更する

ローカル IP アドレスを変更するには、netlink ライブラリを使用する必要があります。 Netlink は、Linux カーネルのプロセス間通信に使用されるプロトコル ファミリであり、主にカーネルとユーザー空間プログラム間の通信に使用されます。 Netlink ライブラリは、ネットワーク インターフェイスをより簡単に管理および制御できる一連の関数と構造を提供します。

次は、ネットリンク ライブラリを使用してローカル IP アドレスを変更するためのサンプル コードです:

link, err := netlink.LinkByName("eth0")
if err != nil {
    panic(err)
}
 
addr, err := netlink.ParseAddr("192.168.0.2/24")
if err != nil {
    panic(err)
}
 
if err := netlink.AddrAdd(link, addr); err != nil {
    panic(err)
}

このコード スニペットでは、まず LinkByName 関数を使用して、「eth0」という名前のネットワーク インターフェイス情報を取得します。 」。次に、ParseAddr 関数を使用して新しい IP アドレスを解析し、AddrAdd 関数を使用して新しい IP アドレスを指定されたネットワーク インターフェイスに追加します。

3. ローカル IP アドレスが変更されたかどうかを確認する

ローカル IP アドレスを変更した後、コードを再度実行して、変更が成功したかどうかを確認できます。ローカル IP アドレスを取得するコードと同じメソッドを使用して、ローカル IP アドレスが指定した新しい IP アドレスに変更されたかどうかを確認できます。最後のコード例は次のとおりです。

package main
 
import (
    "fmt"
    "github.com/vishvananda/netlink"
    "net"
)
 
func main() {
 
    addrs, err := net.InterfaceAddrs()
    if err != nil {
        fmt.Println("Error:", err)
    }
    for _, addr := range addrs {
        if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
            if ipnet.IP.To4() != nil {
                fmt.Println("Local IP: ", ipnet.IP.String())
            }
        }
    }
 
    link, err := netlink.LinkByName("eth0")
    if err != nil {
        panic(err)
    }
 
    addr, err := netlink.ParseAddr("192.168.0.2/24")
    if err != nil {
        panic(err)
    }
 
    if err := netlink.AddrAdd(link, addr); err != nil {
        panic(err)
    }
 
    addrs, err = net.InterfaceAddrs()
    if err != nil {
        fmt.Println("Error:", err)
    }
    for _, addr := range addrs {
        if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
            if ipnet.IP.To4() != nil {
                fmt.Println("Local IP: ", ipnet.IP.String())
            }
        }
    }
}

このコード スニペットは 2 つのローカル IP アドレスを出力します。 1 つ目は元のローカル IP アドレスで、2 つ目はローカル IP アドレスを変更した後に出力される新しいローカル IP アドレスです。このようにして、ローカル IP アドレスが正常に変更されたかどうかを確認できます。

概要

この記事では、Go 言語を使用してローカル IP アドレスを変更する方法を紹介しました。最初にローカル IP アドレスを取得する方法を示し、次に netlink ライブラリを使用してローカル IP アドレスを変更する方法を紹介しました。最後に、ローカル IP アドレスが正常に変更されたかどうかを確認する方法を示しました。この記事がお役に立てば幸いです。

以上がGo言語でIPアドレスを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。