- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-11-10T23:26:30+09:00;2021-11-10T23:19:39+09:00","default:tgoto","tgoto")
#author("2021-11-11T08:22:03+09:00;2021-11-10T23:19:39+09:00","default:tgoto","tgoto")
#ref(https://oncologynote.com/img/b07c79e04f.jpg,SynologyのNASのDSMを7.0にアップデートしたらVPNが繋がらなくなった問題)
自宅でSynology NASを使っています。そしてSynologyのアプリでVPN serverを立てて、外出先からファイルにアクセスする場合はVPNで自宅に接続していました。それがDSM 6からDSM 7.0にアップデートしたらどういうわけか自宅のネットワークにアクセスできなくなり復旧に苦労しました。このページはその記録です。
#contents
* 環境 [#v6750e70]
>
- Synology NAS(DSM 7.0)
- 自宅ネットワーク:光回線 IPV6 IPoE(BIGLOBE光)
- ルータ:NEC Aterm WG1200HP4(自宅内MESH)
- OpenVPN
ルータはOpenVPNに必要なポートを開いています。OpenVPNのポートは標準では1194ですが、IPV6 IPoEの場合はプロバイダ側から割り当てられた範囲のポートしか開放できないので、その範囲内のポートを開いています。ちなみに、L2TP/IPsecやPPTPはポート番号が選べないのでIPV6 IPoEで使用するのは大変です。
NEC Aterm WG1200HP4の設定画面から「ポートマッピング設定」を選択し、NATエントリに下記のような設定をしています。ここでは例としてルータのLAN内IPアドレスが192.168.0.XXXであり51194ポートを開放する場合を記載します。
|優先度|LAN側ホスト|プロトコル|変換対象ポート|宛先ポート|
|1|192.168.0.XXX|UDP|51194|1194|
|2|192.168.0.XXX|TCP|51194|1194|
DSM 6時代はSynology DSMからVPN serverを開いてOpenVPNで問題なく接続できていました。しかし、DSM 7.0にアップデートすると突然VPNでLAN内ネットワークに接続ができなくなってしまいました。正確には、VPN接続自体は確立できるので接続自体はできているのですが、LAN内のファイルフォルダにもアクセスできないし自分用に立てている自宅内pukiwikiにもアクセスできません。Synology NASのファイアウォールを一時的にオフにしてみたり、51194以外のポートを試しに開けてみたりしても繋がりません(つまりファイアウォールをオフにしたり、51194以外のポートを開放する必要は全くありません)。Synology NASのファイアウォールは、NASを直接インターネットに接続しない限りは、LAN内ではファイアウォールは初期設定のままで問題ないと思います。redirect-gateway def1をコメントアウトしたり元に戻したり(つまり全通信をVPN経由にしたり)、dhcp-option DNS 192.168.0.XXXをオフにしたりオンにしたり、圧縮をオンにしたりオフにしたり、暗号化形式を変えてみたりしたのは、結局全て無駄でした。
DSM 6時代はSynology DSMからVPN serverを開いてOpenVPNで問題なく接続できていました。しかし、DSM 7.0にアップデートすると突然VPNでLAN内ネットワークに接続ができなくなってしまいました。正確には、VPN接続自体は確立できるので接続自体はできているのですが、LAN内のファイルフォルダにもアクセスできないし自分用に立てている自宅内pukiwikiにもアクセスできません。
*試してみたが無駄だったこと [#nd786f22]
>
- Synology NASのファイアウォール設定を変える(制限を緩める)
- ルータでOpenVPNが接続するポート以外を開いてみる(関係ない。開くポートは1つでいい)
- Synology NASをLAN経由ではなく直接インターネットにPPPoE接続させる(関係ない)
- redirect-gateway def1を有効にしたり無効にしたりしてみる(全通信がVPN経由であってもなくても通信できるかどうかには関係ない。ただし接続できた場合はコメントアウトで無効にしておくほうが通信速度自体は速い)
- LAN内のDNSサーバーの設定を変えてみたりする(redirect-gateway def1を無効にしていれば関係ない)
- 圧縮をオンにしたりオフにしたりする(そもそもオンにすると繋がらないことが多い)
- 暗号化形式を変えてみる(関係ない)
Synology NASのファイアウォールを一時的にオフにしてみたり、ルータで51194以外のポートを試しに開けてみたりしても繋がりません(つまりファイアウォールをオフにしたり、51194以外のポートを開放する必要は全くありません)。Synology NASのファイアウォールは、NASを直接インターネットに接続しない限りは、LAN内ではファイアウォールは初期設定のままで問題ないと思います。redirect-gateway def1をコメントアウトしたり元に戻したり(つまり全通信をVPN経由にしたり)、dhcp-option DNS 192.168.0.XXXをオフにしたりオンにしたり、圧縮をオンにしたりオフにしたり、暗号化形式を変えてみたりしたのは、結局全て無駄でした。
* UDPをTCPにしたら繋がった [#q0f9fd26]
色々試してみても繋がらなかったので、UDPをTCPにしたら接続が安定したという記事を見てついにVPNの接続方式もTCPに変更してみました。UDPがTCPに変わるとOpenVPN設定ファイル(ovpnファイル)も再度エクスポートしてOpenVPNアプリにインポートし直す必要があります。うーむ、つまりDSM 6のときはUDPで接続できていたのにDSM 7.0になることでなぜかUDPでは(VPN接続自体は確立できるが)ファイルアクセスなどは不安定になってしまっていたと・・・。
* UDPでもMssfixオプション値を下げると繋がった [#v07ae739]
しかし犯人がUDPだとわかっても、なぜ今までUDPで問題なくLAN内ファイルサーバーなどにアクセスできていたのに急にそれが不安定になったのかよくわかりません。VPNの通信速度自体はTCPよりもUDPのほうが速いという話も聞くと、UDPを諦めてしまうのももったいないような気もします(そんな速度差がわかるような作業はしないのですが)。OpenVPNのチューニングに関するブログを見ながらUDPの中で設定を色々といじってみると、Mssfix値を変えることで通信が安定することがわかりました。
#ogp(https://kt-hiro.hatenablog.com/entry/20171227/1514329162)
これまでUDPではMssfix値は1450に設定していました。しかし、これが高いとUDP通信が不安定となることがわかったのです(ちなみにMssfix値はUDPのみに影響し、TCPには関与しません)。試しに最初は1350に下げてみましたところUDPでも接続しNASファイルサーバーのファイルをダウンロードできるようになったので、少しずつMssfix値を上げてゆき、最終的には1400にしても十分通じました。
これまでUDPではMssfix値は1450に設定されていました(DSM 6の頃とDSM 7.0になってからで値が変わったのかどうかわかりませんが、今までこの項目を触った記憶はありません)。しかし、これが高いとUDP通信が不安定となるようです。ちなみにMssfix値はUDPのみに影響し、TCPには関与しません。
試しに最初は1350に下げてみましたところUDPでも接続しNASファイルサーバーのファイルをダウンロードできるようになったので、少しずつMssfix値を上げてゆき、最終的には1400にしても十分通じました。
*回線種別による違いも? [#t5803186]
モバイル回線によっても挙動が異なるようです。これは後からわかったことですが、 au(povo)回線のiPhoneとUQ mobile回線のiPadならほぼ同じ挙動をするだろうと思っていましたが、au回線のiPhoneは安定しているのに対してUQ mobile回線のiPadのほうはVPN接続は繋がらないわけではないものの著しく不安定です。これについては最後までiPadのほうはTCPでしか接続できず、UDPでの接続についての解決方法はわかりませんでした。
*IPV6でも同様 [#lc9d6374]
VPN接続にもIPV4とIPV6があります。通常はIPV4で接続している人が多いと思いますが、今回ついでにIPV6でも試してみました。
設定ファイル(ovpnファイル)内のproto udpをproto udp6とすればIPV6でのVPN通信を明示的に指定できます。これでもMssfix値が1400であれば接続が安定していました。状況によってはIPV6のほうがかなり接続速度が上がるようです。ただし、今回VPN接続を受ける側のsynology NASだけでなく、そこへ接続する外出先の端末と回線もIPV6に対応している必要があります。
* まとめ [#lbd88ece]
今回は原因がはっきりわかるまで時間がかなりかかってしまいましたが、それまで繋がっていたOpenVPNが何かの理由で繋がらなくなった場合は、UDPのMssfix値を少し下げてみるか、それでも不可なら思い切ってTCPに変更してみるというのも一つの方法だと思いました。
#navi(日記/2021年)