ルーティングの問題 - arp

ルーティングの問題 - arp

2つのネットワークを接続する必要があるコンピュータがあります192.168.0.x192.168.1.x

192.168.0.xインターフェイスを介してアクセスでき、インターフェイスtun3192.168.1.x介してアクセスできますvirbr1

0.x コンピュータは 1.x コンピュータと通信できますが、その逆ではないようです。

virbr1のarpパケットが破棄されたようです。これはどこで起こりますか?

以下は、2つのネットワークを接続する必要があるホストの2つのインターフェイス(tun3とvirbr1)のifconfigです。

root@pgrozav:/home/paul/data/work/server# ifconfig tun3 ;
tun3リンクカプセル:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet アドレス: 10.1.0.1 PtP: 10.1.0.2 マスク: 255.255.255.255
          MTU ポイントで NOARP マルチキャストを実行: 1500 指標: 1
          RXパケット:942エラー:0ドロップ:0オーバーフロー:0フレーム:0
          TXパケット:463エラー:0ドロップ:0オーバーフロー:0キャリア:0
          衝突: 0 txqueuelen: 500
          RXバイト:88986(86.9KiB)TXバイト:42452(41.4KiB)

virbr1リンクカプセル:イーサネットHWaddr 52:54:00:78:23:3b  
          inetアドレス:192.168.1.1ブロードキャスト:192.168.1.255マスク:255.255.255.0
          マルチキャストを実行するアップストリームブロードキャストMTU:1500指標:1
          RXパケット:51616エラー:0ドロップ:0オーバーフロー:0フレーム:0
          TXパケット:1198エラー:0ドロップ:0オーバーフロー:0キャリア:0
          クラッシュ: 0 txqueuelen: 0
          RXバイト:1469672(1.4MiB)TXバイト:155418(151.7KiB)

また、IPTablesのルールは次のとおりです。

root@pgrozav:/home/paul/data/work/server# iptables -nvL
チェーン入力(ポリシーACCEPT 4097Kパケット、1544Mバイト)
 pkts byte target prot は出力ソースターゲットを選択します。         
    0 0 UDPを許可する - virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
    0 0 TCP受け入れ - virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
    0 0 UDPを許可する - virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
    0 0 tcpを許可 - virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
    0 0 UDPを許可する - virbr1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
    0 0 tcpを許可 - virbr1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
    0 0 UDPを許可する - virbr1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
    0 0 tcpを許可 - virbr1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD(ポリシーは481パケット、40360バイトを許可)
 pkts byte target prot は出力ソースターゲットを選択します。         
    0 0すべて受け入れ - * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate関連、確立
    0 0すべて受け入れ - virbr0 * 192.168.122.0/24 0.0.0.0/0           
    0 0すべて受け入れ - virbr0 virbr0 0.0.0.0/0 0.0.0.0/0           
    0 0すべて拒否 - * virbr0 0.0.0.0/0 0.0.0.0/0拒否icmpポートに接続できません
    0 0すべて拒否 - virbr0 * 0.0.0.0/0 0.0.0.0/0拒否icmpポートに接続できません
  393 42938すべて受け入れ - * virbr1 0.0.0.0/0 192.168.1.0/24 ctstate関連、確立済み
  397 35116すべて受け入れ - virbr1 * 192.168.1.0/24 0.0.0.0/0           
    0 0すべて受け入れ - virbr1 virbr1 0.0.0.0/0 0.0.0.0/0           
    0 0すべて拒否 - virbr1 * 0.0.0.0/0 0.0.0.0/0拒否icmpポートに接続できません

チェーン出力(ポリシーは3217Kパケット、435Mバイト許容)
 pkts byte target prot は出力ソースターゲットを選択します。         
    0 0 UDPを許可する - * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
    0 0 UDPを許可する - * virbr1 0.0.0.0/0 0.0.0.0/0 udp dpt:68
root@pgrozav:/home/paul/data/work/server# iptables -nvL -t nat
チェーンPREROUTING(ポリシーは99697パケット、15Mバイト許容)
 pkts byte target prot は出力ソースターゲットを選択します。         

チェーン入力(ポリシーACCEPT 65648パケット、13Mバイト)
 pkts byte target prot は出力ソースターゲットを選択します。         

チェーン出力(ポリシーは169Kパケット、12Mバイト許容)
 pkts byte target prot は出力ソースターゲットを選択します。         

