macOSで2つのネットワークインターフェースを使用して異なるネットワークに接続する場合、通常、システムの内部ネットワークと外部ネットワークに同時にアクセスすることはできません。これは、コンピュータがどのネットワークセグメントが内部ネットワークに属するかを確定できないためです。
ネットワークインターフェースのサービス順序を設定する
システム環境設定 - ネットワーク - サービス順序を設定に移動し、ネットワークの優先順位を調整します。外部ネットワークに接続されているネットワークインターフェースを内部ネットワークに接続されているものの上に配置します。これにより、外部ネットワークへの通常のアクセスが可能になります。
内部ネットワークインターフェースの適切なネットワークセグメントを設定する
内部ネットワーク用のゲートウェイアドレスを取得します。内部ネットワークは通常、固定IPアドレスを使用します。使用する方法に関わらず、ネットワーク設定の拡張インターフェースでルーターアドレスを見つけることができます。このアドレスは次のステップでゲートウェイを設定する際に使用されます。
内部ネットワークセグメントを設定する
内部ネットワークへのアクセスを可能にするために、ローカルの静的ルートを設定し、対応する内部ネットワークゲートウェイを指すネットワークセグメントを追加します。
追加:
sudo route add -net 10.0.0.0 -netmask 255.255.0.0 10.0.2.1
sudo route add -net 30.1.0.0 -netmask 255.255.0.0 10.0.2.1
削除:
sudo route delete -net 10.0.0.0 -netmask 255.255.0.0 10.0.2.1
sudo route delete -net 30.1.0.0 -netmask 255.255.0.0 10.0.2.1
'net'パラメーターはネットワークセグメントのIP、'netmask'はサブネットマスクです。最後のIPアドレスは、前のステップで取得した内部ネットワークゲートウェイのルーターIPアドレスです。
内部ネットワークと外部ネットワーク間の接続性をテストする
内部ネットワークと外部ネットワークが接続されているかどうかをテストする前に、ウェブブラウザを使用しないでください。これは、ウェブブラウザがドメイン名の解決結果をキャッシュすることが多く、リアルタイムの結果を提供しない可能性があるためです。さらに、内部ネットワークでのドメイン名の解決は通常失敗します。具体的な理由は以下で説明します。
pingコマンドを使用して、内部および外部ネットワークの適切なアドレスをpingします。この結果により、両方のネットワークに同時にアクセスできるかどうかを判断できます。
# 現在のルーティングテーブルを表示
netstat -rn
# デフォルトルートを取得
route get 0.0.0.0
内部ネットワークドメインおよび内部ネットワークDNS解決について
内部DNSサーバーが外部ネットワークアドレスを解決しない場合、内部ネットワークドメインと外部ネットワークドメインを自動的に設定によって解決することはできません。
macOSでは、内部および外部DNSサーバーアドレスを追加して、内部ネットワークアドレスを外部ネットワークインターフェースに解決することはできません。便利な方法は、最初に外部ネットワークインターフェースを無効にし、純粋な内部ネットワークモードに入り、内部ネットワークドメイン名をpingして内部IPアドレスを取得し、それをホストファイルに書き込んでローカル解決を行うことです。
DNS解決結果のテスト
nslookupドメイン名コマンドを使用して、現在どのDNSサーバーがドメイン名の解決に使用されているかを確認できます。