web-dev-qa-db-ja.com

両方のネットワークセグメントが通信するためにデュアルホームサーバーを構成するにはどうすればよいですか?

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

LAN1からLAN2にもLAN2からLAN1にもアクセスできませんWAN。LAN1ホストと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):NO 
 192.168.5.33(LAN1上のクライアント)---> 10.0.2.2(SRV-02:eth0):NO 
 *。*。*。*。 *(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上のクライアント):NO 

ネットワークトポロジ

 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/network/interfaces

# 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

ルーティング

〜$ netstat -r 
カーネルIPルーティングテーブル
宛先ゲートウェイGenmaskフラグMSSウィンドウirttIface 
デフォルト192.168.5.40.0.0.0 UG 0 0 0 eth0 
 10.0.2.0 * 255.255.255.0 U 0 0 0 eth1 
 localnet * 255.255.255.0 U 0 0 0 eth0 
〜$ ip route show 
 default via 192.168.5.4 dev eth0 
 10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.1 
 192.168.5.0/24 deveth0プロトカーネルスコープリンクsrc192.168.5.8 

IP転送

〜$ Sudo sysctl -a | grep net.ipv4.ip_forward 
 net.ipv4.ip_forward = 1 
 net.ipv4.ip_forward_use_pmtu = 0 

ファイアウォール

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

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

SRV-02サーバー

SRV-02は、1つのネットワークアダプターを備えたUbuntu Server14.04です。

  • 10.0.2.2/24(eth0、LAN2)

/ etc/network/interfaces

ネットマスク255.255.255.0 
ネットワーク10.0.2.0 
ブロードキャスト10.0.2.255 
 dns-nameservers xxx.xxx.xxx.xxx 

ルーティング

〜$ netstat -r:
カーネルIPルーティングテーブル
宛先ゲートウェイGenmaskフラグMSSウィンドウirtt Iface 
デフォルト10.0.2.10.0.0.0 UG 0 0 0 eth0 
 10.0.2.0 * 255.255.255.0 U 0 0 0 eth0 
〜$ ip route show 
 default via 10.0.2.1 dev eth0 
 10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.2 

ファイアウォール

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

〜$ Sudo ufw status 
ステータス:非アクティブ
〜$ Sudo iptables -L -v | grep policy 
 Chain INPUT(ポリシーACCEPT 0パケット、0バイト)
 Chain FORWARD(ポリシーACCEPT 0パケット、0バイト)
 Chain OUTPUT(ポリシーACCEPT 0パケット、0バイト) 

ここで何が欠けていますか? SRV-01にどのスタティックルートを追加する必要があるのか​​、またデフォルトゲートウェイが適切に構成されているのか疑問に思います...

2
g0lem

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

  1. LAN1のホストは、LAN2セグメントについて何も知りません。 SRV-02からLAN1上のホスト(Host1と呼びましょう)にpingを実行すると、パケットはSRV-01を介してルーティングされ、Host1に到達します。ただし、Host1にはLAN2への特定のルートがないため、Host1はデフォルトゲートウェイ(ISPルーター)に応答を送信します。 (ISPルーターは、a)LAN2についても認識していないため、デフォルトゲートウェイにも送信するか、b)ローカルLANではなく不明な送信元からのパケットをドロップします。)
  2. LAN2からWANに到達しようとすると、パケットはSRV-02を介してISPルーターにルーティングされます。2つの状況が考えられます:
    • ルーターはNATパケットの送信元(LAN2)がローカルLANではないため(これがより可能性の高い状況です)、または
    • ルーターは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/network/interfaces:

# 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

または、SRV-01の静的IPアドレスをeth0に保持することを選択した場合、ルールを変更できます(ただし、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を介して)。 WANアクセスは、ダブルソースNATのおかげで、LAN3とLAN2の両方からも機能します。

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

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

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

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

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

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

お役に立てば幸いです。

1
piit79