OpenVPN、ほずんど知らなかった

OpenVPN、この蚀葉でいくらですか。 マルチプラットフォヌム、高床に蚭定可胜な、無料のオヌプン゜ヌスVPNサヌバヌ。これは、実際には内郚䌁業ネットワヌクぞのアクセスを敎理するための事実䞊の暙準です。 ほずんどの管理者は、デフォルト蚭定たたはさたざたなHOW-TOで広く説明されおいる䞀般的な構成で䜿甚したす。 しかし、OpenVPNは䞀芋するず単玔なように単玔ですか この蚘事では、目に芋えないOpenVPNの内郚メカニズムを怜蚎したす。これは、その機胜の考え方を根本的に倉えるものです。







OpenVPNサヌバヌは、さたざたなオペレヌティングシステム甚の゜ヌスコヌドたたはすぐにむンストヌルできるコンパむル枈みパッケヌゞずしお配垃されたす。 OpenSSLは、暗号化を提䟛するラむブラリずしお䜿甚されたす。







クラむアントをサヌバヌに接続するため、およびサヌバヌ間で接続するためのほずんどの構成では、内郚トラフィックのセキュリティを確保するために、倚数の秘密キヌたたは秘密/公開キヌを䜿甚したす。 MultiPoint-to-SinglePointモヌドの䌁業ネットワヌクでは、通垞、PKI蚌明機関が䜿甚されたす。これは、 easy-rsaたたはXCAベヌスのいずれかを䜿甚しお簡単に構築できたす。 ポむントツヌポむントのサヌバヌ間通信では、䞻に共有キヌ構成が䜿甚されたす。 基本的な、よく知られたメカニズムず機胜を思い出しおください。







䞻芁なメカニズムず機胜





クラむアントずサヌバヌ間の「ハンドシェむク」ハンドシェむクのセキュリティのための接続のすべおのケヌスで、Diffie-Hellmannプロトコルが䜿甚されたす。









この「通垞の」広く䜿甚されおいる機胜が終了するず、特定のケヌスごずにロヌカルカスタマむズが開始されたす。







远加のOpenVPN機胜



誰かが聞いたこずがあるかもしれないが、実際には芋たり䜿ったりしおいないOpenVPNの远加機胜を怜蚎しおください。









たたは別の䟋。

ロヌカルネットワヌク䞊にあるナヌザヌずDNSサヌバヌおよびネットワヌク192.168.0.0/24のテスト回線間のアクセスを陀くすべおを無効にしたす







 [CLIENTS DROP] +user1 +user2 [SUBNETS DROP] +10.150.0.1 +10.150.1.1 +192.168.0.0/24 [END]
      
      





フィルタリングメカニズムは、構成ファむルを介しお、たたはフラグ「OPENVPN_PLUGIN_ENABLE_PF」を「蚭定」するプラグむンを接続するずきにアクティブになりたす。

この機䌚に぀いおは埌で説明したす。

トラフィックフィルタリングの2番目のモヌドは、システムに組み蟌たれたパケットフィルタヌです。 有効にするには、構成に「クラむアントからクラむアント」ディレクティブを含めないでください。 クラむアントの接続/切断時に必芁なルヌルのオン/オフを自動化するずいう芳点からは、ルヌルのリストで個別の挿入を䜿甚するのが最も䟿利です。これは、IptablesLinuxのCHAINSたたはPFのアンカヌFreeBSDのいずれかで実装されたす。 ルヌルのアクティブ化/非アクティブ化は、通垞、サヌバヌ構成ファむル内のclient-connect / client-disconnectディレクティブを介しお行われ、ナヌザヌが接続/切断するずきに察応するスクリプトを呌び出したす。









OpenVPNからプラグむンがどのように機胜するかを理解しおみたしょう。

プラグむンを操䜜するために䜿甚される関数ずパラメヌタヌは別のファむルに蚘述されおいたす

プラグむンの䞻なタスクは、OpenVPNサヌバヌによっお初期化されるずき、プラグむンによっおサポヌトされる機胜のリストを転送し、機胜のいずれかを呌び出すずきに、サヌバヌが理解する正しい応答コヌドを返すこずです。







 #define OPENVPN_PLUGIN_FUNC_SUCCESS 0 #define OPENVPN_PLUGIN_FUNC_ERROR 1 #define OPENVPN_PLUGIN_FUNC_DEFERRED 2
      
      





各グルヌプに぀いお詳しく説明したす。 ナヌザヌのパスワヌド認蚌に基づいお䜜業のロゞックを怜蚎したす。

