ISP ルーター

ISP ルーター

追加のネットワーク セグメント (LAN2) を追加し、LAN1 上のいくつかのマシンが LAN2 上のリソースにアクセスできるようにする必要があります。LAN2 上のいくつかのマシンも、LAN1 および WAN セグメント上のリソースにアクセスする必要があります。LAN1 と LAN2 間のゲートウェイは、デュアル ホーム Linux サーバーである「SRV-01」と呼ばれます。

LAN1 から LAN2 にアクセスすることも、LAN2 から LAN1 にアクセスすることも、LAN2 から WAN にアクセスすることもできません。LAN1 ホストと LAN2 を相互に通信させる方法と、LAN2 マシンから WAN へのアクセスを許可する方法が知りたいです。

トラブルシューティング

ping を使用すると、次の応答が返されます。

IP (送信元) ---> IP (送信先) : Ping 応答
---------------------------------------------------------------------------
192.168.5.33 (LAN1 上のクライアント) ---> 192.168.5.8 (SRV-01:eth0): OK
192.168.5.33 (LAN1 上のクライアント) ---> 10.0.2.1 (SRV-01:eth1) : いいえ
192.168.5.33 (LAN1 上のクライアント) ---> 10.0.2.2 (SRV-02:eth0) : いいえ
*.*.*.*.* (SRV-01) ---> 192.168.5.33 (LAN1 上のクライアント): OK
*.*.*.*.* (SRV-01) ---> 10.0.2.2 (SRV-02:eth0): OK
10.0.2.2 (SRV-02) ---> 10.0.2.1 (SRV-01:eth1): OK
10.0.2.2 (SRV-02) ---> 192.168.5.8 (SRV-01:eth0): OK
10.0.2.2 (SRV-02) ---> 192.168.5.33 (LAN1 上のクライアント): いいえ

ネットワークトポロジー

WAN --- (ISP ルーター) --- LAN1 --- (SRV-01) --- LAN2 --- (SRV-02) 

ISP ルーター

インターネット サービス プロバイダー (ISP) ルーターは NAT (2 つのネットワーク アダプター) を提供し、LAN1 の DHCP サーバーとして機能します。この機器にはシェル/管理者アクセス権がありません。

  • xxx.xx.xx.xx/xx (eth0、WAN)
  • 192.168.5.4/24 (eth1、LAN1)

SRV-01 サーバー

SRV-01 は、LAN1 サブネットと LAN2 サブネット間のゲートウェイとして機能するデュアルホーム Ubuntu Server 14.04 (2 つのネットワーク アダプター) です。

  • 192.168.5.8/24 (eth0、LAN1)
  • 10.0.2.1/24 (eth1、LAN2)

/etc/ネットワーク/インターフェース

# Loopback
auto lo
iface lo inet loopback
# LAN1
auto eth0
iface eth0 inet static
    address 192.168.5.8
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.4
    dns-nameservers xxx.xxx.xxx.xxx
# LAN2
auto eth1
iface eth1 inet static
    address 10.0.2.1
    netmask 255.255.255.0
    network 10.0.2.0
    broadcast 10.0.2.255
    dns-nameservers xxx.xxx.xxx.xxx

ルーティング

~$ ネットスタット -r
カーネル IP ルーティング テーブル
宛先ゲートウェイ Genmask フラグ MSS ウィンドウ irtt Iface
デフォルト 192.168.5.4 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth1
ローカルネット * 255.255.255.0 U 0 0 0 eth0
~$ ipルート表示
デフォルトは192.168.5.4 dev eth0経由
10.0.2.0/24 dev eth1 proto カーネル スコープ リンク src 10.0.2.1
192.168.5.0/24 dev eth0 proto カーネル スコープ リンク src 192.168.5.8

IP転送

~$ sudo sysctl -a | grep net.ipv4.ip_forward
ネット.ipv4.ip_forward = 1
ネット.ipv4.ip_forward_use_pmtu = 0

ファイアウォール

Ubuntu「Uncomplicated FireWall」(UFW) はサーバー「SRV-01」上で無効になっており、すべての iptables チェーンのデフォルト ポリシーは ACCEPT ターゲットに設定されています。FORWARD テーブルにはまだパケットが 1 つも送信されていないことに注意してください...

~$ sudo ufwステータス
ステータス: 非アクティブ
~$ sudo iptables -L -v | grep ポリシー
チェーン入力 (ポリシー ACCEPT 369 パケット、28278 バイト)
チェーン FORWARD (ポリシー ACCEPT 0 パケット、0 バイト)
チェーン出力 (ポリシー ACCEPT 187 パケット、19740 バイト)

SRV-02 サーバー

SRV-02 は、ネットワーク アダプターが 1 つ付いた Ubuntu Server 14.04 です。

  • 10.0.2.2/24 (eth0、LAN2)

/etc/ネットワーク/インターフェース

# ループバック
オートロー
iface lo inet ループバック
# LAN2
iface eth0 inet 静的
    アドレス 10.0.2.2
    ネットマスク 255.255.255.0
    ネットワーク 10.0.2.0
    ブロードキャスト 10.0.2.255
    dns ネームサーバー xxx.xxx.xxx.xxx

ルーティング

~$ netstat -r:
カーネル IP ルーティング テーブル
宛先ゲートウェイ Genmask フラグ MSS ウィンドウ irtt Iface
デフォルト 10.0.2.1 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
~$ ipルート表示
デフォルトは 10.0.2.1 dev eth0 経由
10.0.2.0/24 dev eth0 proto カーネル スコープ リンク src 10.0.2.2

ファイアウォール

