メモ Edit

VPNできないときの対応 Edit

5555で接続する。

VPN Edit

ホテルのWiFiなどは非常に遅いことがよくある。そういう場合,Windowsやスマホの標準的なVPN (L2TP/IPsec)では接続できないことがよくある。クライアント側のエラーメッセージからは,遅いためなのか,FWで遮断されているからなのかは分からない。ただ,こういう場合でも,Softetherの標準プロトコルは耐性が高いようだ。

SoftEther Edit

サーバー側のfirewallに穴を空けて設置した方が無難だ。SoftEtherは穴なしでも運用できる強力な透過性が一つのウリだが(NATトラバーサル機能),意外と接続できない場所もありそうだ。例えばANAの羽田空港ラウンジ(国際線)のWiFiからは,穴を空けてないサーバーには接続できなかった(言い換えると、VPN over UDP with NAT-Tだと不可。2017年8月)。また,iOSやAndroidから接続するにも穴を空ける必要がある(L2TP/IPsecになるから)。とりわけ中国から接続する(後述)には穴を空けておいた方が確実だろう。もともとNATトラバーサル機能はFWに穴を空けられない事情がある場合にこそ本領を発揮する。自分が管理するVPSなら穴を空けるのは特に問題ないだろう。

  • 他にNAT Traversalで外部のSoftEther VPNサーバーに接続できなかった場所: ANA羽田国内線ラウンジ(2017年 8月),ANA伊丹ラウンジ(2017年 8月)。
  • NAT Traversalで接続時にSoftetherクライアントから出る警告。
    NAT Traversal 接続 - 安定性低下の可能性があります
    VPN Client は VPN Server '...' に NAT トラバーサル (UDP ホールパンチング) モードで接続しました。
    NAT トラバーサルによって、VPN Client は NAT やファイアウォールの背後にある VPN Server に、それらの NAT やファイアウォールでのポートフォワーディングの設定を行うことなく接続することができます。
    しかし、NAT トラバーサルは UDP をベースとした通信を使用するため、VPN セッションが不安定になる原因となる場合があります。たとえば、安価な NAT ルータが VPN Server と VPN Client との間に存在する場合、NAT トラバーサル上の VPN トンネルは 5 分ごとに切断される場合があります。また、安価な ISP が大規模な NAT を使用している場合にも NAT トラバーサルは不安定になります。これはルータや ISP の品質の問題であり、SoftEther VPN の問題ではありません。
    これを解決するためには、NAT トラバーサルを使用するのではなく、直接 TCP/IP によって VPN Server のリスナーポートに VPN Client が接続することができるようにします。そのためには、VPN Server のリスナーポートがインターネットに対して公開されるように、NAT におけるポートフォワーディング設定を行ってください。NAT におけるポートフォワーディング設定の方法は、NAT の管理者に問い合わせるか、NAT 製品の説明書をお読みください。
    VPN Server が TCP ポートをインターネットに対して公開しているにも関わらずこのメッセージが表示される場合は、VPN Client の接続設定画面で「NAT-T 無効」をチェックしてください。

中国 Edit

中国政府はVPNブロックを2018年2月1日から有効にする(中国政府、通信事業者にVPNの利用禁止を要求 | TechCrunch Japan2017年7月11日)と報じられているので,中国に行く前に5555を空けておいた方が無難だ。FWに穴を空けてないと,クライアントはSoftEther本体の管理サーバーにまず接続するのだと思うが,これが遮断される可能性が非常に高く,NATトラバーサル機能が機能しなくなるのではないか。また,992は「プロキシサーバーは通過できない場合が多い」(3.3 VPN Server 管理 - SoftEther VPN プロジェクト)。443を使うには自分のhttpsをあきらめる必要がある。

なお,接続先の個別の設定でNAT-Tを無効にできる。

中国でVPNが塞がれた場合に特に考える必要があるのは、スマホはSoftether標準プロトコルでは接続できないこと。一番簡単な対抗策はSoftEtherサーバーにOpenVPNクライアントで接続することかな。これならiOSアプリやAndroidアプリもある。ただしOpenVPNは著名なのでこれも塞がれる可能性が高そう。

他には,WiFiルーターを使うか,Windows10をWiFiルーター代わり(モバイルホットスポット)にする手もある。なお,モバイルホットスポット機能を使う場合,iPhone(子)は親の環境(親でVPN中)を完全には引き継がない。詳細はPC/Windows

ホスト名 Edit

自分で決めたホスト名で接続できる(ダイナミック DNS)。一つ注意すべきことは,一度確保した名前を別のマシンで継続使用する(サーバーの移転やSoftEtherの再インストールなどに伴い)には「ダイナミック DNS 秘密鍵」を事前にメモしておく必要がある。

  • この秘密鍵は、現在使用している DDNS 名と対応付けられています。現在 VPN Server として使用している PC が破損するなどして、この秘密鍵が失われると、その時設定されていた DDNS 名は占有されたままの状態となり、他の VPN Serverで使用できなくなります。同じ名前を継続して使用したい場合は、秘密鍵を他の PC やインタネット上のストレージ、メモ用紙などに保管しておいてください。
    秘密鍵を新しい VPN Server に設定する際は、VPN Server の設定ファイルを編集します。"declare DDnsClient" ディレクティブ中にある "byte Key" に続く値を、保管しておいた秘密鍵の文字列で置き換えてください。
    なお、同時に複数の VPN Server で同じ秘密鍵を設定すると正常に動作しなくなりますので注意してください。

Amazon Lightsail Edit

