2つのネットワークインターフェースを持つLinuxパネルがあります。このパネルは、当社のネットワーク上のデバイスと通信し、顧客ネットワークからアクセスできる必要があるソフトウェアを実行します。 1つのインターフェイスは固定ネットワークアドレス(192.168.1.x)を使用してマシンネットワークに接続され、パネルのIPは常に192.168.1.1です。他のインターフェイスは顧客ネットワークへの接続です。私たちはどこにでもマシンを提供しているので、顧客ネットワークはさまざまな構成で提供されています。したがって、2番目のネットワークポートも192.168.1.xネットワーク上にあり、同じIP 192.168.1.1を使用する必要があります。
この仕様は機能しますか? Linuxでこれをどのように構成しますか?
答え1
残念ながら、これはIPが両方のインターフェイスにあるのではなく、サブネット上にあるため、正しく機能しません。
デバイスが192.168.1.2と通信する必要がある場合、このトラフィックをどのインターフェイスから送信する必要がありますか?顧客のデバイスがあなたのデバイスと通信しようとすることも、あなたのデバイスがあなたの他のデバイスの1つと通信しようとするかもしれません。カーネルは(複雑なルーティング設定なしで)わかりません。
これを行う方法はいくつかあります。
未使用のRFC1918空間で可能な最小のサブネットを選択します。これにより、紛争の可能性が最小限に抑えられますが、完全に解決されるわけではありません。
顧客(またはサポートスタッフ)が競合しないものに変更できるように、内部Webスペースを構成可能にします。
使用リンクローカルアドレスRFC1918スペースの代わりに。 IPv4とIPv6の両方にリンクローカルアドレスがあります。
そのためにパブリック(ルーティング可能)IPアドレスをリクエストしてください。すべてのデバイスで同じセットを使用できます。デフォルトでは衝突しないことを除いて、RFC1918空間と同じように使用します。 IPv4では難しいですが(基本的には終わりました)、IPv6が利用可能であればはるかに簡単です。
クライアントデバイスと通信する必要があるプロセスが他のデバイスと通信する必要があるプロセスと完全に分離されている場合は、各インターフェイスを独自のネットワークネームスペース(参考文献を参照
ip netns
)に配置すると、各ネームスペースは192.168しか表示されません。 24個のサブネットなので、競合はありません。これは、複雑なルーティング設定の中で最も簡単です。