{"id":19356,"date":"2017-01-01T06:48:11","date_gmt":"2016-12-31T22:48:11","guid":{"rendered":"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/01\/01\/%e8%a9%a6%e7%94%a8-banana-pi-r1-ubuntu-minimal-16-04-%e4%b8%8a%e5%ae%89%e8%a3%9d-openvpn\/"},"modified":"2021-03-18T17:24:52","modified_gmt":"2021-03-18T09:24:52","slug":"%e8%a9%a6%e7%94%a8-banana-pi-r1-ubuntu-minimal-16-04-%e4%b8%8a%e5%ae%89%e8%a3%9d-openvpn","status":"publish","type":"post","link":"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/01\/01\/%e8%a9%a6%e7%94%a8-banana-pi-r1-ubuntu-minimal-16-04-%e4%b8%8a%e5%ae%89%e8%a3%9d-openvpn\/","title":{"rendered":"\u8a66\u7528 Banana Pi R1 &#8211; Ubuntu minimal 16.04 \u4e0a\u5b89\u88dd OpenVPN"},"content":{"rendered":"<p>\u53c3\u8003\u7db2\u7ad9\uff1a <br \/><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-an-openvpn-server-on-ubuntu-16-04\" target=\"_blank\" rel=\"noopener noreferrer\">How To Set Up an OpenVPN Server on Ubuntu 16.04 | DigitalOcean<\/a> <\/p>\n<p>1. \u5b89\u88dd OpenVPN <br \/># <span style=\"color: #ff0000\">apt-get install openvpn easy-rsa<\/span> <\/p>\n<p>2. \u5efa\u7acb Certificate Authority <br \/># <span style=\"color: #ff0000\">mkdir -p \/etc\/openvpn\/easy-rsa\/keys<\/span> <br \/># <span style=\"color: #ff0000\">cp -r \/usr\/share\/easy-rsa \/etc\/openvpn<\/span> <br \/># <span style=\"color: #ff0000\">cd \/etc\/openvpn\/easy-rsa<\/span> <br \/>\u8acb\u60c5\u6cc1\u4fee\u6539 <span style=\"color: #0000ff\">\/etc\/openvpn\/easy-rsa\/vars<\/span> \u4e2d\u7684\u8b8a\u6578 <br \/><span style=\"color: #0000ff\"><span style=\"color: #000000\"># <span style=\"color: #ff0000\">vim \/etc\/open<\/span><\/span><\/span><span style=\"color: #0000ff\"><span style=\"color: #ff0000\">vpn\/easy-rsa\/vars<\/span> <br \/>export KEY_COUNTRY=&#8221;<span style=\"color: #ff0000\">TW<\/span>&#8220;<\/span> <br \/><span style=\"color: #0000ff\">export KEY_PROVINCE=&#8221;<span style=\"color: #ff0000\">Taiwan<\/span>&#8220;<\/span> <br \/><span style=\"color: #0000ff\">export KEY_CITY=&#8221;<span style=\"color: #ff0000\">Yilan<\/span>&#8220;<\/span> <br \/><span style=\"color: #0000ff\">export KEY_ORG=&#8221;<span style=\"color: #ff0000\">School<\/span>&#8220;<\/span> <br \/><span style=\"color: #0000ff\">export KEY_EMAIL=&#8221;me@myhost.mydomain&#8221;<\/span> <br \/><span style=\"color: #0000ff\">export KEY_OU=&#8221;MyOrganizationalUnit&#8221;<\/span> <\/p>\n<p><span style=\"color: #0000ff\"># X509 Subject Field<\/span> <br \/><span style=\"color: #0000ff\">export KEY_NAME=&#8221;EasyRSA&#8221;[@more@]<\/span><br \/># <span style=\"color: #ff0000\">source .\/vars<\/span> <br \/><span style=\"color: #0000ff\">NOTE: If you run .\/clean-all, I will be doing a rm -rf on \/etc\/openvpn\/easy-rsa\/keys<\/span> <br \/># <span style=\"color: #ff0000\">.\/clean-all<\/span> <br \/># <span style=\"color: #ff0000\">.\/build-ca<\/span> <\/p>\n<p>3. \u7522\u751f Server \u6191\u8b49\u3001\u91d1\u9470\u53ca\u52a0\u5bc6\u6a94\u6848 <br \/>#<span style=\"color: #ff0000\">\u00a0 .\/build-key-server server<\/span> <br \/><span style=\"color: #0000ff\">Certificate is to be certified until Dec 21 10:24:53 2026 GMT (3650 days) <\/span><br \/><span style=\"color: #0000ff\">Sign the certificate? [y\/n]:<\/span><span style=\"color: #ff0000\">y<\/span> <\/p>\n<p><span style=\"color: #0000ff\">1 out of 1 certificate requests certified, commit? [y\/n]<\/span><span style=\"color: #ff0000\">y<\/span> <br \/><span style=\"color: #0000ff\">Write out database with 1 new entries <\/span><br \/><span style=\"color: #0000ff\">Data Base Updated<\/span> <\/p>\n<p>\u6642\u9593\u6703\u7a0d\u5fae\u6bd4\u8f03\u4e45\u4e00\u4e9b<br \/># <span style=\"color: #ff0000\">.\/build-dh<\/span> <br \/># <span style=\"color: #ff0000\">openvpn &#8211;genkey &#8211;secret keys\/ta.key<\/span> <\/p>\n<p>4. \u7522\u751f Client Certificate \u548c Key Pair <br \/># <span style=\"color: #ff0000\">source .\/vars<\/span> <br \/><span style=\"color: #0000ff\">NOTE: If you run .\/clean-all, I will be doing a rm -rf on \/etc\/openvpn\/easy-rsa\/keys<\/span> <br \/># <span style=\"color: #ff0000\">.\/build-key client<\/span> <br \/><span style=\"color: #0000ff\">Please enter the following &#8216;extra&#8217; attributes <\/span><br \/><span style=\"color: #0000ff\">to be sent with your certificate request <\/span><br \/><span style=\"color: #0000ff\">A challenge password []: <\/span><br \/><span style=\"color: #0000ff\">An optional company name []: <\/span><br \/><span style=\"color: #0000ff\">Using configuration from \/etc\/openvpn\/easy-rsa\/openssl-1.0.0.cnf <\/span><br \/><span style=\"color: #0000ff\">Check that the request matches the signature <\/span><br \/><span style=\"color: #0000ff\">Signature ok <\/span><\/p>\n<p><span style=\"color: #0000ff\">Certificate is to be certified until Dec 21 12:15:42 2026 GMT (3650 days) <\/span><br \/><span style=\"color: #0000ff\">Sign the certificate? [y\/n]:<\/span><span style=\"color: #ff0000\">y<\/span> <\/p>\n<p><span style=\"color: #0000ff\">1 out of 1 certificate requests certified, commit? [y\/n]y <\/span><br \/><span style=\"color: #0000ff\">Write out database with 1 new entries <\/span><br \/><span style=\"color: #0000ff\">Data Base Updated<\/span> <\/p>\n<p>\u5982\u679c\u8981\u5efa\u7acb\u9700\u8981\u5bc6\u78bc <br \/># <span style=\"color: #ff0000\">source .\/vars<\/span> <br \/><span style=\"color: #0000ff\">NOTE: If you run .\/clean-all, I will be doing a rm -rf on \/etc\/openvpn\/easy-rsa\/keys<\/span> <br \/>#<span style=\"color: #ff0000\"> .\/build-pass client<\/span> <\/p>\n<p>5. \u8907\u88fd\u6191\u8b49\u91d1\u9470\u5230<span style=\"color: #0000ff\"> \/etc\/openvpn\/keys<\/span> \u76ee\u9304<br \/># <span style=\"color: #ff0000\">cd \/etc\/openvpn\/easy-rsa\/keys<\/span>\u00a0<br \/># <span style=\"color: #ff0000\">mkdir \/etc\/openvpn\/keys<\/span><br \/># <span style=\"color: #ff0000\">cp ca.crt ca.key server.crt server.key ta.key dh2048.pem \/etc\/openvpn\/keys<\/span><\/p>\n<p>6. \u8a2d\u5b9a OpenVPN <br \/>\u4fee\u6539<span style=\"color: #0000ff\"> \/etc\/openvpn\/server.conf<\/span> \u8a2d\u5b9a\u6a94 <br \/># <span style=\"color: #ff0000\">gunzip -c \/usr\/share\/doc\/openvpn\/examples\/sample-config-files\/server.conf.gz | tee \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">cp \/etc\/openvpn\/server.conf \/etc\/openvpn\/server.conf.$(date +%F)<\/span> <\/p>\n<p>\u4fee\u6539\u8a2d\u5b9a<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/;tls-auth\/tls-auth\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">sed -i &#8216;\/tls-auth\/ akey-direction 0&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/;cipher AES\/cipher AES\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">sed -i &#8216;\/^cipher\/ aauth SHA256&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/>OpenVPN \u57f7\u884c\u4f7f\u7528\u8005\u53ca\u7fa4\u7d44<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;user\/user\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;group\/group\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/>VPN Client \u7684 Default Gatewa y\u4ee5 VPN Gateway \u70ba\u4e3b<br \/>#<span style=\"color: #ff0000\"> sed -i &#8216;s\/^;push &#8220;redirect\/push &#8220;redirect\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/>DNS \u00a0\u8a2d\u5b9a<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;push &#8220;dhcp-option DNS 208.67.222.222&#8243;\/push &#8220;dhcp-option DNS 168.95.1.1&#8243;\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;push &#8220;dhcp-option DNS 208.67.220.220&#8243;\/push &#8220;dhcp-option DNS 8.8.8.8&#8243;\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/>\u5c07\u9810\u8a2d\u7684 UDP \u6539\u70ba TCP<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;proto tcp\/proto tcp\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^proto udp\/;proto udp\/&#8217; \/etc\/openvpn\/server.conf<\/span> <br \/>\u66f4\u6539 crt \/ key \u7684\u6a94\u6848\u4f4d\u7f6e<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|ca ca.crt|ca \/etc\/openvpn\/keys\/ca.crt|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|cert server.crt|cert \/etc\/openvpn\/keys\/server.crt|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|key server.key|key \/etc\/openvpn\/keys\/server.key|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|dh dh2048.pem|dh \/etc\/openvpn\/keys\/dh2048.pem|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|tls-auth ta.key 0|tls-auth \/etc\/openvpn\/keys\/ta.key 0|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/>\u4f7f\u7528\u6191\u8b49\u8a8d\u8b49\u6642\uff0c\u5141\u8a31\u6240\u6709\u7684 Client \u4f7f\u7528\u76f8\u540c\u7684 KEY \u767b\u5165<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;duplicate-cn\/duplicate-cn\/&#8217; \/etc\/openvpn\/server.conf<\/span><br \/>\u5141\u8a31 Client \u9593\u4e92\u63a5\u9023\u63a5<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/^;client-to-client\/client-to-client\/&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/>\u66f4\u6539 log \u6a94\u4f4d\u7f6e<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|status openvpn-status.log|status \/var\/log\/openvpn\/openvpn-status.log|&#8217;\u00a0<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|;log\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 openvpn.log|log\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/log\/openvpn\/openvpn.log|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s|;log-append\u00a0 openvpn.log|log-append\u00a0 \/var\/log\/openvpn\/openvpn.log|&#8217;<\/span> <span style=\"color: #ff0000\">\/etc\/openvpn\/server.conf<\/span><br \/>\u6b64\u7db2\u6bb5\u8d70 VPN Gateway<br \/># <span style=\"color: #ff0000\">sed -i &#8216;\/^;push &#8220;route 192.168.10\/ ipush &#8220;route 10.8.0.0 255.255.255.0&#8243;&#8216; \/etc\/openvpn\/server.conf<br \/><\/span><br \/>For sed<br \/># <span style=\"color: #ff0000\">cat script-file<\/span><br \/><span style=\"color: #0000ff\">s\/;tls-auth\/tls-auth\/<\/span><br \/><span style=\"color: #0000ff\">\/tls-auth\/ akey-direction 0<\/span><br \/><span style=\"color: #0000ff\">s\/;cipher AES\/cipher AES\/<\/span><br \/><span style=\"color: #0000ff\">\/^cipher\/ aauth SHA256<\/span><br \/><span style=\"color: #0000ff\">s\/^;user\/user\/<\/span><br \/><span style=\"color: #0000ff\">s\/^;group\/group\/<\/span><br \/><span style=\"color: #0000ff\">s\/^;push &#8220;redirect\/push &#8220;redirect\/<\/span><br \/><span style=\"color: #0000ff\">s\/^;push &#8220;dhcp-option DNS 208.67.222.222&#8243;\/push &#8220;dhcp-option DNS 168.95.1.1&#8243;\/<\/span><br \/><span style=\"color: #0000ff\">s\/^;push &#8220;dhcp-option DNS 208.67.220.220&#8243;\/push &#8220;dhcp-option DNS 8.8.8.8&#8243;\/<\/span><br \/><span style=\"color: #0000ff\">s\/^;proto tcp\/proto tcp\/<\/span><br \/><span style=\"color: #0000ff\">s\/^proto udp\/;proto udp\/<\/span><br \/><span style=\"color: #0000ff\">s|ca ca.crt|ca \/etc\/openvpn\/keys\/ca.crt|<\/span><br \/><span style=\"color: #0000ff\">s|cert server.crt|cert \/etc\/openvpn\/keys\/server.crt|<\/span><br \/><span style=\"color: #0000ff\">s|key server.key|key \/etc\/openvpn\/keys\/server.key|<\/span><br \/><span style=\"color: #0000ff\">s|dh dh2048.pem|dh \/etc\/openvpn\/keys\/dh2048.pem|<\/span><br \/><span style=\"color: #0000ff\">s|tls-auth ta.key 0|tls-auth \/etc\/openvpn\/keys\/ta.key 0|<\/span><br \/><span style=\"color: #0000ff\">s\/^;duplicate-cn\/duplicate-cn\/<\/span><br \/><span style=\"color: #0000ff\">s\/^;client-to-client\/client-to-client\/<\/span><br \/><span style=\"color: #0000ff\">s|status openvpn-status.log|status \/var\/log\/openvpn\/openvpn-status.log|<\/span><br \/><span style=\"color: #0000ff\">s|;log\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 openvpn.log|log\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/log\/openvpn\/openvpn.log|<\/span><br \/><span style=\"color: #0000ff\">s|;log-append\u00a0 openvpn.log|log-append\u00a0 \/var\/log\/openvpn\/openvpn.log|<\/span><br \/><span style=\"color: #0000ff\">\/^;push &#8220;route 192.168.10\/ ipush &#8220;route 10.8.0.0 255.255.255.0&#8221;<\/span><\/p>\n<p># <span style=\"color: #ff0000\">sed -i -f script-file \/etc\/openvpn\/server.conf<\/span><\/p>\n<p>\u5efa\u7acb\u5b58\u653e Log \u7684\u76ee\u9304<br \/># <span style=\"color: #ff0000\">mkdir \/var\/log\/openvpn<\/span><\/p>\n<p>7.\u8a2d\u5b9a\u7db2\u8def Forward<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/#net.ipv4.ip_forward=1\/net.ipv4.ip_forward=1\/&#8217; \/etc\/sysctl.conf<\/span><br \/># <span style=\"color: #ff0000\">sysctl -p<\/span><\/p>\n<p>8. \u9632\u706b\u7246\u8a2d\u5b9a iptables<br \/>#<span style=\"color: #ff0000\"> iptables -t nat -A POSTROUTING -s 10.8.0.0\/24 -o eth0 -j MASQUERADE<\/span><br \/>#<span style=\"color: #ff0000\"> iptables -A FORWARD -i tun0 -j ACCEPT<\/span>\u00a0<br \/># <span style=\"color: #ff0000\">iptables -A FORWARD -o tun0 -j ACCEPT<\/span><\/p>\n<p>9. \u8a2d\u5b9a\u958b\u6a5f\u6642\u555f\u52d5 OpenVPN \u670d\u52d9<br \/> # <span style=\"color: #ff0000\">systemctl enable openvpn@server.service<\/span><br \/><span style=\"color: #0000ff\">Created symlink from \/etc\/systemd\/system\/multi-user.target.wants\/openvpn@server.service to \/lib\/systemd\/system\/openvpn@.service.<\/span><\/p>\n<p>10. \u555f\u52d5\u4e26\u6aa2\u67e5\u662f\u5426\u6709\u6b63\u5e38\u555f\u52d5<br \/># <span style=\"color: #ff0000\">systemctl start openvpn@server.service<\/span><br \/># <span style=\"color: #ff0000\">systemctl status openvpn@server.service | head -3<\/span><br \/><span style=\"color: #0000ff\">\u25cf openvpn@server.service &#8211; OpenVPN connection to server<\/span><br \/><span style=\"color: #0000ff\">\u00a0 \u00a0Loaded: loaded (\/lib\/systemd\/system\/openvpn@.service; enabled; vendor preset: enabled)<\/span><br \/><span style=\"color: #0000ff\">\u00a0 \u00a0Active: active (<\/span><span style=\"color: #ff0000\">running<\/span><span style=\"color: #0000ff\">) since \u4e94 2016-12-23 21:35:43 CST; 15h ago<\/span><\/p>\n<p><span style=\"font-size: 1em\"># <span style=\"color: #ff0000\">netstat -antpl | grep :1194<\/span><br \/><\/span><span style=\"color: #0000ff\">tcp \u00a0 \u00a0 \u00a0 \u00a00 \u00a0 \u00a0 \u00a00 0.0.0.0:1194 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a00.0.0.0:* \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 LISTEN \u00a0 \u00a0 \u00a03146\/openvpn<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53c3\u8003\u7db2\u7ad9\uff1a How To Set Up an OpenVPN Server on Ubuntu 16.04 | &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/01\/01\/%e8%a9%a6%e7%94%a8-banana-pi-r1-ubuntu-minimal-16-04-%e4%b8%8a%e5%ae%89%e8%a3%9d-openvpn\/\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008\u8a66\u7528 Banana Pi R1 &#8211; Ubuntu minimal 16.04 \u4e0a\u5b89\u88dd OpenVPN\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":[162,168,119],"tags":[],"class_list":["post-19356","post","type-post","status-publish","format-standard","hentry","category-c-83744","category-c-84780","category-c-78464"],"meta_key":{"_pingme":["1"],"_encloseme":["1"],"lt_post_id":["680565"]},"_links":{"self":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19356"}],"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=19356"}],"version-history":[{"count":1,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19356\/revisions"}],"predecessor-version":[{"id":20900,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19356\/revisions\/20900"}],"wp:attachment":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/media?parent=19356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/categories?post=19356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/tags?post=19356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}