これを正しく設定する方法を理解するのに苦労しています。私はそれを説明するグーグルクエリをやっと定式化することができないので、私は最善を尽くすようにします。
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
問題は主にホストのルート構成です。私はあなたの現在の設定が次のとおりであることを想定しています:
2つのIPネットワーク間のホストが通信するには、ルーティングテーブルに専用のエントリが必要です。
ここで、IPカメラの静的/ DHCP構成がデフォルトのトラフィックを192.168.176.1経由でルーティングすることを想定しているため、PCにパケットを送信する場所がわかります。しかし、192.168.1.0/24のPCには、インターネットルーターのデフォルトエントリが1つしかありません。したがって、192.168.176.0/24へのパケットはすべてそこに送信されて失われます。
あなたはどちらか
また、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として認識します。正しいルートを設定したら、
単純な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への静的ルートを構成する必要があります。
サブネットアドレスと名前の例
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”
カメラのゲートウェイ情報を追加したり変更したりせずに、望みどおりの結果が得られると思います。