ファイアウォールの規則は最初と最後のアドレスを受け付けます(192.168.0.200 から 192.168.0.255 など)が、ルートは受け付けません。ルートの項目にはネットワークとマスクの場所しかないため、連続した範囲は、OpenVPN がインストールする前に、整列した一つ以上のプレフィックスに変換する必要があります。route-nopull を整列していない区間と組み合わせたプロファイルこそ、ファイルは解析できてしまい、どのルートも一致しないため、失敗が普段隠れる場所です。ブロックを正せば、失敗は一つのコマンドで見えるようになります。

俗説:範囲はルートである

ルーティングテーブルはネットワークとマスクの組を保存し、最長一致を選ぶので、始まりと終わりを持つ区間には居場所がありません。256 個のアドレスをまたぐ一つのプレフィックスは .0 から .255 を覆い、その半分の大きさは .0 から .127 を覆い、そうした端に整列した範囲だけが一手で対応します。それ以外はすべてブロックに切る必要があります。より小さなルートでも、意味するのは元の区間です。

プレフィックスに整列していない範囲は、圧縮されたルートではありません。別の種類の対象であり、それをルートとして扱うところから静かな失敗が始まります。

整列は算術であり、作法ではない

ブロックの大きさはプレフィックス長で決まります。/29 は 8 で割り切れるアドレスからしか始められず、/28 は 16 で割り切れるもの、/27 は 32 で割り切れるものから始まります。ブロックを境界からずらすと、マスクは意図したのとは別のアドレス集合を覆います。

下の端から合計します。各手順で、範囲の終わりを超えない最大の整列したブロックを取り、その直後の最初のアドレスから続けます。ブロックは、それぞれが前のブロックの止まった場所から始まるため、重なりません。

これを手作業で行う二人は同じ結果に達するはずです。食い違いは、誰かが整列していない開始を許したことを意味します。

200 から 255 をたどる

StepStartBlock that fitsLine for the profile
1.200, multiple of 8/29, 8 addresses192.168.0.200 255.255.255.248
2.208, multiple of 16/28, 16 addresses192.168.0.208 255.255.255.240
3.224, multiple of 32/27, 32 addresses192.168.0.224 255.255.255.224

範囲は .200 から始まり、これは 8 の倍数なので、最初のブロックは .200 から .207 までの /29 です。この八個のアドレスの後、最初の空き値は .208 で、16 で割り切れるため、/28 が .208 から .223 までを取ります。残るのは .224 から .255 まで、32 の倍数から始まる三十二個のアドレスなので /27 です。その三行が分解のすべてです。

それらは文章ではなくルート行として書きます。最初の行だけを持つプロファイルは八個のアドレスを覆い、残りをトンネルの外に置きます。

route-nopull
route 192.168.0.200 255.255.255.248
route 192.168.0.208 255.255.255.240
route 192.168.0.224 255.255.255.224

最後のブロックには境界の確認が要ります。192.168.0.224/27 の内部で、.224 はネットワークアドレス、.255 はブロードキャストアドレスなので、.255 で応答しなければならないホストはプレフィックスに覆われたまま到達できません。そのホストを移すか、ブロックをルートして望むのではなく範囲を別に分割してください。

route-nopull が全体像に与える影響

サーバーが押し付けるルートが不要なときにだけ route-nopull を加えます。この指示がない場合、押し付けられたルートとこれらの行は共存し、最も具体的なプレフィックスが勝ちます。これがあると、押し付けられた DNS と DHCP のオプションも消えるため、内部の名前解決には独自の設定が必要です。この副作用は、ルートの問題を直そうとして指示を加えた人を驚かせます。

既定の反射ではなく、正しい理由で加えてください。押し付けられたルートを外すのは、DNS に影響する方針判断です。サーバーが同じ三つのプレフィックスを押し付けられるなら、そうさせ、クライアント側の複製を削除して一人の所有者が一覧を管理するようにします。

よくある間違いを捕まえる確認

すべてのマスクが連続したオンビットの並びであることを確認します。255.255.255.248 は通り、255.255.255.200 は通らず、連続していないマスクは拒否されるか誤って読まれます。次に、各ブロックで一つのアドレスの経路を確かめます。

ip route get 192.168.0.205
ip route get 192.168.0.220
ip route get 192.168.0.240

どの応答もトンネルのインターフェースを示すはずです。物理アダプターを示す結果は、その行が一度もインストールされなかったことを意味し、これはプロファイルが接続した後にデスクトップのネットワーク管理が表を書き換えるときによく起こります。

一覧の所有者を一人に決めます。サーバーが同じプレフィックスを押し付けられるなら、押し付けてクライアント側の編集を削除します。所有者が一人なら、打ち間違いの居場所も一か所であり、どのアドレスがトンネルの中かでクライアントとサーバーが食い違うことはありません。

関連記事