質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

1回答

1006閲覧

異なるネットワーク間でうまく通信できません。

urbainleverrier

総合スコア200

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

1クリップ

投稿2019/08/30 18:54

※こちらは前回の質問と関連しています。

次のようにBGPを利用してroute情報を交換したいのですが、
通信先のネットワークが異なりうまく通信できません。
質問は、以下の「お聞きしたいこと」に記載させていただきました。
イメージ説明

発生した問題

host2のRR(Route Reflector、172.16.1.111、赤のひし形)にhost1のルーター(10.10.10.11、黄色の丸)から通信することができませんでした。
原因と自分なりの解決策がございますが、うまい方法とは思えません。以下の通りです。

原因

host1からhost2のRRへ通信を行う際、次のようなpacketを送らなければなりません。

10.10.10.11:41715 > 172.16.1.111:179* *左がsrc、右がdst

これは図中の赤線を通って到達することが確認できるのですが、復路(以下)

172.16.1.111.bgp > 10.10.10.11.41715

では非対称通信が認められないのか、青線を通ることはなく、host1にパケットが届かないのが原因でした。

ひとまずの解決策

次のようにすることでとりあえずは通信が可能で、経路情報を交換できました。
host2にて青線を通る復路のパケットの送信先を無理やり赤線にします。

iptables -t nat -A OUTPUT -j DNAT -d 10.10.10.11 -p tcp --sport 179 --to 172.16.1.11 iptables -t nat -A OUTPUT -j DNAT -d 10.10.10.11 -p tcp --dport 179 --to 172.16.1.11:179

host1にて赤線を通ってきた復路のパケットの送信先を無理やり元に戻します。

iptables -t nat -A PREROUTING -i eth1 -j DNAT -p tcp --sport 179 --to 10.10.10.11 iptables -t nat -A PREROUTING -i eth1 -j DNAT -p tcp --dport 179 --to 10.10.10.11:179

これでhost1からhost2のRRへ通信を行い、経路を交換できるのですが、お聞きしたいことが2点あります。

お聞きしたいこと

  1. host1→host2は解決しますが、host2→host1は往路がそもそも届きません。

172.16.1.111:41715 > 10.10.10.11:179
送信元がプライベートアドレスだからでしょうか。
解決策がありましたらご教授いただければ幸いです。

  1. 異なるネットワークに送る場合、もう少しうまい方法はないでしょうか。NATを使わないようにするためにCalicoを使っているのですが、台無しにしているように思います。

少々無理のある設定とは思いますが、何卒よろしくお願いいたします。

環境

  1. 図中のSwithやgatewayのルーターはクラウドプロバイダー管理下のため、設定することはできません。
  2. host1、host2はlinuxサーバーです。
  3. RRはcalicoのルーターと兼務させております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

お聞きしたいこと 1
プライベートアドレスはグローバルネットワークでは破棄されます。

お聞きしたいこと 2
異なるネットワーク間ではrp_filterをlooseにしたり、iptablesのstateがinvalidなものはdropされる可能性があるので確認が必要です。

また、natを使うとあまりにも複雑になるので、ipsetでアドレスを管理し、iptablesでmark、pbrでrouteを管理といった具合にやると多少わかりやすくなりました。

投稿2019/09/12 07:15

編集2019/09/12 07:16
urbainleverrier

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問