ローカルホストへのGREトンネル


0

GREトンネル(またはTAP)を使用して、ローカルLinuxネットワーク名前空間軽量VMをローカルHOSTマシンに接続しようとしています。ホストからの応答がVMに戻らないことを除いて、すべて機能しているように見えます。

私のセットアップ:

ホストの実際のIP: 10.1.101.101/24

HOST GRE(セットアップは次のように):

ip l add dev gre1 type gretap remote 10.1.101.101 local 10.1.101.101 key 101
ip a add dev gre1 10.201.0.2/24
ip l set dev gre1 up

ホストネットワーク設定:

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:30:1b:42:65:ac brd ff:ff:ff:ff:ff:ff
    inet 10.1.101.101/24 brd 10.1.101.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::230:1bff:fe42:65ac/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:50:04:d0:50:0f brd ff:ff:ff:ff:ff:ff

82: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default 
    link/gre 0.0.0.0 brd 0.0.0.0
83: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
84: gre1@NONE: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65494 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether e2:83:0d:a4:cc:23 brd ff:ff:ff:ff:ff:ff
    inet 10.201.0.2/24 scope global gre1
       valid_lft forever preferred_lft forever
    inet6 fe80::e083:dff:fea4:cc23/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever

ホストルート:

ip r
default via 10.1.101.1 dev eth0 
10.1.101.0/24 dev eth0  proto kernel  scope link  src 10.1.101.101 
10.201.0.0/24 dev gre1  proto kernel  scope link  src 10.201.0.2 
169.254.0.0/16 dev eth0  scope link  metric 1000 

HOSTのiptablesの(IE:空白ですiptables -F

VMネットワーク構成:

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default 
    link/gre 0.0.0.0 brd 0.0.0.0
3: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
114: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:00:00:aa:00:00 brd ff:ff:ff:ff:ff:ff
    inet 10.201.0.1/24 brd 10.201.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::200:ff:feaa:0/64 scope link 
       valid_lft forever preferred_lft forever

VMルート:

ip r
10.201.0.0/24 dev eth0  proto kernel  scope link  src 10.201.0.1 

次に10.201.0.2、VMからHOSTにpingを実行し、10.201.0.1パケットをキャプチャします。

tcpdump -ni gre1 ホストで:

11:57:36.379404 ARP, Request who-has 10.201.0.2 tell 10.201.0.1, length 28
11:57:36.379431 ARP, Reply 10.201.0.2 is-at e2:83:0d:a4:cc:23, length 28
11:57:36.379455 ARP, Reply 10.201.0.2 is-at e2:83:0d:a4:cc:23, length 28
11:57:37.376634 ARP, Request who-has 10.201.0.2 tell 10.201.0.1, length 28
11:57:37.376658 ARP, Reply 10.201.0.2 is-at e2:83:0d:a4:cc:23, length 28
11:57:37.376683 ARP, Reply 10.201.0.2 is-at e2:83:0d:a4:cc:23, length 28
11:57:38.376539 ARP, Request who-has 10.201.0.2 tell 10.201.0.1, length 28
11:57:38.376567 ARP, Reply 10.201.0.2 is-at e2:83:0d:a4:cc:23, length 28
11:57:38.376596 ARP, Reply 10.201.0.2 is-at e2:83:0d:a4:cc:23, length 28

tcpdump -ni eth0 VMで:

11:57:36.379243 ARP, Request who-has 10.201.0.2 tell 10.201.0.1, length 28
11:57:37.376384 ARP, Request who-has 10.201.0.2 tell 10.201.0.1, length 28
11:57:38.376384 ARP, Request who-has 10.201.0.2 tell 10.201.0.1, length 28

AFAICSはVMがHOSTにARP要求を送信し、HOSTはARPに(正確に)応答しますが、ARPパケットはGREトンネルを介して戻されませんか?

注1:VMはCORE Emulatorと呼ばれる製品によって作成され、GRE Nodeに接続された基本的なルーターで構成されます。このノードはポイントし、キーは101です。10.1.101.101

注2:Core Emulatorをローカルで使用する代わりに別のマシンで実行しますが、すべて同じ設定で同じ構成が適切に機能する場合(10.1.101.101を使用)。

また、HOST GREトンネルを次のように設定しようとしました。

ip l add gre1 type gretap remote 127.0.0.1 local 127.0.0.1 key 101

を指すVM GREノード127.0.0.1

しかし、同じ結果がられます。ARPはHOSTによって認識され、応答されますが、VMからは認識されません

編集1:
私の「現実世界」の問題への回答として、COREはhttps://downloads.pf.itd.nrl.navy.mil/docs/core/core-html/usageで説明されている適切なソリューションを提供してくれます。 .html#other-methods

編集2:後続の質問?
「Linux Container / Network namespace / LXC」などのVMがGREトンネルを介してHOSTマシンと通信することは可能ですか?GREトンネルエンドポイントは次のようにHOST:127.0.0.1なりますVM:?.?.?.?(これらの疑問符は、VMが127.0.0.1に送信できる一方で、HOSTにはVMへのリターンパスがないため、ARP私の最初の質問では、VMに到達しません)。

これを読むために時間を割いてくれてありがとう、どんな助けも大歓迎です。

回答:


1

部分的な回答:GREトンネルは通常の接続の上で動作し、ネットワークパケット内のトンネルヘッダーを追加/削除する追加のネットワークインターフェイスを提供します。

したがって、2台のマシンAとBの間にトンネルを作成する通常のセットアップは次のとおりです。

1)AとBに「通常の」IPアドレスがあり、相互に認識できることを確認します。たとえば、AにIP "10.0.0.1/24"がありeth0、BにIP IP "10.0.0.2/24" eth0がある場合ping 10.0.0.2、Aでa ping 10.0.0.1とB でaを実行します。

