ファイアウォールである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のパケットが到着した場合は、適切なオプションを設定してスイッチに送り返すことになっています。
私は以下を試しました
bridge-utils
を使用してeth1とeth1:0をブリッジし、10.10.0.1からインターネットに接続したい2.Xのユーザーにiptables転送を適用しました。通常、構成はそのままで機能するはずです。ルーティングは原則として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