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に到達しません)。
これを読むために時間を割いてくれてありがとう、どんな助けも大歓迎です。