追加のネットワーク セグメント (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 つの問題があります。
- LAN1 上のホストは、LAN2 セグメントについて何も知りません。SRV-02 から LAN1 上のホスト (host1 と呼ぶことにします) に ping すると、パケットは SRV-01 を経由してルーティングされ、host1 に到達します。ただし、host1 は LAN2 への特定のルートを持っていないため、デフォルト ゲートウェイ (ISP ルーター) に応答を送信します。(ISP ルーターは、a) 同じく LAN2 を認識していないため、デフォルト ゲートウェイに送信するか、b) パケットがローカル LAN ではなく不明なソースから送信されたため、パケットをドロップします。)
- 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 に実装されているネットワーク ポリシーが回避される可能性があるため、これは望ましくない可能性があります。
お役に立てれば幸いです。