Ubuntu「Uncomplicated FireWall」(UFW) はサーバー「SRV-02」で無効になっており、すべての iptables チェーンのデフォルト ポリシーは ACCEPT ターゲットに設定されています。

~$ sudo ufwステータス
ステータス: 非アクティブ
~$ sudo iptables -L -v | grep ポリシー
チェーン INPUT (ポリシー ACCEPT 0 パケット、0 バイト)
チェーン FORWARD (ポリシー ACCEPT 0 パケット、0 バイト)
チェーン出力 (ポリシー ACCEPT 0 パケット、0 バイト)

ここで何が欠けているのでしょうか? SRV-01 にどのような静的ルートを追加する必要があるのか​​、またデフォルト ゲートウェイが適切に構成されているかどうかが気になります...

答え1

この設定には 2 つの問題があります。

  1. LAN1 上のホストは、LAN2 セグメントについて何も知りません。SRV-02 から LAN1 上のホスト (host1 と呼ぶことにします) に ping すると、パケットは SRV-01 を経由してルーティングされ、host1 に到達します。ただし、host1 は LAN2 への特定のルートを持っていないため、デフォルト ゲートウェイ (ISP ルーター) に応答を送信します。(ISP ルーターは、a) 同じく LAN2 を認識していないため、デフォルト ゲートウェイに送信するか、b) パケットがローカル LAN ではなく不明なソースから送信されたため、パケットをドロップします。)
  2. LAN2 から WAN に到達しようとすると、パケットは SRV-02 を経由して ISP ルーターにルーティングされますが、次の 2 つの状況が考えられます。
    • パケットの送信元(LAN2)がローカルLANではないため、ルータはパケットをNAT変換しません(これがより起こり得る状況です)、または
    • ルータはパケットを NAT 変換し、インターネットに送信します。ただし、応答が返され、宛先が LAN2 アドレスに再変換されると、ISP ルータにはそのネットワークへのルートがないため、パケットは配信されません。パケットは誤ってデフォルト ゲートウェイ (ISP) に送信されます。

これらの問題は、LAN2 から ISP ルータへの静的ルートを追加し、SRV-01 に LAN2 のソース NAT 構成を追加することで解決できます。ただし、ISP ルータへの管理者アクセス権がないため、これは不可能です。

これを回避するには 2 つの解決策があります。

A. SRV-01をLAN1およびLAN2ホストのフルルーターにする

  • SRV-01 に別のネットワーク アダプタを追加します (合計 3 つになります)
  • トポロジを次のように変更します。

WAN -> ISP router -> LAN1 -> SRV-01 +-> LAN3 (for hosts originally in LAN1)
                                    +-> LAN2 -> SRV-02

基本的に、SRV-01 を両方の LAN セグメントのルーターにします。

  • これには、元々LAN1にあったホストを新しいサブネットLAN3に移動する必要があります。10.0.1.0/24
  • SRV-01 のネットワーク構成を次のように変更する必要があります。

/etc/ネットワーク/インターフェース:

# LAN1 - to ISP router
auto eth0
iface eth0 inet dhcp
# we can even use dhcp as the IP address is not really important
# - there are no more hosts on LAN1 apart from ISP router and SRV-01

# LAN3 - for hosts originally in LAN1
iface eth1
    address 10.0.1.1
    netmask 255.255.255.0

# LAN2
iface eth2
    address 10.0.2.1
    netmask 255.255.255.0

WAN アクセスを機能させるための iptables ルール:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE

あるいは、eth0 の SRV-01 に静的 IP アドレスを保持することを選択した場合は、ルールを変更できます (ただし、MASQUERADE引き続き機能します)。

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --to-source 192.168.5.8
  • DHCP は、eth1 (LAN3、元々 LAN1 にあったホスト用) の SRV-01 に設定する必要があります。また、必要に応じて eth2 (LAN2) でも設定する必要があります。(どちらの場合も、ゲートウェイはそれぞれ eth1 または eth2 のローカル アドレスになりますが、これは言うまでもありません :)

これにより、LAN3 と LAN2 間の通信が可能になります (両方のデフォルト ゲートウェイである SRV-01 経由)。ダブル ソース NAT により、LAN3 と LAN2 の両方から WAN アクセスも機能します。

B. SRV-01をLAN1のDHCPサーバーにする

このアプローチは上記ほどきれいではありませんが、少しシンプルです。ISPルーターでDHCPを無効にできることを前提としています。

  • ISPルーターのDHCPを無効にする
  • SRV-01 の LAN1 に DHCP を設定し、SRV-01 (192.168.5.8) を LAN1 のデフォルト ゲートウェイにします。
  • WAN アクセスが LAN2 から機能するように、SRV-01 上の LAN2 のソース NAT 変換を設定します。

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -d 192.168.5.4 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 ! -d 192.168.5.0/24 -j SNAT --to-source 192.168.5.8

最初の行は、LAN2 ホストが ISP ルーター自体にアクセスできるように SNAT を有効にし、2 行目は LAN2-LAN1 アクセスの SNAT を無効にします。

繰り返しになりますが、このアプローチは、同じサブネットに 2 つのルータ (SRV-01、ISP ルータ) があるため、上記のアプローチほどクリーンではありません。私がこのアプローチを自分で使用したとき、2 番目のルータ (このシナリオでは SRV-01) は、クライアント (LAN1 上のホスト) と上流ルータ (ISP ルータ) が同じ LAN 上にあると認識し、ISP ルータに ICMP リダイレクトを送信することに気付きました。SRV-01 に実装されているネットワーク ポリシーが回避される可能性があるため、これは望ましくない可能性があります。

お役に立てれば幸いです。

関連情報