web-dev-qa-db-ja.com

1つの2つの仮想インターフェイス間のルーティングNIC Linux

ファイアウォールであるUbuntuマシンがあります

マシンには2つのNICCards。eth0およびeth1。eth1が10.10.1.XのIPを与えるモデムに接続されています。

eth1は、192.168.2.XでDHCPを提供し、192.168.1.XでDHCPを提供するルーターに接続されているスイッチから別のIPを取得するために必要です。

現在、このマシンには次のIPがあります

eth0 - 10.10.0.4
eth1 - 192.168.2.1 (DHCP Server, Gateway)
eth1:0 - 102.168.1.103

私は次のことを達成しようとしています

マシンがスイッチを介してeth1に接続されている場合、192.168.1.10にpingできるはずです。

 [Modem+Router 10.1.1.0/24]
   |
   |
   |
 (eth0)                  |----- [ Server 192.168.1.10]
 Ubuntu                  |
Firewall (eth1) ----- [Switch]-----[Modem+Router 192.168.1.0/24]
         (eth1:0)--------| \
                            \
                             \--------[EndPoint 192.168.2.4]   

私の根本的な問題は、インターネット宛ての2.4からのパケットを受信し、IpTablesを使用してそれらを適切にルーティングできるという事実にあります。一方、1.10のパケットが到着した場合は、適切なオプションを設定してスイッチに送り返すことになっています。

私は以下を試しました

  • 1.0のデフォルトゲートウェイを2.4で2.1に設定し、ネクストホップを1.1に設定します。これは、正しい転送を行うことを望んでいました。
  • また、bridge-utilsを使用してeth1とeth1:0をブリッジし、10.10.0.1からインターネットに接続したい2.Xのユーザーにiptables転送を適用しました。
3

通常、構成はそのままで機能するはずです。ルーティングは原則としてLinuxルーティングコードでサポートされており、Netfilterとは関係ありません。 「iptables」は、カーネルNetfilterフレームワークを構成するためのユーザースペースユーティリティであり、フィルタリングとパケット変更(マングリングとアドレス変換)を行いますが、ルーティングは行いません。したがって、「iptablesを使用してルーティングする」と言うのは誤りです。

ブリッジングも別の種類のものであり、ここであなたを助けることは想定されていません。エイリアスインターフェイスのブリッジングは、おそらくループを作成し、そのイーサネットセグメントのネットワークを切断するはずです。

両側にルートが必要です。たとえば、192.168.1.0/24ネットワークのホストではip route add 192.168.2.0/24 via 192.168.1.103であり、192.168.2.0/24ネットワークのホストではデフォルトゲートウェイとして192.168.2.1を設定します。

ファイアウォールボックスにファイアウォールを厳密に設定している場合は、トラフィックをeth1からeth1:1に転送し、次のように転送できるようにする必要があります。

iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth1:0 -j ACCEPT

または、ステートフルファイアウォールをiptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTまたは-m状態(廃止)で既に構成している場合は、最初のルールが1つだけ必要な場合があります。

特別なiptables構成は、そのトラフィックをマスカレードする場合にのみ必要です。192.168.1.0/ 24のホストは、192.168.2.0/24ネットワークから接続していることを認識しません。次に、.1.0/24側に追加のルートは必要ありませんが、NATルールとフォワードイネーブルルールが必要です:

iptables -t nat -A POSTROUTING -o eth1:1 -s 192.168.2.0/24 -o 192.168.1.0/24 -j SNAT --to-source 192.168.1.103
iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT
3