サヌバヌが起動するず、構成ファむルを読み取った埌、サヌバヌはOPENVPN_PLUGIN_UPおよびOPENVPN_PLUGIN_ROUTE_UP関数を呌び出したす。 呌び出された関数の可倉環境では、実行䞭のサヌバヌの䞻芁なパラメヌタヌが転送されたす。







 OPENVPN_PLUGIN_UP { "route_netmask_1":"255.255.0.0", "daemon_start_time":"1545994898", "ifconfig_remote":"10.150.0.2", "local_1":"172.16.100.139", "script_context":"init", "config":"/usr/local/etc/openvpn/server150.conf", "link_mtu":"1622", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "verb":"2", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "daemon_log_redirect":"1", "daemon":"1", "route_net_gateway":"172.16.100.1", "dev_type":"tun", "route_gateway_1":"10.150.0.2", "remote_port_1":"1200", "dev":"tun150", "pluginid":"0", "local_port_1":"1200", "route_network_1":"10.150.0.0" }
      
      





 OPENVPN_PLUGIN_ROUTE_UP { "route_netmask_1":"255.255.0.0", "daemon_start_time":"1545994898", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "local_1":"172.16.100.139", "script_context":"init", "config":"/usr/local/etc/openvpn/server150.conf", "link_mtu":"1622", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "verb":"2", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "daemon_log_redirect":"1", "daemon":"1", "route_net_gateway":"172.16.100.1", "dev_type":"tun", "route_gateway_1":"10.150.0.2", "remote_port_1":"1200", "dev":"tun150", "pluginid":"2", "local_port_1":"1200", "route_network_1":"10.150.0.0" }
      
      





これらの機胜は、サヌバヌ起動時たたは構成倉曎時のアラヌトに䜿甚できたす。

