web-dev-qa-db-ja.com

DHCPによって割り当てられたIPアドレスエイリアス

Eth0にいくつかのエイリアスを作成したいのですが、静的IPに設定するのではなく、DHCPによってアドレスを割り当てています。これも可能ですか?

私が見たすべての例では、次のコマンドを使用して静的IPを割り当てています。

ifconfig eth0:0 192.168.1.11 up
17
Steve

これは、2つのDHCPクライアントが異なるMACアドレスを使用している場合にのみ可能です。つまり、単一のMACアドレスを持つ同じ物理ネットワークインターフェイスで両方を実行することはできません。

解決策は、Linuxの仮想MAC-VLANネットワークインターフェイスです。 MAC-VLANインターフェイスは、物理インターフェイスに支えられた仮想ネットワークインターフェイスですが、MAC-VLANデバイスの作成時にランダムに生成される別のMACアドレスを使用します。

物理インターフェイスを使用してMAC-VLANインターフェイスを作成したら、物理インターフェイスと同じように使用します。特定のケースでは、物理インターフェイスで1つのDHCPクライアントを実行し、MAC-VLANデバイスで別のDHCPクライアントを実行できます。各デバイス(物理およびMAC-VLAN)は、独自のIPアドレスを持つことができます。

次のコマンドを実行すると、macvlan0から新しいMAC-VLANデバイスeth0を作成できます

ip link add dev macvlan0 link eth0 type macvlan

実行すると削除できます

ip link delete dev macvlan0

NCD、私のネットワーク構成ソフトウェア( http://code.google.com/p/badvpn/wiki/NCD )を使用して、次のNCDプログラムはeth0macvlan0macvlan1)、それぞれでDHCPを実行し、取得したIPアドレスを割り当てます。ルートやDNSサーバーの追加などの他の作業も簡単に行えます。興味のある方はNCDのページをお読みください。

process lan {
    # Set device.
    var("eth0") dev;

    # Wait for device to appear, set it up, and wait for cable to be plugged in.
    net.backend.waitdevice(dev);
    net.up(dev);
    net.backend.waitlink(dev);

    # Start DHCP's.
    provide("lan-link");
}

process lan_dhcp1 {
    # Wait for link.
    depend("lan-link") linkdep;

    # Choose virtual device name.
    var("macvlan0") vdev;

    # Create virtual MAC-VLAN device.
    list("/sbin/ip", "link", "add", "dev", vdev, "link", linkdep.dev, "type", "macvlan") do;
    list("/sbin/ip", "link", "delete", "dev", vdev) undo;
    run(do, undo);

    # Set virtual device up.
    net.up(vdev);

    # DHCP configuration on virtual device.
    net.ipv4.dhcp(vdev) dhcp;
    ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
    ifnot(test_local);

    println(vdev, ": got address ", dhcp.addr);

    # Assign address to virtual device.
    net.ipv4.addr(vdev, dhcp.addr, dhcp.prefix);
}

# This differs from above only in interface name (macvlan1).
process lan_dhcp2 {
    # Wait for link.
    depend("lan-link") linkdep;

    # Choose virtual device name.
    var("macvlan1") vdev;

    # Create virtual MAC-VLAN device.
    list("/sbin/ip", "link", "add", "dev", vdev, "link", linkdep.dev, "type", "macvlan") do;
    list("/sbin/ip", "link", "delete", "dev", vdev) undo;
    run(do, undo);

    # Set virtual device up.
    net.up(vdev);

    # DHCP configuration on virtual device.
    net.ipv4.dhcp(vdev) dhcp;
    ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
    ifnot(test_local);

    println(vdev, ": got address ", dhcp.addr);

    # Assign address to virtual device.
    net.ipv4.addr(vdev, dhcp.addr, dhcp.prefix);
}

最終的には、macvlan0macvlan1にそれぞれ独自のDHCP取得IPアドレス、および稼働しているがIPアドレスを持たないeth0が含まれます。または、MAC-VLANインターフェイスを1つだけ作成し、eth0自体で1つのDHCPインスタンスを実行することもできます。

17
Ambroz Bizjak

DHCPサーバーがインターフェイスに複数のアドレスを送信できるようにするDHCP構成を見たことがありません。プロトコルがそれをサポートしているとは思わない。インターフェイスで複数のIPアドレスを取得したら、実際にはそれらを静的アドレスとして構成する必要があります。

一部のDHCPクライアントでは、アドレスが指定されたときに静的アドレスを割り当てることができます。 Windowsで複数を追加できるとは思いません。

すべての静的アドレスがDCHPアドレス範囲外にあることを確認してください。

0
BillThor

静的またはDHCPで割り当てられたIPアドレスを使用することは、コンピューターに対して行う選択です。

良いものがあります チュートリアルはこちら

これには多くの詳細が含まれており、DHCPで割り当てられたアドレスの代わりに静的を使用した場合に発生する可能性のある問題を回避するのに役立ちます。 DNSサーバーとゲートウェイに接続する方法。

0
bryan