Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2017/06/10

EdgeRouter X で OpenVPN を使った Site-to-Site VPN を構築してみた

  edgeos  openvpn  networking  ubiquiti 
このエントリーをはてなブックマークに追加

Ubiquiti Networks Edgerouter ER-X(日本国内)

EdgeRouter X でリモートメンテナンスを行うための Site-to-Site VPN を構築してみたのでメモ。

本当はハードウェアオフロードが効くIPSec を使いたかったのですが、ネットワーク構成がちょっと特殊で UDP がうまく通らない環境だったので、泣く泣くOpenVPN しかも TCP を使うというちょっと特殊な設定をする羽目になりました。UDP の場合だと OpenVPN の設定は対称にできるのですが、今回は TCP なので一方が発呼側(tcp-active)、もう一方は着信側(tcp-passive)に設定する必要があります。

通常、Site-to-Site VPN の場合には双方向に通信が可能になりますが、今回はメンテナンスのための構成なので、原則として site01 → site02 の方向(とその戻りパケット)にしか通信を許さないようにフィルタ( VTUN0_IN )を設定してあります。例えば自分の家から実家にはアクセスできますが、実家から自分の家には入ってこられないようなイメージになります。このフィルタはどちら側にも設定出来ますが、信頼できる側に設定するのが筋なので、今回は site01 側に設定してあります。

まとめるとこんな感じでしょうか。

  • site01:
    • OpenVPN 発信側(tcp-active)
    • メンテナンスをする側(site02 側にアクセスできる)
    • LANのアドレスは 192.168.100.0/24
    • vtun0 のアドレス 192.168.111.1(このアドレスは他と重複しなければ何でも良い)
  • site02:
    • OpenVPN 着信側(tcp-passive)
    • メンテナンスをされる側(site01側には原則としてアクセスできない)
    • LANのアドレスは 192.168.200.0/24
    • vtun0 のアドレス 192.168.111.2(このアドレスは他と重複しなければ何でも良い)

例のごとく、以下のサイトに大変お世話になりながら設定しました。

以下、具体的な設定になります。

OpenVPN のキーを生成

まず、認証に使う RSA キーを生成しておきます。
この鍵は双方で同じ物を使う必要がある(shared-secret)ので、コピーしてパーミッションを調整しておきます。

generate vpn openvpn-key /config/auth/secretsudo cat /config/auth/secret # ここで表示されたキーを対向の EdgeRouterX に書き込みsudo chmod 600 /config/auth/secret

site01(発呼側)の設定

site02.example.jp については、自分の環境に合わせて読み替えてください。
IP アドレスを直に書いてもいいですし、DDNS 等を使って FQDN を使うこともできます。

あとは configure コマンドで設定モードに入って以下のような設定を流し込みます。

### OpenVPN用アドレスグループ設定# 信頼するPCのアドレスグループ(TRUSTED_PC)を定義# ここで定義したIPのみがトンネルを越えられるset firewall group address-group TRUSTED_PC description 'Trusted PC Address'set firewall group address-group TRUSTED_PC address 192.16.100.0/24# このように対向側の IP を設定すれば 192.168.200.200 は site01 側にアクセスできますset firewall group address-group TRUSTED_PC address 192.168.200.200### OpenVPN用 F/W設定# vtun0用F/W設定set firewall name VTUN0_IN default-action dropset firewall name VTUN0_IN description ''# established/related な通信を許可set firewall name VTUN0_IN rule 10 action acceptset firewall name VTUN0_IN rule 10 description 'Allow established/related'set firewall name VTUN0_IN rule 10 log disableset firewall name VTUN0_IN rule 10 protocol allset firewall name VTUN0_IN rule 10 state established enableset firewall name VTUN0_IN rule 10 state invalid disableset firewall name VTUN0_IN rule 10 state new disableset firewall name VTUN0_IN rule 10 state related enable# 信頼するPCからの通信を許可set firewall name VTUN0_IN rule 20 action acceptset firewall name VTUN0_IN rule 20 description 'Allow from TRUSTED_PC'set firewall name VTUN0_IN rule 20 log disableset firewall name VTUN0_IN rule 20 protocol allset firewall name VTUN0_IN rule 20 source group address-group TRUSTED_PC# invalid state なパケットを Dropset firewall name VTUN0_IN rule 30 action dropset firewall name VTUN0_IN rule 30 description 'Drop invalid state'set firewall name VTUN0_IN rule 30 log disableset firewall name VTUN0_IN rule 30 protocol allset firewall name VTUN0_IN rule 30 state established disableset firewall name VTUN0_IN rule 30 state invalid enableset firewall name VTUN0_IN rule 30 state new disableset firewall name VTUN0_IN rule 30 state related disable### vtun0 インターフェースの設定(TCP発呼側)set interfaces openvpn vtun0 firewall in name VTUN0_INset interfaces openvpn vtun0 local-address 192.168.111.1set interfaces openvpn vtun0 remote-address 192.168.111.2set interfaces openvpn vtun0 mode site-to-siteset interfaces openvpn vtun0 openvpn-option --comp-lzoset interfaces openvpn vtun0 openvpn-option --floatset interfaces openvpn vtun0 openvpn-option '--ping 10'set interfaces openvpn vtun0 openvpn-option '--ping-restart 20'set interfaces openvpn vtun0 openvpn-option --ping-timer-remset interfaces openvpn vtun0 openvpn-option --persist-tunset interfaces openvpn vtun0 openvpn-option --persist-keyset interfaces openvpn vtun0 openvpn-option '--user nobody'set interfaces openvpn vtun0 openvpn-option '--group nogroup'set interfaces openvpn vtun0 protocol tcp-activeset interfaces openvpn vtun0 remote-host site02.example.jpset interfaces openvpn vtun0 remote-port 1194set interfaces openvpn vtun0 shared-secret-key-file /config/auth/secret### ルーティングテーブルに対向のアドレスを追加set protocols static interface-route 192.16.200.0/24 next-hop-interface vtun0

