転載・引用について

ユーザ用ツール

サイト用ツール


tweet:2021:0530_01

文書の過去の版を表示しています。


FreeBSD EtherIP でトラブル(未解決)

FreeBSD 12-RELEASE を利用して以下の環境を構築したところうまくいかなかった。

以下は、症状を再現するための必要設定のみ記載している。

Bridge0 -- gif0 -- em0 -- (network) -- em0 -- gif0 -- Bridge0
Node A   FreeBSD 12 ->|               |<- FreeBSD 12   Node B

なお、試験環境は、VMware上で構築している。また、自明だと思うが、kernel側でv4 forwarding/v6 forwardingを1にして、Routerモードにしてある

  • NodeAで設定したのは以下の通り
    • ifconfig em0 10.0.0.1/24
      route add default 10.0.0.2
      ifconfig gif0 create
      ifconfig gif0 tunnel inet 10.0.0.1 10.0.0.2
      ifconfig gif0 inet 172.16.0.1/24
      route add -net 172.16.1.0/24 -iface gif0
      ifconfig bridge0 create
      ifconfig bridge0 addm gif0 -stf gif0
  • NodeBで設定したのは以下の通り
    • ifconfig em0 10.0.0.2/24
      route add default 10.0.0.1
      ifconfig gif0 create
      ifconfig gif0 tunnel inet 10.0.0.2 10.0.0.1
      ifconfig gif0 inet 172.16.1.1/24
      route add -net 172.16.0.0/24 -iface gif0
      ifconfig bridge0 create
      ifconfig bridge0 addm gif0 -stf gif0

以上のように設定したところ、通信ができなかった。(NodeAでping 172.16.1.1を実行した)

tcpdumpでgif0の通信内容を見る(tcpdump -ni gif0) と、AF Unknown (18), length 46:が表示される。また、この時にtcpdump -ni em0を見ると、IP 10.0.0.1 > 10.0.0.2: ip-proto-97 86 のように、Packetは出て行っており、IPのProtocol番号97で通信しているようだが、pingは届かない。(parameter errorが出る)

この問題は、IP AddressをIPv4からIPv6に置き換えても変わらなかった。

問題を切り分けようと、bridge I/Fを削除すると、問題なくICMPが届くところを見ると、gifでの通信は正常にできていると考えられる。

とすると、FreeBSDのbridge deviceがEtherIP関連でものすごく変なことをしているとしか考えられない… と思って、ifconfig bridge0 deletem gif0 をNodeA/NodeBの両方で実行すると、問題なく通信できるようになる。

よく見る(症状1)と、

  1. bridge0にgif0が所属していない時は、いわゆるIPv4/IPv6パケットが流れた
  2. bridge0にgif0が所属している時(addmした時)は、protocol number 97(EtherIP)の通信のように見える (tcpdumpのBinaryを解析する根性はなかった)。

なお、いくつか試験するにあたって、

  1. gifのみにIP Address(172.16.0.1/172.16.1.1)を割り当てた場合
  2. bridgeのみにIP Address(172.16.0.1/172.16.0.2)を割り当てた場合 (BridgeはBridgeをDirectに繋いでいるので、同一Segmentである必要がある)
  3. lo9を作成してそこのみにIP Address(172.16.0.1/172.16.1.1)を割り当てた場合

の3パターンを試験したが、全て、上記の症状1が観測された。

FreeBSD 9系列では動いているという報告はあるのだが、それもどこまで信用すれば…(いまさらFreeBSD 9-RELEASEを作る気にならなかった) そして、FreeBSD 13で動くかわからないしなぁ。

なんで俺はこんなに罠にハマるんだろう… さて、どうすれば解決できることやら…

このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
tweet/2021/0530_01.1622315287.txt.gz · 最終更新: 2021/05/30 04:15 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki