GNU/Linux >> Linux の 問題 >  >> Linux

DHCP を使用して、1 つのネットワーク カードで 2 つの IP アドレスを取得する

DHCP 応答は要求側インターフェースの MAC アドレスに基づいているため、物理インターフェースが 1 つの場合、答えは「できません」です。これを行う唯一の方法は、スクリプトを使用することです。

おそらく次のようなものです (プライマリで定義されたサブインターフェースを使用):

<オール>
  • プライマリ インターフェイスが DHCP を発行し、IP アドレスを取得します
  • macchanger はインターフェイスの MAC アドレスを変更します
  • サブ インターフェイスは DHCP を発行し、IP アドレスを取得します
  • macchanger で MAC アドレスを元に戻す
  • dhcp クライアントを強制終了して、後で自動的に実行されないようにします。与えられた IP アドレスのリース時間を計算し、リースが期限切れになる前にこのスクリプトを再度実行するようにスケジュールしてください。

    更新

    このためには、iproute2 をインストールする必要があります。次のコマンドは、既存の eth0 インターフェイスにバインドされた仮想インターフェイスを追加します:

    ip link add link eth0 address 00:11:22:33:44:55 virtual0 type macvlan
    

    インターフェイスの mac と「virtual0」名を好きな名前に置き換えます。オンにします:

    ip link set virtual0 up
    

    次に、必要に応じて dhcpd または dhclient または ifconfig を使用して構成します。私はこれを Debian スクイーズでテストしました - あなたのディストリビューションはカーネルで必要なものすべてを有効にしていないかもしれません (特に macvlan)。


    @JesseChisholm が示唆したように、複雑なネットワーク設定を行うよりも、DHCP サーバーに正しいことを要求する方がはるかに簡単です。

    OpenWRT の場合、以下を実行するだけです:

     # udhcpc -i eth0:1 -x 0x3d:0100BEEFC0FFEE
    

    その結果、同じ dhcp サーバーから 2 つの IP アドレスが取得されました。

    0x36 は、クライアント ID オプションであるオプション 61 です。 :の後には、16 進バイト オプションがあります。これは udhcpc のヘルプ オプションから来ました:

     # udhcp --help
     BusyBox v1.22.1 (2014-10-08 16:34:50 HKT) multi-call binary.
    
     Usage: udhcpc [-fbqRB] [-t N] [-T SEC] [-A SEC/-n]
     [-i IFACE] [-s PROG] [-p PIDFILE]
     [-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]...
    
     ...
     -x OPT:VAL     Include option OPT in sent packets (cumulative)
                    Examples of string, numeric, and hex byte opts:
                    -x hostname:bbox - option 12
                    -x lease:3600 - option 51 (lease time)
                    -x 0x3d:0100BEEFC0FFEE - option 61 (client id)
    

    Linux
    1. Getoptsを使用して1つのオプションに2つの引数を提供しますか?

    2. proc のみを使用してローカル ネットワーク インターフェイス アドレスを取得しますか?

    3. ネットワーク インターフェイスがワイヤレスか有線かを判断する

    1. RHEL7LinuxでネットワークインターフェイスをDHCPクライアントとして構成する

    2. スプーフィングされた MAC アドレスで iproute2 ip link コマンドを使用して、仮想ネットワーク インターフェイスを作成します。

    3. ユーザー (およびそのアプリ) を 1 つのネットワーク インターフェイスに制限できますか?

    1. CentOS8で単一のネットワークインターフェイスに複数のIPアドレスを割り当てる方法

    2. ネットワークのトラブルシューティングにSSツールを使用する

    3. Linux – Linuxを使用したSdカードのストレステスト?