2)AのローカルIPとBのリモートIPを使用してAにトンネルデバイスを追加し、インターフェイスに新しいIPを追加します。

ip link add dev gre0 type gretap remote 10.0.0.2 local 10.0.0.1 key 123
ip addr add 10.0.44.1/24 dev gre0 
ip link set gre0 up

3)Bについても同様で、適切なIPアドレスを使用します。

ip link add dev gre0 type gretap remote 10.0.0.1 local 10.0.0.2 key 123
ip addr add 10.0.44.2/24 dev gre0
ip link set gre0 up

4)ping 10.0.44.2Aとping 10.0.44.1Bで、トンネルが機能するかどうかを確認します。

ご覧のとおり、これはあなたが持っているセットアップではありません:HOSTのトンネルのローカルアドレスとリモートアドレスは同じです。VMのトンネルのローカルアドレスとリモートアドレスはありません。VMのトンネルインターフェースはダウンしています。トンネルに属するIPアドレスは終わりましたeth0。これは本当に意味をなさないため、機能しないことは驚くことではありません。

Core Emulatorが「GREノード」をどのように処理するかはわかりませんが、これまでに示した構成から見ると、これはGREインターフェイスを構成するためのレイヤーにすぎないようです。したがって、Core Emulatorがそれらをどのように処理するかを理解するか、エミュレータの「GRE Nodes」を忘れて、手動で設定します。

さらに良いことに、演習として、コアエミュレーターで接続されている2つの VM AとBを構成し、上記のようにGREトンネルを手動で追加します。これは対称的な状況であり、混乱を最小限に抑える必要があります。


こんにちは、最初に「エクササイズ」を試してみましたが、2つのVM(AとB)間に単純なGREトンネルが設定され、両端がping可能などです。「CORE」の問題を詳しく調べる必要があります。また、元の質問に詳細を追加します。
dotvotdot

FYI:ip add dev gre0 fooしなければならないip addr add dev gre0 foo。..あなたのポストの私の編集が拒否されました。
dotvotdot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.