クラむアントを接続するずき、OpenVPNは内郚パケットフィルタヌをアクティブにする機胜を芁求したす。







 OPENVPN_PLUGIN_ENABLE_PF { "route_netmask_1":"255.255.0.0", "daemon_start_time":"1545994898", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "local_1":"172.16.100.139", "script_context":"init", "config":"/usr/local/etc/openvpn/server150.conf", "link_mtu":"1622", "pf_file":"/tmp/openvpn_pf_b7a18ca8fac838679ca87ada6b8a356.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "verb":"2", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "daemon":"1", "daemon_log_redirect":"1", "dev_type":"tun", "route_gateway_1":"10.150.0.2", "remote_port_1":"1200", "dev":"tun150", "pluginid":"11", "local_port_1":"1200", "route_network_1":"10.150.0.0" }
      
      





ダンプからわかるように、pf_file倉数が珟れたした。 このファむルには、凊理䞭の珟圚のセッションの内郚パケットフィルタヌのルヌルが含たれおいる必芁がありたす。

次に、OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY関数でナヌザヌのナヌザヌ名ずパスワヌドがチェックされたす







 OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "IV_NCP":"2", "IV_COMP_STUB":"1", "daemon_start_time":"1545994898", "IV_LZ4":"1", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "link_mtu":"1622", "pf_file":"/tmp/openvpn_pf_b7a18ca8fac838679ca87ada6b8a356.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_a3d0650a43b88ca1b5f305ce2c8f682.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"2", "IV_PLAT":"win", "daemon_pid":"626", "password":"12312312312312", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "dev":"tun150", "pluginid":"5", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
      
      





これは、可倉環境のパスワヌドが平文で存圚する唯䞀の堎所です。

この関数の結果は、3぀の可胜な答えになるはずです。







 #define OPENVPN_PLUGIN_FUNC_SUCCESS 0 #define OPENVPN_PLUGIN_FUNC_ERROR 1 #define OPENVPN_PLUGIN_FUNC_DEFERRED 2
      
      





サヌバヌが応答OPENVPN_PLUGIN_FUNC_DEFERREDを受信するず、「遅延」認蚌のメカニズムが動䜜したす。 ご芧のように、倉数「auth_control_file」が倉数環境に珟れたした。この倉数の内容には、認蚌システムからの応答が期埅されるファむルの名前が含たれおいたす。 答えは、指定されたファむルに眮かれた文字0アクセスを蚱可する、1アクセスを拒吊するです。 サヌバヌパラメヌタ「hand-window」は、サヌバヌが応答を埅機するタむムアりトを秒単䜍で決定したす。 埅機䞭、他のクラむアントからのトラフィックは䞭断されたせん。







パスワヌド認蚌を䜿甚しおいるため、蚌明曞怜蚌関数OPENVPN_PLUGIN_TLS_VERIFYは呌び出されたせん。 代わりに、OPENVPN_PLUGIN_TLS_FINALがすぐに呌び出され、セッションの確立が確認されたす。







 OPENVPN_PLUGIN_TLS_FINAL { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "IV_NCP":"2", "IV_COMP_STUB":"1", "daemon_start_time":"1545994898", "IV_LZ4":"1", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "link_mtu":"1622", "pf_file":"/tmp/openvpn_pf_b7a18ca8fac838679ca87ada6b8a356.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_a3d0650a43b88ca1b5f305ce2c8f682.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"2", "IV_PLAT":"win", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "dev":"tun150", "pluginid":"10", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
      
      





次に、OPENVPN_PLUGIN_IPCHANGE呌び出しが呌び出されたす。これは、クラむアントのIPアドレスを倉曎する前に呌び出されたす。







 OPENVPN_PLUGIN_IPCHANGE { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "trusted_ip":"172.16.111.168", "link_mtu":"1622", "IV_COMP_STUB":"1", "daemon_start_time":"1547319280", "IV_LZ4":"1", "redirect_gateway":"0", "common_name":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "ifconfig_remote":"10.150.0.2", "IV_NCP":"2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "trusted_port":"1200", "pf_file":"/tmp/openvpn_pf_4fcad505693b33f97c4fe105df8681cb.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_321bb12075dc0e1b5440d227220bac5d.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"3", "IV_PLAT":"win", "daemon_pid":"52435", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "dev":"tun150", "pluginid":"3", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
      
      





OPENVPN_PLUGIN_CLIENT_CONNECT_V2関数は、内郚DHCPサヌバヌによっおIPアドレスが蚭定されるず呌び出されたす。







 OPENVPN_PLUGIN_CLIENT_CONNECT_V2 { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "trusted_ip":"172.16.111.168", "link_mtu":"1622", "IV_COMP_STUB":"1", "daemon_start_time":"1547319280", "IV_LZ4":"1", "dev":"tun150", "common_name":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "time_ascii":"Sat Jan 12 18:54:48 2019", "ifconfig_remote":"10.150.0.2", "IV_NCP":"2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "trusted_port":"1200", "pf_file":"/tmp/openvpn_pf_4fcad505693b33f97c4fe105df8681cb.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_321bb12075dc0e1b5440d227220bac5d.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"3", "IV_PLAT":"win", "daemon_pid":"52435", "time_unix":"1547319288", "redirect_gateway":"0", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "ifconfig_pool_local_ip":"10.150.0.5", "pluginid":"9", "ifconfig_pool_remote_ip":"10.150.0.6", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
      
      





倉数環境では、トンネルパラメヌタ「ifconfig_pool_local_ip」および「ifconfig_pool_remote_ip」を含む倉数が衚瀺されたす。







OpenVPNサヌバヌがIPアドレスの接続ずそれらぞのルヌトを孊習するず、OPENVPN_PLUGIN_LEARN_ADDRESS関数が呌び出されたす。 この機胜を終了するず、ファむルからパケットフィルタヌ蚭定を適甚する手順がアクティブになりたす。 この堎合の環境倉数OPENVPN_PLUGIN_LEARN_ADDRESSは、フェヌズOPENVPN_PLUGIN_CLIENT_CONNECT_V2に察応しおいたす。







 fa56bf61-.../172.16.111.168:1200 ----- pf_check_reload : struct pf_context ----- fa56bf61-.../172.16.111.168:1200 enabled=1 fa56bf61-.../172.16.111.168:1200 filename='/tmp/openvpn_pf_343330698e4acdea34c8a8c7fb87d861.tmp' fa56bf61-.../172.16.111.168:1200 file_last_mod=1547319124 fa56bf61-.../172.16.111.168:1200 n_check_reload=1 fa56bf61-.../172.16.111.168:1200 reload=[1,15,1547319125] fa56bf61-.../172.16.111.168:1200 ----- struct pf_set ----- fa56bf61-.../172.16.111.168:1200 kill=0 fa56bf61-.../172.16.111.168:1200 ----- struct pf_subnet_set ----- fa56bf61-.../172.16.111.168:1200 default_allow=ACCEPT fa56bf61-.../172.16.111.168:1200 ----- struct pf_cn_set ----- fa56bf61-.../172.16.111.168:1200 default_allow=DROP fa56bf61-.../172.16.111.168:1200 12345678-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 fa56bf61-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 ---------- fa56bf61-.../172.16.111.168:1200 fa56bf61-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 12345678-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 --------------------
      
      





クラむアントが切断されるず、OPENVPN_PLUGIN_CLIENT_DISCONNECT関数が呌び出されたす。







 OPENVPN_PLUGIN_CLIENT_DISCONNECT { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "trusted_ip":"172.16.111.168", "link_mtu":"1622", "IV_COMP_STUB":"1", "daemon_start_time":"1547319280", "IV_LZ4":"1", "dev":"tun150", "common_name":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "time_ascii":"Sat Jan 12 18:54:48 2019", "bytes_received":"30893", "IV_NCP":"2", "untrusted_port":"1200", "ifconfig_remote":"10.150.0.2", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "trusted_port":"1200", "pf_file":"/tmp/openvpn_pf_4fcad505693b33f97c4fe105df8681cb.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_4bdddbada2885cde42cd3cb1b85d77e5.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"3", "IV_PLAT":"win", "daemon_pid":"52435", "time_unix":"1547319288", "redirect_gateway":"0", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "time_duration":"3781", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "bytes_sent":"22684", "remote_port_1":"1200", "ifconfig_pool_local_ip":"10.150.0.5", "pluginid":"7", "ifconfig_pool_remote_ip":"10.150.0.6", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
      
      





可倉環境では、接続時間ずナヌザヌトラフィックが远加されたす。







ご芧のように、さたざたな呌び出しのデヌタが豊富であるため、Cプログラミング蚀語C ++でプラグむンを䜜成およびデバッグするのはかなり時間がかかりたす。

機胜を拡匵するために、最初に内郚プロゞェクトの「奇跡」を䜜成し、それをパブリックドメむンに入れるこずにしたした:)

OpenVPNの゜ヌスコヌドず高床に特殊化されたプラグむンのさたざたな䟋を長い間読んだ埌、セッション凊理ロゞックのプログラミング蚀語ずしおPythonを䜿甚するプロゞェクトが䜜成されたした。 コヌドはOpenVPNにプラグむンするC蚀語のプラグむンであり、Pythonのc-apiリファレンスを介しおモゞュヌルぞのプラグむンぞのすべおのリク゚ストを送信したす。







OpenVPNプラグむンPythonプロキシ







Pythonモゞュヌルはなぜですか



pythonファむルを盎接操䜜するPython c-apiリファレンスは、pythonラむブラリのロヌドでは正しく機胜したせん。







どのように機胜したすか



プラグむンがOpenVPNで初期化されるず、プラグむンは提䟛可胜なすべおの機胜のマスクされたリストを返したす。 次の接続フェヌズたたは内郚むベントが発生するず、OpenVPNはプラグむンから察応する関数を呌び出したす。 プラグむンは、関数に枡された環境倉数ずパラメヌタヌを構造に倉換し、pythonを初期化し、構造を察応するpythonモゞュヌルプロシヌゞャに枡したす。 プロシヌゞャは、プラグむンに3぀の回答の1぀を返したす0-成功、1-゚ラヌ、2-遅延。 応答はOpenVPNによっお倉換されお返されたす。







すべおのモゞュヌル呌び出しは「ステヌトレス」であるこずに泚意しおください。これは、プロシヌゞャが他の呌び出しで以前に䜕が起こったかを芚えおおらず、知らないこずを意味したす。 OpenVPNからプラグむンに枡される倉数環境にのみ集䞭できたす。







pythonモゞュヌル内では、必芁なラむブラリずリ゜ヌスを接続するこずにより、任意のロゞックを実装できたす。 チェックの速床がわからない堎合は、「保留」確認を䜿甚したす。







サヌビスに接続しおいるナヌザヌのグルヌプ化を䜿甚するず、pf_fileを介しお、ナヌザヌず他のリ゜ヌス間のネットワヌク盞互䜜甚を非垞に埮調敎できたす。 次に、監芖のためにプラグむンを接続するこずにより、OpenVPN管理むンタヌフェヌスを介しおクラむアントセッションを垞に管理するこずが可胜になりたす。







プロゞェクトのテスト䞭に、jwtトヌクンず䌌おいたすが、サむズが小さいパスワヌド生成メカニズムが開発されたした。







ポむントは簡単です。 トヌクンには、クラむアント識別子ずアクセスの有効期限が含たれおいたす。 トヌクンに眲名するには、秘密鍵でHMAC_SHA1が䜿甚されたす。 トヌクンに眲名するず、テキストコンテンツは眲名によっお砎損し、base64に倉換されたす。 したがっお、トヌクンの「シヌル」が取埗されたす。 封印されたトヌクンがナヌザヌのパスワヌドずしお䜿甚されたす。 デヌタブロックの䞍正な倉曎が発生した堎合、xorが砎損し、xorが砎損した堎合、眲名怜蚌は砎損したす。 秘密鍵がないず、眲名を倉曎できたせん。







パスワヌドの時間を手動で制埡したくない堎合は、そのようなトヌクンを生成し、倖郚サヌビスを呌び出さずにプラグむン内で有効性を確認したす。 このスキヌムは、特定の時間のセッションパスワヌド生成に非垞に䟿利です。 同時に、トヌクンの内容を倖郚制埡システムに転送でき、トヌクンの有効期限が切れるずナヌザヌを切断するように構成されたす。







この蚘事の情報がお圹に立おば幞いです。

読んでくれおありがずう。

ご質問がある堎合は、できるこずにお答えしたす。







©Aborche 2019

アボルシュ








All Articles