web-dev-qa-db-ja.com

2つのイーサネットカード間でトラフィックを転送するにはどうすればよいですか?

これを正しく設定する方法を理解するのに苦労しています。私はそれを説明するグーグルクエリをやっと定式化することができないので、私は最善を尽くすようにします。

2つのNICカードが付いたUbuntu PCを持っています。

eth0(192.168.1.0)はメインのデフォルトゲートウェイに行き、インターネットに出ます。
eth1(192.168.176.0)は、多数のIPカメラが接続されたネットワークスイッチに接続します。

ルーターPCでIP転送とiptablesルールとホストを有効にしました。 eth1ネットワーク内のホストはインターネットに到達でき、eth0ネットワーク上の他のホストに到達できます。これは良いことです。

私が今やろうとしていることは、eth0ネットワーク内のホストを取得して、eth1ネットワーク内のホストにアクセスできるようにすることです。

コンピューターはeth0ネットワーク上にありますが、ネットワークカメラはeth1ネットワーク上にあります。 2つのNIC=カードを備えた1台のコンピューターがブリッジとして機能します。最終的に、eth0のコンピューターがeth1のIPカメラを見ることができるようにしたいと考えています。

マップしようとすると、192.168.1.1のホストは192.168.176.1のホストを見ることができますが、できません。

192.168.176.1のホストは192.168.1.1のホストを見ることができます(これらのホストはインターネットにアクセスすることもできます)。ここですべて良い。

これまでのところ、これらのIPルールがあり、eth1ネットワークが外に出ることが許可されています。

iptables --table nat --append POSTROUTING --out-interface enp1s0 -j MASQUERADE
iptables --append FORWARD --in-interface enp3s0 -j ACCEPT

私の質問は、eth0ネットワークがeth1ネットワークのホストにどのように到達できるのかと思います。

Eth1ネットワークにアクセスする個々のコンピューターにルートを追加する必要がありますか?

ルーターPCのeth0インターフェイスとeth1インターフェイス間の転送を設定する必要がありますか?

これが私の現在のルート追加コマンド/ etc/network/interfacesとiptablesルールです:

(macos ::)
 sudo route -n add -net 192.168.176.0/24 192.168.1.1 
 

(2 NIC PC上) /etc/network/interfaces #primary interface enp3s0 auto enp1s0 iface enp1s0 inet static address 192.168 .1.12 ネットマスク255.255.255.0 ネットワーク192.168.1.0 ゲートウェイ192.168.1.1 dns-nameservers 8.8.4.4 8.8.8.8
#secondary interface enp3s0 auto enp3s0 iface enp3s0 inet static address 192.168.176.1 netmask 255.255.255.0 broadcast 192.168.176.255 ネットワーク192.168.176.0
(2 NIC PCの場合) iptables -t filter -A FORWARD -i enp1s0 -o enp3s0 -j ACCEPT iptables -t filter -A FORWARD -i enp3s0 -o enp1s0 -j ACCEPT iptables -t nat -A POSTROUTING -j MASQUERADE
3
Mike

問題は主にホストのルート構成です。私はあなたの現在の設定が次のとおりであることを想定しています:

  • enp1s0インターフェースのIPアドレスは192.168.1.1/24
  • enp3s0インターフェースのIPアドレスは192.168.176.1/24

2つのIPネットワーク間のホストが通信するには、ルーティングテーブルに専用のエントリが必要です。

  1. IPカメラにアクセスする必要がある192.168.1.0/24上のホストは、192.168.1.1が192.168.176.0/24のルーターであることを認識する必要があります。
  2. 192.168.176.0/24上のホストには、192.168.1.0/24へのルートが必要です。

ここで、IPカメラの静的/ DHCP構成がデフォルトのトラフィックを192.168.176.1経由でルーティングすることを想定しているため、PCにパケットを送信する場所がわかります。しかし、192.168.1.0/24のPCには、インターネットルーターのデフォルトエントリが1つしかありません。したがって、192.168.176.0/24へのパケットはすべてそこに送信されて失われます。

あなたはどちらか

  • 「クラスレス静的ルート」オプションを使用して、192.168.1.1経由で192.168.176.0/24に静的ルートをアドバタイズするように192.168.1.0/24でDHCPルーターを構成する
  • pCの192.168.176.0/24へのゲートウェイとして手動で192.168.1.1を追加します

また、iptablesルールをフラッシュする必要があります。 POSTROUTINGルールはルーティングをめちゃくちゃにし、FORWARDルールは役に立たない(DROPポリシーがない限り)。

iptables -t nat -F POSTROUTING
iptables -F FORWARD

192.168.176.1のデフォルトゲートウェイとnat POSTROUTINGエントリが構成されているため、カメラはPCを認識できます。たとえば、IPカメラ192.168.176.10がパケットをPC 192.168.1.20に送信すると、パケットは最初にデフォルトゲートウェイである192.168.176.1(enp3s0)に送信されます。 Ubuntu PCはパケットをenp1s0に転送し、送信者のアドレスを独自の192.168.1.1に書き換えます。 192.168.1.20がパケットに応答すると、パケットは代替アドレス192.168.1.1に返送されます。 Ubuntu PCはそれを受信すると、IPカメラ192.168.176.10への応答であることを認識します。したがって、宛先アドレスを192.168.176.10に書き換え、enp3s0を介して転送します。

これで、NATでパケットを台無しにしたくないので、IPルーティングが必要です。上記の例では、Ubuntu PCによって置き換えられたため、PCはカメラのIPアドレスを192.168.1.1として認識します。正しいルートを設定したら、

  • pCからカメラへの接続では、PCはカメラのIPアドレスを192.168.176.10として認識します。
  • カメラからPCへの接続では、PCは引き続きカメラのIPアドレスを192.168.1.1(NATされたアドレス)として認識します。

単純なIPデバイスの場合、2番目は重要ではありません。しかし、それはバグのある動作につながる可能性があります。例として、管理されたスイッチがあり、SNMPトラップを使用したいとします。 iptables -t nat -A POSTROUTING -j MASQUERADEルールを削除する必要があります。

発生する1つの問題:IPカメラからインターネットにアクセスしますか?そうでない場合は、192.168.1.0/24以外の場所に向かう192.168.176.0/24からのパケットを拒否するiptables FORWARDルートを含めます。アクセスを許可する場合は、ルーターに192.168.176.0/24への静的ルートを構成する必要があります。

2
jaem

サブネットアドレスと名前の例

net“ main” 192.168.1.0/24(255.255.255.0)– enp1s0

net“ cameras” 192.168.176/24(255.255.255.0)– enp3s0

「カメラ」から「メイン」に転送しています:

iptables --table nat --append POSTROUTING --out-interface enp1s0 -j MASQUERADE

iptables --append FORWARD --in-interface enp3s0 -j ACCEPT

mainには、トラフィックをローカルサブネットまたはインターネットに「ルーティング」するデフォルトゲートウェイがあります。

反対のルールをブリッジに追加した場合:

iptables --table nat --append POSTROUTING --out-interface enp3s0 -j MASQUERADE

iptables --append FORWARD --in-interface enp1s0 -j ACCEPT

[〜#〜]および[〜#〜]

「メイン」のデフォルトゲートウェイのルートを、サブネット192.168.176.0/24のブリッジコンピュータに追加します。

間違った構文ですが、あなたはアイデアを得ます

route add -net 192.168.2.176/24 gateway “bridge computer”

カメラのゲートウェイ情報を追加したり変更したりせずに、望みどおりの結果が得られると思います。

0
jc__