チェーンPOSTROUTING(ポリシーは169Kパケット、12Mバイト許容)
 pkts byte target prot は出力ソースターゲットを選択します。         
   69 5293 すべて返却-- * * 192.168.122.0/24 224.0.0.0/24        
    0 0すべて返却 - * * 192.168.122.0/24 255.255.255.255     
    0 0迷彩tcp -- * * 192.168.122.0/24 !192.168.122.0/24 マスクポート: 1024-65535
    0 0迷彩udp -- * * 192.168.122.0/24 !192.168.122.0/24 マスクポート: 1024-65535
    0 0すべて変装 - * * 192.168.122.0/24 !192.168.122.0/24    
   69 5293 すべて返却-- * * 192.168.1.0/24 224.0.0.0/24        
    0 0すべて返却 - * * 192.168.1.0/24 255.255.255.255     
    5 300 MASQUERADE tcp -- * * 192.168.1.0/24 !192.168.1.0/24 マスクポート: 1024-65535
   12 766 MASQUERADE udp -- * * 192.168.1.0/24 !192.168.1.0/24 マスクポート: 1024-65535
    5 420 すべて迷彩 - - * * 192.168.1.0/24 !192.168.1.0/24      

ルーティングテーブルは次のとおりです。

root@pgrozav:/home/paul/data/work/server# IP ルーティング
デフォルト値は 192.168.200.1 dev eth0 です。
10.1.0.2 dev tun3 proto カーネルスコープリンク src 10.1.0.1
10.1.0.1 dev tun3 スコープで接続 192.168.0.0/24
192.168.1.0/24 dev virbr1 proto カーネルスコープリンク src 192.168.1.1
192.168.122.0/24 dev virbr0プロトタイプカーネルスコープリンクsrc 192.168.122.1
192.168.200.0/24 dev eth0プロトタイプカーネル範囲リンクsrc 192.168.200.70
root@pgrozav:/home/paul/data/work/server# IP ルーティングリストテーブル 200
デフォルトは 10.1.0.1 dev tun3 を渡します。
10.1.0.1 dev tun3による192.168.1.0/24

実際にこれを設定するスクリプトがあります。

リモートホスト=開発
トンネル番号=3
トンネルプレフィックス名="tun"
トンネル名="$tunnelPrefixName$tunnelNumber"
トンネルローカルIP = "10.1.0.1"
トンネルリモート ip="10.1.0.2"
リモートネットワーク登録="192.168.0.0"
RemoteNetworkToJoinNetmask="255.255.255.0"
RemoteNetworkToJoinInterfaceName="eth0"
localNetworkToJoin="192.168.1.0"
localNetworkToJoinNetmask="255.255.255.0"
localNetworkToJoinInterfaceName="virbr1"


        ssh -f -NTC -w $tunnelNumber:$tunnelNumber $remoteHost
        IP リンクの設定 $tunnelName up
        ssh $remoteHost IP リンク設定 $tunnelName up
        IP アドレスを追加 $tunnelLocalIP/32 ピア $tunnelRemoteIP 開発者 $tunnelName
        SSH $remoteHost IP アドレスを追加 $tunnelRemoteIP/32 ピア $tunnelLocalIP dev $tunnelName
        パスの追加 -net $remoteNetworkToJoin gw $tunnelLocalIP ネットマスク $remoteNetworkToJoinNetmask dev $tunnelName
        $tunnelLocalIP dev $tunnelName テーブル 200 による IP パスのデフォルト値の追加
        $localNetworkToJoin/24 テーブル 200 で IP ルールを追加する
        ssh $remoteHost ルート add-net $localNetworkToJoin gw $tunnelRemoteIP ネットワークマスク $localNetworkToJoinNetmask dev $tunnelName
        ssh $remoteHost iptables -A 転送 -i $remoteNetworkToJoinInterfaceName -o $tunnelName -m 状態 - 状態が設定され、関連 -j 許可
        ssh $remoteHost iptables -A FORWARD -s $tunnelLocalIP -o $remoteNetworkToJoinInterfaceName -j を受け入れる
        ssh $remoteHost iptables -t nat -A POSTROUTING -s $tunnelLocalIP -o $remoteNetworkToJoinInterfaceName -j MASQUERADE

私はこのマシンでKVMを実行していますが、virbr1はすべてのVMを持つ仮想LANに自分のマシンを接続します。私のローカルLAN(仮想マシン - 1.xを含む)をリモートネットワーク(0.x)に接続しようとしています。

ベストアンサー1

Arps は、LAN 上の IP-MAC ペアを識別するために使用されます。 ARPがあなたの問題に関連しているかどうかはわかりません。

0.x -> 1.x接続がうまくいくと、通信中に0.xから1.xに、1.xから0.xにパケットが送信されるため、ルーティング問題がないという意味です(TCP通信を想定)

1.x -> 0.xの接続が失敗した場合は、ファイアウォール、NAT、アプリケーションアクセスリスト、TCPラッパーなどがある可能性があります。

クライアント、ゲートウェイ、サーバーを確認する必要があります。

おすすめ記事