site02(着信側)の設定

site01 と同様に site01.example.jp については、自分の環境に合わせて読み替えてください。
configure コマンドで設定モードに入って以下のような設定を流し込みます。

### WAN_LOCAL用F/W設定# LOCAL(ルータ)に対してOpenVPN の通信を許可# (ルール番号はデフォルトのAllow established/relatedとDrop invalid stateの間になるように注意)set firewall name WAN_LOCAL rule 15 action acceptset firewall name WAN_LOCAL rule 15 description 'Allow OpenVPN'set firewall name WAN_LOCAL rule 15 destination port 1194set firewall name WAN_LOCAL rule 15 log disableset firewall name WAN_LOCAL rule 15 protocol tcp_udp### vtun0 インターフェースの設定(TCP受信側)set interfaces openvpn vtun0 local-address 192.168.111.2set interfaces openvpn vtun0 remote-address 192.168.111.1set interfaces openvpn vtun0 local-port 1194set interfaces openvpn vtun0 mode site-to-siteset interfaces openvpn vtun0 openvpn-option --comp-lzoset interfaces openvpn vtun0 openvpn-option --floatset interfaces openvpn vtun0 openvpn-option '--ping 10'set interfaces openvpn vtun0 openvpn-option '--ping-restart 20'set interfaces openvpn vtun0 openvpn-option --ping-timer-remset interfaces openvpn vtun0 openvpn-option --persist-tunset interfaces openvpn vtun0 openvpn-option --persist-keyset interfaces openvpn vtun0 openvpn-option '--user nobody'set interfaces openvpn vtun0 openvpn-option '--group nogroup'set interfaces openvpn vtun0 protocol tcp-passiveset interfaces openvpn vtun0 remote-host site01.example.jpset interfaces openvpn vtun0 remote-port 1194set interfaces openvpn vtun0 shared-secret-key-file /config/auth/secret### ルーティングテーブルに対向のアドレスを追加set protocols static interface-route 192.168.100.0/24 next-hop-interface vtun0

OpenVPN のステータス確認

ステータスの確認は以下のコマンドで実行できます。

show interfaces openvpnshow interfaces openvpn detailshow openvpn status site-to-site

ちょっと手こずりましたが、ネットワーキングの基本を理解していればそれほど難しくはないと思います。
自分の環境に応じて、発呼→着信を入れ替えたり、フィルタの方向を逆にしたりなどいろいろと応用が利くと思います。


    byhsur at 22:47[5年前][4年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
    こんな記事もあります 「TCP 対向 EdgeRouter
    2022 年の人気エントリ Top 100
    firewalld を使って Docer で公開したポートをアクセス制限
    firewalld + ipset で IP ブラックリスト(+ホワイトリストも)設定(改)
    Yamaha ルータ+ぷらら光メイトでぷららv6エクスプレス(DS-Lite編)
    Yamaha ルータ+ぷらら光でぷららv6エクスプレス(MAP-E編)
    2021 年の人気エントリ Top 100
    Git for Windows でも Pageant が使いたい!!
    SoftEther を CentOS 8 にインストール
    Windows Update の日(2021 年 2 月)
    高負荷サーバでは net.core.somaxconn の設定に注意
    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9397
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL:Yahoo! JAPAN IDでログイン

    « :: »
    Copyright © 2004-2023 by CLES All Rights Reserved.
    サイト内検索
    検索ワードランキング
    へぇが多いエントリ
    閲覧数が多いエントリ
    1 .アーロンチェアのポスチャーフィットを修理(99656)
    2 .年次の人間ドックへ(99074)
    3 .福岡銀がデマの投稿者への刑事告訴を検討中(99063)
    4 .三菱鉛筆がラミーを買収(98672)
    5 .2023 年分の確定申告完了!(1つめ)(98641)
    最新のエントリ
    cles::blogについて
    誰が書いてる?
    最近行った場所
    サイトポリシー
    タグ一覧
    検索ワードランキング

    Referrers

      Powered by CLES
      Nucleus CMS v3.31SP3/w memcached
      21375053(W:5678 Y:1545 T:0872)
      cles::blogのはてなブックマーク数
      benchmark


      [8]ページ先頭

      ©2009-2025 Movatter.jp