web-dev-qa-db-ja.com

1つのインターフェイスでDHCPと静的IPアドレスの両方が同時に

Linux (eg. eth0:0, eth0:1)では、単一のインターフェイスに複数のIPアドレスを使用できます。しかし、DHCPと静的IPを同時に使用できますか? eth0:1には静的IPアドレスがあり、eth0:0にはDHCPを使用して構成する必要があります。

どうすれば両方を達成できますか?

15
shantanu

はい、これを行うことができます。ただし、これには通常、eth0:0およびeth0:1の代わりにeth0およびeth0:0を使用します。次のように/ etc/network/interfacesファイルを設定できます。

auto lo eth0 eth0:0
iface lo inet loopback

iface eth0 inet dhcp

iface eth0:0 inet static
    address ...
    netmask ...

おそらく、eth0:0インターフェイスにゲートウェイを設定したくないのは、DHCPから取得したゲートウェイ設定と競合する可能性があるためです。/etc/network/interfacesに手動設定を入力する場合、network-managerが設定を管理しようとしていないことを確認する必要があります。これは ここで説明 です。

11
jkt123

同じ問題に対する答えを集中的に検索した後、Network Managerが接続を管理し続けることができるソリューションを考え出しました。最初に、[接続の編集]> [追加]を使用して、通常Network ManagerでDHCP接続を作成します。これにより、/ etc/NetworkManager/system-connections /にファイルが作成されます。このファイルをスーパーユーザー権限でテキストエディターで開きます。例:Sudo nano/etc/NetworkManager/system-connections/DHCPEthernet

コードは次のようになります。

[802-3-ethernet]
duplex=full
mac-address=00:0E:C6:88:31:43

[connection]
id=DHCPEthernet
uuid=26af83f1-c48c-4454-9038-bbb4bec3e3a3
type=802-3-ethernet
timestamp=1405008541

[ipv6]
method=auto

[ipv4]
method=auto

追加する静的IPアドレスの行をipv4セクションの下に追加します。この例では、ゲートウェイなしで192.168.10.1を使用しています

address1=192.168.10.1/24,0.0.0.0

ファイルを保存し、Network Managerを使用してネットワークから切断してから再接続します。 pingを実行すると、両方のIPアドレスが適切に機能することが確認されます。 ip addrからの出力は成功を確認します。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host 
       valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 14:10:9f:d7:22:0b brd ff:ff:ff:ff:ff:ff
    inet 172.20.1.71/24 brd 172.20.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::1610:9fff:fed7:220b/64 scope link 
       valid_lft forever preferred_lft forever
3: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0e:c6:88:31:43 brd ff:ff:ff:ff:ff:ff
    inet 172.20.1.60/24 brd 172.20.1.255 scope global eth2
       valid_lft forever preferred_lft forever
    inet 192.168.10.1/24 brd 192.168.10.255 scope global eth2
       valid_lft forever preferred_lft forever
    inet6 fe80::20e:c6ff:fe88:3143/64 scope link 
       valid_lft forever preferred_lft forever
8
Andrew Vian

少し調べてみたところ、最近ではnmcliツールを使用してこの構成を作成できることがわかりました。実際、NetworkManagerを完全に制御できます。 nmcliのマニュアルページは非常に詳細でわかりやすいものです。 man nmcliおよびman nm-settingsを参照してください。

この質問の構成をセットアップするための最も簡単な方法は、現在の接続プロファイルを編集することです。 GUI NetworkManagerツールからプロファイルの名前を見つけ、CLIエディターを使用して編集します(ここで名前はEthernet connectionです):

 $ Sudo nmcli c edit 'Ethernet connection' 
 
 === | nmcliインタラクティブ接続エディター| === 
 
既存の「802-3-ethernet」接続の編集:「イーサネット接続1」
 
「help」または「 ?」 
「describe [。]」と入力して、プロパティの詳細を説明します。
 
次の設定を編集できます:connection、802-3-ethernet(ethernet)、802 -1x、dcb、ipv4、ipv6 
 nmcli> goto ipv4
次のプロパティを編集できます:method、dns、dns-search、dns-options、dns-priority、addresss、gateway、routes、route-metric、ignore-auto-routes、ignore-auto-dns、 dhcp-hostname、dhcp-send-hostname、never-default、may-fail、dad-timeout、dhcp-timeout、dhcp-client-id、dhcp-fqdn 
 nmcli ipv4> ipv4.addresses {your_address_here}/{your_network_prefix_here}を設定します
「ipv4.method」を「manual」に設定しますか? [はい]: 番号
 nmcli ipv4> セーブ
接続「イーサネット接続」(87fa8e41-7fe3-435a-a2f2-29a9c8084d2d)は正常に更新されました。
 nmcli ipv4> 終了する

太字の部分は入力です。中括弧で囲んだ部分を設定に置き換えます。 ipv4.methodに関する質問にnoと答えると、DHCP構成が保持されます。あとで、構成を無効にしてから再度有効にする必要があります。これは、GUIツールまたはnmcliを使用して実行できます。

必要に応じて、コマンドラインから新しい接続を作成することもできます。

Sudo nmcli -p connection add type ethernet ifname {your_interface_name} con-name MyConnection -- ipv4.addresses {your_address}/{your_prefix_length} ipv4.method auto

繰り返しますが、中括弧で囲んだものを設定に置き換えてください。

最後に、設定ファイルを編集したい場合は、編集後にファイルをリロードすることを忘れないでください:

Sudo nmcli connection reload

この方法で作成された構成は、GUIツールを混乱させる可能性があることに注意してください。せいぜい、彼らは静的アドレスを表示しません。

2
Ville Koivunen