{"id":19398,"date":"2017-01-27T06:37:16","date_gmt":"2017-01-26T22:37:16","guid":{"rendered":"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/01\/27\/%e5%bb%ba%e7%bd%ae%e4%bd%bf%e7%94%a8%e5%b8%b3%e8%99%9f%e5%8f%8a%e5%af%86%e7%a2%bc%e8%aa%8d%e8%ad%89%e7%9a%84-openvpn-server-1\/"},"modified":"2021-03-18T17:24:54","modified_gmt":"2021-03-18T09:24:54","slug":"%e5%bb%ba%e7%bd%ae%e4%bd%bf%e7%94%a8%e5%b8%b3%e8%99%9f%e5%8f%8a%e5%af%86%e7%a2%bc%e8%aa%8d%e8%ad%89%e7%9a%84-openvpn-server-1","status":"publish","type":"post","link":"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/01\/27\/%e5%bb%ba%e7%bd%ae%e4%bd%bf%e7%94%a8%e5%b8%b3%e8%99%9f%e5%8f%8a%e5%af%86%e7%a2%bc%e8%aa%8d%e8%ad%89%e7%9a%84-openvpn-server-1\/","title":{"rendered":"\u5efa\u7f6e\u4f7f\u7528\u5e33\u865f\u53ca\u5bc6\u78bc\u8a8d\u8b49\u7684 OpenVPN Server &#8211; 1"},"content":{"rendered":"<p>\u53c3\u8003\u7db2\u7ad9\uff1a <br \/><a href=\"http:\/\/chagridsada.blogspot.tw\/2011\/01\/openvpn-system-based-on-userpass.html\" target=\"_blank\" rel=\"noopener noreferrer\">OpenVPN System Based On User\/Password Authentication with mysql &amp; Day Control (shell script)- Debian ~ Mr.TUM&#8217;s Blog<\/a> <\/p>\n<p>\u53c3\u8003\u7db2\u7ad9\u4e2d\uff0cOpenVPN \u548c MySQL \u5206\u5225\u5c6c\u65bc\u4e0d\u540c\u4e3b\u6a5f\uff0c\u5728\u9019\u88e1\u6539\u7528\u540c\u4e00\u4e3b\u6a5f\u3002 <\/p>\n<p>1. \u5b89\u88dd MySQL Server <br \/># <span style=\"color: #ff0000\">apt-get install mariadb-server<\/span>[@more@]2. \u8a2d\u5b9a root \u5bc6\u78bc\u53ca\u4e00\u4e9b\u5b89\u5168\u6027\u4e0a\u7684\u8a2d\u5b9a <br \/># <span style=\"color: #ff0000\">\/usr\/bin\/mysql_secure_installation<\/span> <br \/>\u9084\u672a\u8a2d\u5b9a root \u5bc6\u78bc\uff0c\u6240\u4ee5\u76f4\u63a5\u6309 Enter \u9375 <br \/><span style=\"color: #0000ff\">Enter current password for root (enter for none):<\/span> <br \/><span style=\"color: #0000ff\">OK, successfully used password, moving on&#8230;<\/span> <\/p>\n<p><span style=\"color: #0000ff\">Setting the root password ensures that nobody can log into the MariaDB<\/span> <br \/><span style=\"color: #0000ff\">root user without the proper authorisation.<\/span> <\/p>\n<p>\u8a2d\u5b9a MySQL root \u5bc6\u78bc <br \/><span style=\"color: #0000ff\">Set root password? [Y\/n]<\/span> <br \/><span style=\"color: #0000ff\">New password:<\/span> <br \/><span style=\"color: #0000ff\">Re-enter new password:<\/span> <br \/><span style=\"color: #0000ff\">Password updated successfully!<\/span> <br \/><span style=\"color: #0000ff\">Reloading privilege tables..<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8230; Success!<\/span> <\/p>\n<p><span style=\"color: #0000ff\">By default, a MariaDB installation has an anonymous user, allowing anyone<\/span> <br \/><span style=\"color: #0000ff\">to log into MariaDB without having to have a user account created for<\/span> <br \/><span style=\"color: #0000ff\">them.\u00a0 This is intended only for testing, and to make the installation<\/span> <br \/><span style=\"color: #0000ff\">go a bit smoother.\u00a0 You should remove them before moving into a<\/span> <br \/><span style=\"color: #0000ff\">production environment.<\/span> <\/p>\n<p>\u79fb\u9664\u533f\u540d\u4f7f\u7528\u8005 <br \/><span style=\"color: #0000ff\">Remove anonymous users? [Y\/n]<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8230; Success!<\/span> <\/p>\n<p><span style=\"color: #0000ff\">Normally, root should only be allowed to connect from &#8216;localhost&#8217;.\u00a0 This<\/span> <br \/><span style=\"color: #0000ff\">ensures that someone cannot guess at the root password from the network.<\/span> <\/p>\n<p>\u53d6\u6d88 root \u53ef\u4ee5\u9060\u7aef\u767b\u5165 <br \/><span style=\"color: #0000ff\">Disallow root login remotely? [Y\/n]<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8230; Success!<\/span> <\/p>\n<p><span style=\"color: #0000ff\">By default, MariaDB comes with a database named &#8216;test&#8217; that anyone can<\/span> <br \/><span style=\"color: #0000ff\">access.\u00a0 This is also intended only for testing, and should be removed<\/span> <br \/><span style=\"color: #0000ff\">before moving into a production environment.<\/span> <\/p>\n<p>\u79fb\u9664 \u6e2c\u8a66\u7684\u8cc7\u6599\u5eab <br \/><span style=\"color: #0000ff\">Remove test database and access to it? [Y\/n]<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8211; Dropping test database&#8230;<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8230; Success!<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8211; Removing privileges on test database&#8230;<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8230; Success!<\/span> <\/p>\n<p><span style=\"color: #0000ff\">Reloading the privilege tables will ensure that all changes made so far<\/span> <br \/><span style=\"color: #0000ff\">will take effect immediately.<\/span> <\/p>\n<p>\u91cd\u65b0\u8f09\u5165\u8cc7\u6599\u8868\u6b0a\u9650 <br \/><span style=\"color: #0000ff\">Reload privilege tables now? [Y\/n]<\/span> <br \/><span style=\"color: #0000ff\">\u00a0&#8230; Success!<\/span> <\/p>\n<p><span style=\"color: #0000ff\">Cleaning up&#8230;<\/span><\/p>\n<p>3. \u5efa\u7acb openvpn \u8cc7\u6599\u5eab\uff0c\u4e26\u5efa\u7acb\u4e00\u500b\u4f7f\u7528\u8005\u53ca\u8a2d\u5b9a\u5bc6\u78bc\u4f86\u9032\u884c\u7ba1\u7406 <br \/>#<span style=\"color: #ff0000\"> \/usr\/bin\/mysql -u root -p<\/span> <br \/>MariaDB [(none)]&gt; <span style=\"color: #ff0000\">CREATE DATABASE openvpn;<\/span> <br \/>MariaDB [(none)]&gt; <span style=\"color: #ff0000\">GRANT ALL ON openvpn.* TO &#8216;pi&#8217;@&#8221;%&#8221; IDENTIFIED BY &#8216;123456&#8217;;<\/span> <br \/>MariaDB [(none)]&gt; <span style=\"color: #ff0000\">FLUSH PRIVILEGES;<\/span> <br \/>MariaDB [(none)]&gt; <span style=\"color: #ff0000\">exit;<\/span> <\/p>\n<p>4. \u6539\u7528 pi \u4f7f\u7528\u8005\u4f86\u5efa\u7acb openvpn \u76f8\u95dc\u8cc7\u6599\u5eab\u8a2d\u5b9a <br \/># <span style=\"color: #ff0000\">\/usr\/bin\/mysql -u pi -p<\/span><\/p>\n<p>5. \u958b\u555f openvpn \u8cc7\u6599\u5eab <br \/>MariaDB [(none)]&gt; <span style=\"color: #ff0000\">USE openvpn;<\/span><\/p>\n<p>6. \u5efa\u7acb user \u8cc7\u6599\u8868<\/p>\n<p style=\"padding-left: 30px\"><span style=\"color: #0000ff\">CREATE TABLE IF NOT EXISTS `user` ( <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_pass` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT &#8216;1234&#8217;, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_mail` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_phone` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_online` tinyint(1) NOT NULL DEFAULT &#8216;0&#8217;, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_enable` tinyint(1) NOT NULL DEFAULT &#8216;1&#8217;, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_start_date` date NOT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_end_date` date NOT NULL, <\/span><br \/><span style=\"color: #0000ff\">PRIMARY KEY (`user_id`), <\/span><br \/><span style=\"color: #0000ff\">KEY `user_pass` (`user_pass`) <\/span><br \/><span style=\"color: #0000ff\">) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;<\/span><\/p>\n<div class=\"container\">\n<div class=\"line number12 index11 alt1\"><\/div>\n<div class=\"line number12 index11 alt1\">7. \u5efa\u7acb log \u8cc7\u6599\u8868<\/div>\n<div class=\"line number12 index11 alt1\" style=\"padding-left: 30px\"><span style=\"color: #0000ff\">CREATE TABLE IF NOT EXISTS `log` ( <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_trusted_ip` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_trusted_port` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_remote_ip` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_remote_port` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_end_time` timestamp NOT NULL DEFAULT &#8216;0000-00-00 00:00:00&#8217;, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_received` float NOT NULL DEFAULT &#8216;0&#8217;, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `log_send` float NOT NULL DEFAULT &#8216;0&#8217;, <\/span><br \/><span style=\"color: #0000ff\">PRIMARY KEY (`log_id`), <\/span><br \/><span style=\"color: #0000ff\">KEY `user_id` (`user_id`) <\/span><br \/><span style=\"color: #0000ff\">) ENGINE=MyISAM\u00a0 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;<\/span><\/div>\n<div class=\"line number12 index11 alt1\"><\/div>\n<div class=\"line number12 index11 alt1\">8. \u5efa\u7acb\u4f7f\u7528\u8005\u8cc7\u6599<\/div>\n<div class=\"line number12 index11 alt1\" style=\"padding-left: 30px\"><span style=\"color: #0000ff\">INSERT INTO `user` ( <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_id`, `user_pass`, `user_mail`, `user_phone`, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 `user_online`, `user_enable`, `user_start_date`, `user_end_date` <\/span><br \/><span style=\"color: #0000ff\">) <\/span><br \/><span style=\"color: #0000ff\">VALUES ( <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 &#8216;test&#8217;, &#8216;123456&#8217;, &#8216;test@test.com&#8217;, <\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 &#8216;+66815447514&#8217;, 0, 1, &#8216;2012-01-01&#8217;, &#8216;0000-00-00&#8217; <\/span><br \/><span style=\"color: #0000ff\">);<\/span><\/div>\n<div class=\"line number12 index11 alt1\" style=\"padding-left: 30px\"><\/div>\n<\/div>\n<p>9. \u986f\u793a\u8cc7\u6599\u5eab\u4e2d\u7684\u8cc7\u6599\u8868 <br \/>MariaDB [openvpn]&gt; <span style=\"color: #ff0000\">show tables;<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<\/span><br \/><span style=\"color: #0000ff\">| Tables_in_openvpn |<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<\/span><br \/><span style=\"color: #0000ff\">| log\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/span><br \/><span style=\"color: #0000ff\">| user\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 |<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<\/span><br \/><span style=\"color: #0000ff\">2 rows in set (0.00 sec)<\/span><\/p>\n<p>10. \u5217\u51fa user \u8cc7\u6599\u8868\u4e2d\u7684\u4f7f\u7528\u8005\u8cc7\u6599<br \/>MariaDB [openvpn]&gt; <span style=\"color: #ff0000\">select user_id,user_pass from user;<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;-+<\/span><br \/><span style=\"color: #0000ff\">| user_id | user_pass \u00a0 |<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<\/span><br \/><span style=\"color: #0000ff\">| test\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 123456 \u00a0 \u00a0 \u00a0\u00a0 |<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<\/span><br \/><span style=\"color: #0000ff\">1 row in set (0.00 sec)<\/span><\/p>\n<p>11. \u9000\u51fa\u8cc7\u6599\u5eab<br \/>MariaDB [openvpn]&gt; <span style=\"color: #ff0000\">exit;<\/span><\/p>\n<p>12 . \u5efa\u7acb Script \u6a94\u76ee\u9304 <span style=\"color: #0000ff\">\/etc\/openvpn\/script<\/span><br \/># <span style=\"color: #ff0000\">mkdir \/etc\/openvpn\/script<\/span><\/p>\n<p>13. \u5efa\u7acb<span style=\"color: #0000ff\"> \/etc\/openvpn\/script\/config.sh<\/span><br \/># <span style=\"color: #ff0000\">cat etc\/openvpn\/script\/config.sh<\/span><br \/><span style=\"color: #0000ff\">#!\/bin\/bash<\/span><br \/><span style=\"color: #0000ff\">##Dababase Server<\/span><br \/><span style=\"color: #0000ff\">HOST=&#8217;127.0.0.1&#8242;<\/span><br \/><span style=\"color: #0000ff\">#Default port = 3306<\/span><br \/><span style=\"color: #0000ff\">PORT=&#8217;3306&#8242;<\/span><br \/><span style=\"color: #0000ff\">#Username<\/span><br \/><span style=\"color: #0000ff\">USER=&#8217;pi&#8217;<\/span><br \/><span style=\"color: #0000ff\">#Password<\/span><br \/><span style=\"color: #0000ff\">PASS=&#8217;123456&#8242;<\/span><br \/><span style=\"color: #0000ff\">#database name<\/span><br \/><span style=\"color: #0000ff\">DB=&#8217;openvpn&#8217;<\/span><\/p>\n<p>14. \u5efa\u7acb <span style=\"color: #0000ff\">\/etc\/openvpn\/script\/test_connect_db.sh<\/span><br \/># <span style=\"color: #ff0000\">cat \/etc\/openvpn\/script\/test_connect_db.sh<\/span><br \/><span style=\"color: #0000ff\">#!\/bin\/bash<\/span><br \/><span style=\"color: #0000ff\">. \/etc\/openvpn\/script\/config.sh<\/span><br \/><span style=\"color: #0000ff\">##Test Authentication<\/span><br \/><span style=\"color: #0000ff\">username=$1<\/span><br \/><span style=\"color: #0000ff\">password=$2<\/span><br \/><span style=\"color: #0000ff\">user_id=$(mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -sN -e &#8220;select user_id from user where user_id = &#8216;$username&#8217; AND user_pass = &#8216;$password&#8217; AND user_enable=1 AND user_start_date != user_end_date AND TO_DAYS(now()) &gt;= TO_DAYS(user_start_date) AND (TO_DAYS(now()) &lt;= TO_DAYS(user_end_date) OR user_end_date=&#8217;0000-00-00&#8242;)&#8221;)<\/span><br \/><span style=\"color: #0000ff\">##Check user<\/span><br \/><span style=\"color: #0000ff\">[ &#8220;$user_id&#8221; != &#8221; ] &amp;&amp; [ &#8220;$user_id&#8221; = &#8220;$username&#8221; ] &amp;&amp; echo &#8220;user : $username&#8221; &amp;&amp; echo &#8216;authentication ok.&#8217; &amp;&amp; exit 0 || echo &#8216;authentication failed.&#8217;; exit 1<\/span><\/p>\n<p>15. \u5efa\u7acb <span style=\"color: #0000ff\">\/etc\/openvpn\/script\/login.sh<\/span><br \/># <span style=\"color: #ff0000\">cat \/etc\/openvpn\/script\/login.sh<\/span><br \/><span style=\"color: #0000ff\">#!\/bin\/bash<\/span><br \/><span style=\"color: #0000ff\">. \/etc\/openvpn\/script\/config.sh<\/span><br \/><span style=\"color: #0000ff\">##Authentication<\/span><br \/><span style=\"color: #0000ff\">user_id=$(mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -sN -e &#8220;select user_id from user where user_id = &#8216;$username&#8217; AND user_pass = &#8216;$password&#8217; AND user_enable=1 AND user_start_date != user_end_date AND TO_DAYS(now()) &gt;= TO_DAYS(user_start_date) AND (TO_DAYS(now()) &lt;= TO_DAYS(user_end_date) OR user_end_date=&#8217;0000-00-00&#8242;)&#8221;)<\/span><br \/><span style=\"color: #0000ff\">##Check user<\/span><br \/><span style=\"color: #0000ff\">[ &#8220;$user_id&#8221; != &#8221; ] &amp;&amp; [ &#8220;$user_id&#8221; = &#8220;$username&#8221; ] &amp;&amp; echo &#8220;user : $username&#8221; &amp;&amp; echo &#8216;authentication ok.&#8217; &amp;&amp; exit 0 || echo &#8216;authentication failed.&#8217;; exit 1<\/span><\/p>\n<p>16. \u5efa\u7acb <span style=\"color: #0000ff\">\/etc\/openvpn\/script\/connect.sh<\/span><br \/># <span style=\"color: #ff0000\">cat \/etc\/openvpn\/script\/connect.sh<\/span><br \/><span style=\"color: #0000ff\">#!\/bin\/bash<\/span><br \/><span style=\"color: #0000ff\">. \/etc\/openvpn\/script\/config.sh<\/span><br \/><span style=\"color: #0000ff\">##insert data connection to table log<\/span><br \/><span style=\"color: #0000ff\">mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e &#8220;INSERT INTO log (log_id,user_id,log_trusted_ip,log_trusted_port,log_remote_ip,log_remote_port,log_start_time,log_end_time,log_received,log_send) VALUES(NULL,&#8217;$common_name&#8217;,&#8217;$trusted_ip&#8217;,&#8217;$trusted_port&#8217;,&#8217;$ifconfig_pool_remote_ip&#8217;,&#8217;$remote_port_1&#8242;,now(),&#8217;0000-00-00 00:00:00&#8242;,&#8217;$bytes_received&#8217;,&#8217;$bytes_sent&#8217;)&#8221;<\/span><br \/><span style=\"color: #0000ff\">##set status online to user connected<\/span><br \/><span style=\"color: #0000ff\">mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e &#8220;UPDATE user SET user_online=1 WHERE user_id=&#8217;$common_name'&#8221;<\/span><\/p>\n<p>17. \u5efa\u7acb<span style=\"color: #0000ff\"> \/etc\/openvpn\/script\/disconnect.sh<\/span><br \/># <span style=\"color: #ff0000\">cat \/etc\/openvpn\/script\/disconnect.sh<\/span><br \/><span style=\"color: #0000ff\">#!\/bin\/bash<\/span><br \/><span style=\"color: #0000ff\">. \/etc\/openvpn\/script\/config.sh<\/span><br \/><span style=\"color: #0000ff\">##set status offline to user disconnected<\/span><br \/><span style=\"color: #0000ff\">mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e &#8220;UPDATE user SET user_online=0 WHERE user_id=&#8217;$common_name'&#8221;<\/span><br \/><span style=\"color: #0000ff\">##insert data disconnected to table log<\/span><br \/><span style=\"color: #0000ff\">mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e &#8220;UPDATE log SET log_end_time=now(),log_received=&#8217;$bytes_received&#8217;,log_send=&#8217;$bytes_sent&#8217; WHERE log_trusted_ip=&#8217;$trusted_ip&#8217; AND log_trusted_port=&#8217;$trusted_port&#8217; AND user_id=&#8217;$common_name&#8217; AND log_end_time=&#8217;0000-00-00 00:00:00&#8242;&#8221;<\/span><\/p>\n<p>18. \u66f4\u6539 Script \u6a94\u6848\u6b0a\u9650<br \/># <span style=\"color: #ff0000\">chmod 755 \/etc\/openvpn\/script\/*.sh<\/span><\/p>\n<p>19. \u4fee\u6539 <span style=\"color: #0000ff\">\/etc\/openvpn\/server.conf<\/span>\u00a0 \u8a2d\u5b9a\u6a94<br \/># <span style=\"color: #ff0000\">vim \/etc\/openvpn\/server.conf<\/span><br \/>\u52a0\u5165\u4ee5\u4e0b\u8a2d\u5b9a<br \/><span style=\"color: #0000ff\">username-as-common-name<\/span><br \/><span style=\"color: #0000ff\">client-cert-not-required<\/span><br \/><span style=\"color: #0000ff\">auth-user-pass-verify \/etc\/openvpn\/script\/login.sh via-env<\/span><\/p>\n<p># \u8a2d\u5b9a\u4f7f\u7528\u8005\u767b\u5165\u53ca\u767b\u51fa\u6642\u8981\u505a\u7684\u52d5\u4f5c<br \/>##script connect-disconnect<br \/><span style=\"color: #0000ff\">script-security 3 system<\/span><br \/><span style=\"color: #0000ff\">client-connect \/etc\/openvpn\/script\/connect.sh<\/span><br \/><span style=\"color: #0000ff\">client-disconnect \/etc\/openvpn\/script\/disconnect.sh<\/span><\/p>\n<p>20. \u6e2c\u8a66 MariaDB SQL Server \u53ef\u5426\u6b63\u5e38\u9023\u7dda(\u5e33\u865f\/\u5bc6\u78bc\uff1atest \/ 123456)<br \/># <span style=\"color: #ff0000\">\/etc\/openvpn\/script\/test_connect_db.sh test 123456<\/span><br \/><span style=\"color: #0000ff\">user : test<\/span><br \/><span style=\"color: #0000ff\">authentication ok.<\/span><\/p>\n<p>\u5982\u679c\u662f\u4e0a\u9762\u7684\u8a0a\u606f\uff0c\u5247\u662f\u9023\u7dda\u6210\u529f\uff01<\/p>\n<p>21. \u8a2d\u5b9a OpenVPN Client \u7aef *.ovpn<br \/>\u52a0\u5165\u4ee5\u4e0b\u8a2d\u5b9a<br \/><span style=\"color: #0000ff\">auth-user-pass<\/span><br \/><span style=\"color: #0000ff\">reneg-sec 0<\/span><\/p>\n<p>22. \u91cd\u65b0\u555f\u52d5 OpenVPN Server<br \/># <span style=\"color: #ff0000\">systemctl restart openvpn@server.service<\/span><\/p>\n<p>23. \u5217\u51fa\u4f7f\u7528\u8005\u7684\u767b\u5165\u8cc7\u6599<br \/>MariaDB [openvpn]&gt; <span style=\"color: #ff0000\">select user_id,log_trusted_ip,log_remote_ip,log_start_time,log_end_time from log;<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<\/span><br \/><span style=\"color: #0000ff\">| user_id | log_trusted_ip | log_remote_ip | log_start_time\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | log_end_time\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<\/span><br \/><span style=\"color: #0000ff\">| test\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 1.162.15.9\u00a0\u00a0\u00a0\u00a0\u00a0 | 10.8.0.6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 2016-12-29 09:27:32 | 2016-12-29 10:27:36 |<\/span><br \/><span style=\"color: #0000ff\">+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53c3\u8003\u7db2\u7ad9\uff1a OpenVPN System Based On User\/Password Authenticat &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/01\/27\/%e5%bb%ba%e7%bd%ae%e4%bd%bf%e7%94%a8%e5%b8%b3%e8%99%9f%e5%8f%8a%e5%af%86%e7%a2%bc%e8%aa%8d%e8%ad%89%e7%9a%84-openvpn-server-1\/\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008\u5efa\u7f6e\u4f7f\u7528\u5e33\u865f\u53ca\u5bc6\u78bc\u8a8d\u8b49\u7684 OpenVPN Server &#8211; 1\u3009<\/span><\/a><\/p>\n","protected":false},"author":55,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[116,168,119],"tags":[],"class_list":["post-19398","post","type-post","status-publish","format-standard","hentry","category-c-78461","category-c-84780","category-c-78464"],"meta_key":{"_pingme":["1"],"_encloseme":["1"],"lt_post_id":["681403"]},"_links":{"self":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19398"}],"collection":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/comments?post=19398"}],"version-history":[{"count":1,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19398\/revisions"}],"predecessor-version":[{"id":20936,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19398\/revisions\/20936"}],"wp:attachment":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/media?parent=19398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/categories?post=19398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/tags?post=19398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}