Google Project Fiなど,米国IPがないと利用や申込ができないものがある。一般には公開proxyやVPN Gate 筑波大学による公開 VPN 中継サーバープロジェクトなどを使うのだろうけど,流行廃りがあるので頻繁に使っていない人はどれが最適か(安全で安定的か)分かりにくい。調べるだけ時間の無駄なので,米国のAmazon Lightsailに自前でSoftEtherを立てた。

偶にVPNサーバーに使うだけなら、普段はインスタンスを削除して維持費を低くすることもできる。スナップショットを保持すると課金されるが、インスタンスを維持するよりはかなり安くなる。偶にSoftEtherを使うだけなら、スナップショットなしに毎回ゼロからインスタンスを作っても1時間かからないだろう。

サブドメイン Edit

DNS Edit

  • Q: 「サブドメインはCNAME,Aのいずれで定義すればよのか?」「両者は何が違う?」
    • A: サブドメインは,個人のサーバーのようにIPアドレスがそもそも一つのときはCNAME,Aのいずれでも定義できるし,いずれで定義してもよい。Aで定義とはIPアドレスで定義する意味であり,IPが変わればAで定義した項目を全て直す必要がある。他方,CNAMEはIPではなく名前で定義する意味。当該サブドメイン名は何かの別名という位置づけ。(cnameは本名(Canonical NAME)の意味。)本名または別名のIPが変わっても別名の項目を直す必要はない。「サブドメインはCNAME,Aのいずれで定義すればよのか」,という疑問は,そもそもIPが一つしかない場合に典型的に生じる特殊なものなのだ。

短縮URL Edit

長いURLの代わりに短縮URLを使うとき,意味不明の文字列なので短くしたのになお記憶困難だったり,手打ちするには全然向かなかったりすることがある。リンクをクリックする用法のみ想定すればよいなら,意味不明の文字列でもよいが,それでは済まないこともある。自前サーバーがあればもっとスマートに短縮URLを用意できる。サブドメインとmod_rewriteを使えばよい。サブドメインを使わずにディレクトリで表現してもよいが,どちらがより他人に伝えやすいか,自分が覚えやすいか次第だ。

httpd Edit

異常対応 Edit

  • 現象: PHPスクリプトの中身がブラウザに表示されてしまう。
    • あり得る原因: PHPモジュール(libphp5.so,libphp7.so等)がウェブサーバーにロードされていない。例えばApache httpdとPHPのレポジトリが違うと起きうる。標準的なレポジトリなら自動で設定されるが,そうでないレポジトリを使うと,両者で想定しているディレクトリ構造が違うため齟齬が起き,ロードされない。2018年 4月 1日
  • 現象: Perlでモジュールを追加(cpan)してもCGIの500エラーを解消できない。httpdのエラーログを見ると、入れたはずのモジュールが入っていない。
    • 原因: モジュールがrootにしか入っていない。他のユーザー(apacheを含む)からは見えない。rootの~/.bashrcでperlの環境変数が追加されており,他のユーザーのパスの外にインストールされていた。下記記述を削除して,モジュールを再度インストールする。どのタイミングで~/.bashrcが編集されたか不明。CentOS 7.4。2018年 4月 3日
      PATH="/root/perl5/bin${PATH:+:${PA...
      PERL5LIB="/root/perl5/lib/perl5${P...
      PERL_LOCAL_LIB_ROOT="/root/perl5${...
      PERL_MB_OPT="--install_base \"/roo...
      PERL_MM_OPT="INSTALL_BASE=/root/pe...
      

仕様 Edit

自宅サーバーの新たな効用 Edit

NET/自宅LAN/VPN

メモ Edit

  • Apacheウェブサーバー2.2のサポート期間が終了したので,2.4に更新した。当初,最新版(まだレポジトリにはない)をソースから入れたが,PHPのパッケージ(remi)とライブラリの互換性を取れなかった。(なお,ソースからRPMを作るのは結構時間がかかったが,手間だけの問題だし,次回から手数は減るはず。それでも自動化できないのは痛い。)Apacheの最新はあきらめて,IUSレポジトリを使うことにした。2018年 4月 1日
    php70-php-7.0.29-1.el6.remi.x86_64 (remi-safe)
                 要求: httpd-mmn = 20051115
                インストール: httpd-2.4.33-1.x86_64 (@/httpd-2.4.33-1.x86_64)
                    httpd-mmn = 20120211
    
  • PHP 5.6のサポート期間の終了が近づいている(2019年1月)ので,更新した。2018年 4月 1日
  • CentOS 6.9を使ってきたが,7.4に変更した。6のままApache 2.4を使うより全体を更新した方が齟齬が少ないだろうという判断。実際、あとで気付いたのだが、CentOS 6.9ではiusレポジトリのApache 2.4とremiのPHP70は共存しなかった。(PHP56も駄目だった。)2018年 4月 1日
  • WindowsXPのアプリを使い続けたいことがあるのと同じく,PHP 5.xでしか動かないアプリを使い続けたいことがある。複数のPHPバージョンを一つのApacheで同居させるのは予想以上に簡単だった。(エンジニアはかなり昔から開発環境の便宜のため実行してきたそうだ。)今回,PHP 7.0を主として使っている環境で,一部のディレクトリのみPHP 5.6でスクリプトを実行させることがかなり簡単にできた。どちらのバージョンを使うかはディレクトリ単位で.htaccessの設定のみで指示できるので非常に簡便だ。2018年 4月 3日
  • google-proxy-66-xx-xx-xx.google.comやrate-limited-proxy-72-xx-xx-xx.google.comは何?という質問を偶に目にする。Android版Chromeのproxyアクセスという回答が基本的に正しいようだが、他に、Google Search Consoleも同じものを使うようだ。これはモバイルで見た場合にどう見えるかなどを調べているので、user-agentにbotという語は入らない。2018年 4月11日

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-08 (日) 12:23:00 (13d)