Outposts サーバーで稼働する EC2 インスタンスの LNI を設定する方法を教えてください。
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのオペレーティングシステム (OS) でローカルネットワークインターフェイス (LNI) を設定したいと考えています。私の EC2 インスタンスは AWS Outposts サーバーで稼働しています。
簡単な説明
Outposts サーバーインスタンスの OS でネットワークを設定する際に、次のタスクを実行します。
- LNI に IP アドレスを割り当てます。
- LNI とローカルネットワークのゲートウェイを使用するようにルーティングを設定します。
- LNI からのトラフィックにローカルネットワークのゲートウェイを使用するようにポリシーベースのルーティングを設定します。
インスタンスの OS でネットワークインターフェイスを設定するには、次の手順を実行します。
- LNI に関連付けられているネットワークデバイスを特定して有効にします。
- (オプション) LNI に静的 IP アドレスを割り当てます。
- インターフェイスのルートとルールを設定します。
- 変更内容は永続化してください。
解決策
次の解決策は、これらの OS ディストリビューションに適用されます。
- Linux: Amazon Linux 2、Amazon Linux 2023、Red Hat Enterprise Linux (RHEL) 8、RHEL9、SUSE 12、SUSE 15、Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04
- Windows: Windows Servers 2008 R2 以降
前提条件
- Outposts サーバーをインストールします。
- Outposts サブネットの LNI を有効にします。
- Outposts サーバーでインスタンスを起動します。
- インスタンスに LNI を追加します。
注: 次のステップでは、これらの例の値を実際に使用する値に置き換えてください。
- eth1 は、LNI のデバイス名に置き換えます。
- 192.168.59.11/24 は、お使いの LNI に割り当てる IPアドレスに置き換えます。
- 192.168.59.255 は、ローカルネットワークのブロードキャストアドレスに置き換えます。
- 192.168.59.254 は、ローカルネットワークのゲートウェイに置き換えます。
- 8.8.8.8/32 は、外部 IP アドレスまたはサブネットに置き換えます。
- **8.8.8.8 ** は、外部 IP アドレスに置き換えます。
- **255.255.255.255 ** は、実際に使用する MASK に置き換えます。
- ens6 は、LNI のデバイス名に置き換えます。
- 0a:64:7a:00:4f:92 は、LNI の MAC アドレスに置き換えます。
- 192.168.59.11/24 は、CIDR 表記で LNI に割り当てられた静的 IP アドレスに置き換えます。
- 192.168.59.0/24 は、ローカルネットワークの CIDR に置き換えます。
- 24 は、ローカルネットワークのプレフィックスに置き換えます。
- Wired connection 1 は、実際の接続名に置き換えます。
LNI に関連付けられているネットワークデバイスを特定して有効にします
次の手順を実行します。
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインの [インスタンス] で、[インスタンス] を選択します。
- Outposts サーバーで実行中のインスタンスを選択します。
- [ネットワーク] セクションの [ネットワークインターフェイス] で、LNI のインターフェイス ID を選択します。
- [IP アドレス] で、LNI の MAC アドレスを書き留めます。
インスタンスの OS にログインし、次のステップを実行します。
Linux
-
(RHEL8 および RHEL9 の場合) nm-cloud-setup.service と nm-cloud-setup.timer を無効にして、LNI が Amazon EC2 コンソールに表示されている IP アドレスで 自動的に設定されないようにします。
$ sudo systemctl disable --now nm-cloud-setup.service nm-cloud-setup.timer -
次のコマンドを実行して、ネットワークデバイスの MAC アドレスを確認します。
# sudo ip link show | egrep -o "(^[0-9]:.*:)|([0-9a-f]{2}:)+[0-9a-f]{2}" -
LNI に接続されているデバイスと同じ MAC アドレスを持つネットワークデバイス名を書き留めておきます。インターフェイスがダウンしている場合は、次のコマンドを実行して有効にしてください。
sudo ip link set dev eth1 up
Windows
-
次のコマンドを管理者として実行し、ネットワークデバイスの MAC アドレスを確認します。
getmac /v -
LNI に接続されているデバイスと同じ MAC アドレスを持つネットワークデバイスを見つけます。
-
LNI に関連付けられているアダプターのアダプター設定を確認します。アダプターが有効であることを確認するには、[ネットワークと共有センター] を選択し、[アダプターの設定の変更] を選択します。
(オプション) LNI に静的 IP アドレスを割り当てる
注: ローカルネットワークで DHCP を使用している場合は、「LNI インターフェイスのルートとルールを設定する」に進んでください。RHEL8 と RHEL9 を使用している場合は、「変更を永続化する」に進んでください。
次の手順を実行します。
Linux
LNI として特定したネットワークインターフェイスに IP アドレスを割り当てます。
# sudo ip addr add 192.168.59.11/24 brd 192.168.59.255 dev eth1
Windows
「Amazon EC2 Windows インスタンスに静的 IP アドレスを割り当てる方法を教えてください」を参照してください。
注: デフォルトゲートウェイはプライマリネットワークアダプターに割り当てられます。プライマリエラスティックネットワークインターフェイスのデフォルトゲートウェイを維持するには、LNI にデフォルトゲートウェイを指定しないでください。代わりに、ローカルネットワークゲートウェイを指定する宛先に静的ルートを定義します。
LNI インターフェイスのルートとルールを設定する
注: RHEL8 と RHEL9 を使用している場合は、「変更を永続化する」に進んでください。
次の手順を実行します。
Linux
-
インスタンスの OS を開きます。
-
/etc/iproute2/rt_tables に、ルートテーブルの LNI 用のレコードを作成します。LNI が使用する ID は 300 に設定します。
# echo "300 LNI" | sudo tee -a /etc/iproute2/rt_tables -
LNI のあるローカルネットワークの CIDR から送信されたトラフィックについて、LNI テーブルでチェックするルールを作成します。
# sudo ip rule add from 192.168.59.0/24 table LNI注: 静的 IP アドレスを使用する場合は、ローカルネットワーク全体ではなく、単一の IP アドレスに基づいてルールを定義します。LNI に複数の IP アドレスを割り当てて、複数のルールを使用する場合は、別個の IP アドレスに基づいてルールを定義します。
-
**LNI ** テーブルにデフォルトルートを作成します。
# sudo ip route add default via 192.168.59.254 dev eth1 table LNI -
外部 IP アドレスまたはサブネットへのアウトバウンドトラフィック用のルートを作成します。ローカルネットワークのゲートウェイを使用して LNI を経由するようにアウトバウンドトラフィックを設定します。
# sudo ip route add 8.8.8.8/32 via 192.168.59.254 dev eth1
Windows
-
インスタンスの OS を開きます。
-
管理者としてコマンドプロンプトウィンドウを開きます。
-
外部 IP アドレスまたはサブネットへのアウトバウンドトラフィックが、ローカルゲートウェイのネットワークを使用するように強制するルートを作成します。
route ADD 8.8.8.8 MASK 255.255.255.255 192.168.59.254 -
手順を繰り返して、LNI に接続できる各外部 IP アドレスまたはサブネットのルートを追加します。これらのルートは、ローカルネットワークのゲートウェイを使用して、ローカルネットワーク設定とファイアウォールルールに基づいて設定します。
変更を永続化する
注: 次の設定例は、LNI への静的 IP アドレスの割り当てを含む、これまでのセクションの手順に基づいています。ネットワーク構成とユースケースに応じて値を置き換えてください。
お使いの OS ディストリビューションに応じて、次の手順を実行します。
Amazon Linux 2023
-
インスタンスの OS を開きます。
-
/etc/systemd/network/ に、LNI の設定要件を含む新しいファイルを作成します。
sudo vi /etc/systemd/network/20-ens6.network [Match] MACAddress=0a:64:7a:00:4f:92 [Link] Description=LNI Outposts Server Name=ens6 [Network] Address=192.168.59.11/24 [RoutingPolicyRule] From=192.168.59.0/24 Table=300 [Route] Destination=8.8.8.8/32 Gateway=192.168.59.254 [Route] Destination=0.0.0.0/0 Gateway=192.168.59.254 Table=300 -
systemd-networkd サービスを再起動して設定を適用し、接続をテストします。
sudo systemctl restart systemd-networkd -
システムを再起動して、設定が正常に適用されていることを確認します。
Amazon Linux 2
-
インスタンスの OS を開きます。
-
amazon-ec2-net-utils パッケージによる、LNI のネットワークデバイスでのオートメーションを無効にします。
sudo sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1 -
ifcfg-<LNI_name> ファイルを確認し、設定を適用します。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet USERCTL=yes HWADDR=0a:0b:6b:85:88:7c IPADDR="192.168.59.11" PREFIX=24 EC2SYNC=no -
設定ファイル /etc/sysconfig/network-scripts/route-<LNI_name> に、LNI の設定要件を含めてルートを追加します。
sudo vi /etc/sysconfig/network-scripts/route-eth1 0.0.0.0/0 via 192.168.59.254 dev eth1 table LNI 8.8.8.8/32 via 192.168.59.254 dev eth1注: ファイルが存在しない場合、上記のコマンドにより設定ファイルが作成されます。
-
設定ファイル /etc/sysconfig/network/ifroute-<LNI_name> にルールを作成し、ネットワークデバイスが CIDR からのトラフィックに対して LNI テーブルを使用するようにします。
# sudo vi /etc/sysconfig/network-scripts/rule-eth1 from 192.168.59.0/24 lookup LNI注: 静的 IP アドレスを使用する場合は、ローカルネットワーク全体ではなく、単一の IP アドレスに基づいてルールを定義します。または、LNI に複数の IP アドレスを割り当てていて、複数のルールを使用する場合は、別個の IP アドレスに基づいてルールを定義します。
-
システムを再起動して、設定が正常に適用されていることを確認します。
RHEL 8 と RHEL 9
注: ネットワークデバイスの命名に関するベストプラクティスについては、Red Hat のウェブサイトで「一貫したネットワークインターフェース命名の実装」(RHEL 8) および「一貫したネットワークインターフェース命名の実装」(RHEL 9) を参照してください。
-
インスタンスの OS を開きます。
-
nm-cloud-setup.service と nm-cloud-setup.timer を無効にします。
$ sudo systemctl disable --now nm-cloud-setup.service nm-cloud-setup.timer -
/etc/iproute2/rt_tables に、ルートテーブルの LNI 用のレコードを作成します。LNI が使用する ID は 300 に設定します。
# echo "300 LNI" | sudo tee -a /etc/iproute2/rt_tables -
LNI デバイスに関連する接続名を見つけるには、次のコマンドを実行します。
$ sudo nmcli connection show -
接続名を LNI に変更するには、次のコマンドを実行します。
$ sudo nmcli connection modify "Wired connection 1" connection.id "LNI" -
起動時に自動的に接続し、デフォルトゲートウェイを無効にするように接続を設定するには、次のコマンドを実行します。
$ sudo nmcli connection modify "LNI" connection.autoconnect true ipv4.never-default yes -
静的 IP アドレスを使用する場合は、nmcli を使用して LNI インターフェイスに永続設定を行います。
$ sudo nmcli connection modify "LNI" ipv4.method manual ipv4.addresses 192.168.59.11/24 -
LNI 接続を有効にします。
$ sudo nmcli conn up LNI -
nmcli を使用して永続ルートを作成します。
$ sudo nmcli connection modify "LNI" ipv4.routes "0.0.0.0/0 192.168.59.254 table=300" $ sudo nmcli connection modify "LNI" +ipv4.routes "8.8.8.8/32 192.168.59.254" -
設定ファイルに永続ルールを作成します。CIDR から送信されるトラフィックに対し、LNI テーブルを使用するようにネットワークデバイスを設定します。
-
システムを再起動して、設定が正常に適用されていることを確認します。
SUSE12 と 15
-
インスタンスの OS を開きます。
-
udev ルールを確認します。LNI デバイス名を MAC アドレスに関連付けておくには、LNI の MAC アドレスに基づいてルールを設定する必要があります。
sudo cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /usr/lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # hotplug net device SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="0a:0b:6b:85:88:7c", KERNEL=="eth*", NAME="eth1" -
ユースケースに基づいて、LNI を設定します。
# sudo vi /etc/sysconfig/network/ifcfg-eth1 STARTMODE="auto" DEVICE="eth1" BOOTPROTO="static" IPADDR="192.168.59.11/24" CLOUD_NETCONFIG_MANAGE='no' -
設定ファイルに、/etc/sysconfig/network/ifroute-<LNI_name> へのルートを、LNI の設定要件を含めて追加します。
# sudo vi /etc/sysconfig/network/ifroute-eth1 0.0.0.0/0 192.168.59.254 - eth1 table LNI 8.8.8.8/32 192.168.59.254 - eth1 -
設定ファイル /etc/sysconfig/network/ifrule-<LNI_name> にルールを作成します。CIDR から送信されるトラフィックに対し、LNI テーブルを使用するようにネットワークデバイスを設定します。
# sudo vi /etc/sysconfig/network/ifrule-eth1 from 192.168.59.0/24 lookup LNI注: 静的 IP アドレスを使用する場合は、ローカルネットワーク全体ではなく、単一の IP アドレスに基づいてルールを定義します。または、LNI に複数の IP アドレスを割り当てていて、複数のルールを使用する場合は、別個の IP アドレスに基づいてルールを定義します。
-
システムを再起動して、設定が正常に適用されていることを確認します。
Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04
-
インスタンスの OS を開きます。
-
LNI の設定要件を含む新しいファイルを、/etc/netplan/ に作成します。
sudo vi /etc/netplan/51-ens6.yaml network: version: 2 renderer: networkd ethernets: ens6: dhcp4: false dhcp4-overrides: use-dns: false route-metric: 100 dhcp6: false match: macaddress: 0a:0b:6b:85:88:7c set-name: ens6 addresses: [192.168.59.11/24] routes: - to: 0.0.0.0/0 via: 192.168.59.254 table: 300 - to: 8.8.8.8/32 via: 192.168.59.254 routing-policy: - from: 192.168.59.0/24 table: 300 -
/etc/netplan/ 内のネットワーク設定ファイルへのアクセスを制限するには、ファイルのアクセス許可を変更します。
$ sudo chmod 600 /etc/netplan/*.yaml -
netplan を使用して設定を適用したら、接続をテストします。
sudo netplan apply -
システムを再起動して、設定が正常に適用されていることを確認します。
Windows (すべてのバージョン)
-
インスタンスの OS を開きます。
-
管理者としてコマンドプロンプトウィンドウを開きます。
-
外部 IP またはサブネットへのアウトバウンドトラフィックがローカルネットワークのゲートウェイを使用するように強制する、永続的なルートを作成します。
route -p ADD 8.8.8.8 MASK 255.255.255.255 192.168.59.254 -
手順を繰り返して、LNI に接続できる各外部 IP アドレスとサブネットに永続的なルートを追加します。これらのルートは、ローカルネットワークのゲートウェイを使用して、ローカルネットワーク設定とファイアウォールルールに基づいて設定します。
