{"id":18637,"date":"2014-12-02T06:53:33","date_gmt":"2014-12-01T22:53:33","guid":{"rendered":"https:\/\/2blog.ilc.edu.tw\/25793\/2014\/12\/02\/cubie-truck-%e6%b8%ac%e8%a9%a6-arch-linux-%e5%ae%89%e8%a3%9d-openvpn-server\/"},"modified":"2021-03-18T17:24:12","modified_gmt":"2021-03-18T09:24:12","slug":"cubie-truck-%e6%b8%ac%e8%a9%a6-arch-linux-%e5%ae%89%e8%a3%9d-openvpn-server","status":"publish","type":"post","link":"https:\/\/2blog.ilc.edu.tw\/25793\/2014\/12\/02\/cubie-truck-%e6%b8%ac%e8%a9%a6-arch-linux-%e5%ae%89%e8%a3%9d-openvpn-server\/","title":{"rendered":"Cubie Truck \u6e2c\u8a66 &#8211; Arch Linux \u5b89\u88dd OpenVPN Server"},"content":{"rendered":"<p>\u53c3\u8003\u7db2\u9801\uff1a<br \/><a href=\"https:\/\/wiki.archlinux.org\/index.php\/OpenVPN\" target=\"_blank\" rel=\"noopener noreferrer\">OpenVPN &#8211; ArchWiki<\/a><br \/><a href=\"https:\/\/wiki.archlinux.org\/index.php\/Create_a_Public_Key_Infrastructure_Using_the_easy-rsa_Scripts\" target=\"_blank\" rel=\"noopener noreferrer\">Create a Public Key Infrastructure Using the easy-rsa Scripts &#8211; ArchWiki<\/a><br \/><a href=\"http:\/\/blog.ilc.edu.tw\/blog\/blog\/25793\/post\/84780\/518843\" target=\"_blank\" rel=\"noopener noreferrer\">\u982d\u57ce\u570b\u5c0f\u8cc7\u8a0a\u7d44 | Banana Pi \u6e2c\u8a66 &#8211; Bananian \u7bc7 \u5b89\u88dd OpenVPN Server<\/a><\/p>\n<p>\u5b89\u88dd OpenVPN <br \/># <span style=\"color: #ff0000\">pacman -S openvpn easy-rsa<\/span><\/p>\n<p>\u8907\u88fd\u7bc4\u4f8b\u7684\u8a2d\u5b9a\u6a94\u5230<span style=\"color: #0000ff\"> \/etc\/openvpn<\/span> \u76ee\u9304<br \/># <span style=\"color: #ff0000\">cp -r \/usr\/share\/easy-rsa \/etc\/openvpn<\/span><\/p>\n<p>\u4fee\u6539\u6191\u8b49\u9810\u8a2d\u8cc7\u8a0a<br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/KEY_COUNTRY=&#8221;US&#8221;\/KEY_COUNTRY=&#8221;TW&#8221;\/&#8217; \/etc\/openvpn\/easy-rsa\/vars<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/KEY_PROVINCE=&#8221;CA&#8221;\/KEY_PROVINCE=&#8221;Taiwan&#8221;\/&#8217; \/etc\/openvpn\/easy-rsa\/vars<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/KEY_CITY=&#8221;SanFrancisco&#8221;\/KEY_CITY=&#8221;E-Land&#8221;\/&#8217; \/etc\/openvpn\/easy-rsa\/vars<\/span><br \/># <span style=\"color: #ff0000\">sed -i &#8216;s\/KEY_ORG=&#8221;Fort-Funston&#8221;\/KEY_ORG=&#8221;Home&#8221;\/&#8217; \/etc\/openvpn\/easy-rsa\/vars<\/span><br \/>[@more@]<br \/>\u5207\u63db\u76ee\u9304 <span style=\"color: #0000ff\">\/etc\/openvpn\/easy-rsa<\/span><br \/># <span style=\"color: #ff0000\">cd \/etc\/openvpn\/easy-rsa<\/span><\/p>\n<p>\u958b\u59cb\u5efa\u7acb\u6191\u8b49<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><\/p>\n<p>\u6e05\u7a7a\u820a\u6709\u6191\u8b49<br \/># <span style=\"color: #ff0000\">.\/clean-all<\/span><\/p>\n<p>\u5efa\u7acb\u6240\u9700\u6191\u8b49<br \/># <span style=\"color: #ff0000\">.\/build-ca<\/span><br \/># <span style=\"color: #ff0000\">.\/build-key-server CubieTruck<\/span><br \/># <span style=\"color: #ff0000\">.\/build-dh<\/span><br \/># <span style=\"color: #ff0000\">.\/build-key Cubier<\/span><\/p>\n<p>\u7522\u751f <span style=\"color: #0000ff\">ta.key<\/span><br \/># <span style=\"color: #ff0000\">openvpn &#8211;genkey &#8211;secret \/etc\/openvpn\/easy-rsa\/keys\/ta.key<\/span><\/p>\n<p>\u5207\u63db\u5230 <span style=\"color: #0000ff\">\/etc\/openvpn\/easy-rsa\/keys<\/span> \u76ee\u9304<br \/># <span style=\"color: #ff0000\">cd \/etc\/openvpn\/easy-rsa\/keys<\/span><\/p>\n<p>\u8907\u88fd Server \u7aef\u7684\u6a94\u6848\u5230 <span style=\"color: #0000ff\">\/etc\/openvpn<\/span><br \/># <span style=\"color: #ff0000\">cp ta.key ca.crt ca.key dh2048.pem CubieTruck.crt CubieTruck.key \/etc\/openvpn<\/span><\/p>\n<p>\u5efa\u7acb\u7528\u4f86\u5b58\u653e Client \u7aef\u6240\u9808\u6a94\u6848\u7684\u76ee\u9304<br \/># <span style=\"color: #ff0000\">mkdir $HOME\/openvpn-client-files<\/span><br \/>\u8907\u88fd Client \u7aef\u6240\u9808\u6a94\u6848<br \/># <span style=\"color: #ff0000\">cp ca.crt Cubier.crt Cubier.key $HOME\/openvpn-client-files<\/span><\/p>\n<p>\u66f4\u6539\u6a94\u6848\u540d\u7a31<br \/># <span style=\"color: #ff0000\">mv $HOME\/openvpn-client-files\/ca.crt $HOME\/openvpn-client-files\/capi.crt<\/span><br \/>\u66f4\u6539\u6a94\u6848\u6b0a\u9650<br \/># <span style=\"color: #ff0000\">chmod +r $HOME\/openvpn-client-files\/Cubier.key<\/span><\/p>\n<p>\u5efa\u7acb <span style=\"color: #0000ff\">\/etc\/openvpn\/server.conf<\/span> \u8a2d\u5b9a\u6a94<br \/># <span style=\"color: #ff0000\">vim \/etc\/openvpn\/server.conf<\/span><br \/><span style=\"color: #0000ff\">port 1194<\/span><br \/><span style=\"color: #0000ff\">proto tcp<\/span><br \/><span style=\"color: #0000ff\">dev tun<\/span><br \/><span style=\"color: #0000ff\">;; Key File \u8a2d\u5b9a<\/span><br \/><span style=\"color: #0000ff\">dh \/etc\/openvpn\/dh2048.pem<\/span><br \/><span style=\"color: #0000ff\">ca \/etc\/openvpn\/ca.crt<\/span><br \/><span style=\"color: #0000ff\">cert \/etc\/openvpn\/CubieTruck.crt<\/span><br \/><span style=\"color: #0000ff\">key \/etc\/openvpn\/CubieTruck.key<\/span><br \/><span style=\"color: #0000ff\">tls-auth \/etc\/openvpn\/ta.key 0<\/span><br \/><span style=\"color: #0000ff\">;; vpn \u4f7f\u7528\u7db2\u6bb5<\/span><br \/><span style=\"color: #0000ff\">server 10.8.0.0 255.255.255.0<\/span><br \/><span style=\"color: #0000ff\">cipher AES-256-CBC<\/span><br \/><span style=\"color: #0000ff\">comp-lzo<\/span><br \/><span style=\"color: #0000ff\">persist-key<\/span><br \/><span style=\"color: #0000ff\">persist-tun<\/span><br \/><span style=\"color: #0000ff\">status openvpn-status.log<\/span><br \/><span style=\"color: #0000ff\">verb 3<\/span><br \/><span style=\"color: #0000ff\">tun-mtu 1500<\/span><br \/><span style=\"color: #0000ff\">tun-mtu-extra 32<\/span><br \/><span style=\"color: #0000ff\">mssfix 1450<\/span><br \/><span style=\"color: #0000ff\">;; \u5141\u8a31 client \u9593\u4e92\u76f8\u9023\u63a5<\/span><br \/><span style=\"color: #0000ff\">;client-to-client<\/span><br \/><span style=\"color: #0000ff\">push &#8220;redirect-gateway def1&#8221;<\/span><br \/><span style=\"color: #0000ff\">;; DNS \u8a2d\u5b9a<\/span><br \/><span style=\"color: #0000ff\">push &#8220;dhcp-option DNS 168.95.1.1&#8221;<\/span><br \/><span style=\"color: #0000ff\">push &#8220;dhcp-option DNS 140.111.66.1&#8221;<\/span><br \/><span style=\"color: #0000ff\">keepalive 5 30<\/span><br \/><span style=\"color: #0000ff\">;; \u6700\u5927\u4f7f\u7528\u8005\u91cf<\/span><br \/><span style=\"color: #0000ff\">max-clients 12<\/span><br \/><span style=\"color: #0000ff\">user nobody<\/span><br \/><span style=\"color: #0000ff\">group nobody<\/span><\/p>\n<p>\u6e2c\u8a66 <span style=\"color: #0000ff\">\/etc\/openvpn\/server.conf<\/span> \u8a2d\u5b9a\u6a94\u8a9e\u6cd5\u662f\u5426\u6b63\u78ba<br \/># <span style=\"color: #ff0000\">openvpn \/etc\/openvpn\/server.conf<\/span><\/p>\n<p>\u9632\u706b\u7246\u4e0a\u7684\u8a2d\u5b9a\uff0c\u5982\u679c\u539f\u672c\u5c31\u6709\u9632\u706b\u7246\uff0c\u5c31\u8981\u5c07\u898f\u5247\u505a\u6574\u5408<br \/># <span style=\"color: #ff0000\">vim \/etc\/firewall.vpn<\/span><br \/><span style=\"color: #0000ff\">#!\/bin\/bash<\/span><br \/><span style=\"color: #0000ff\"># Enable ip_forward<\/span><br \/><span style=\"color: #0000ff\">echo &#8220;1&#8221; &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/span><br \/><span style=\"color: #0000ff\">iptables -t filter -F<\/span><br \/><span style=\"color: #0000ff\">iptables -t nat -F<\/span><br \/><span style=\"color: #0000ff\">iptables -A FORWARD -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<\/span><br \/><span style=\"color: #0000ff\">iptables -A FORWARD -s &#8220;10.8.0.0\/24&#8221; -j ACCEPT<\/span><br \/><span style=\"color: #0000ff\">iptables -A FORWARD -j REJECT<\/span><br \/><span style=\"color: #0000ff\">iptables -t nat -A POSTROUTING -s &#8220;10.8.0.0\/24&#8221; -j MASQUERADE<\/span><\/p>\n<p>\u66f4\u6539\u6a94\u6848\u6b0a\u9650<br \/># <span style=\"color: #ff0000\">chmod 700 \/etc\/firewall.vpn<\/span><\/p>\n<p>\u8a2d\u5b9a\u958b\u6a5f\u6642\u57f7\u884c<br \/>\u5728 <span style=\"color: #0000ff\">\/etc\/rc.local<\/span> \u6a94\u6848\u6700\u5f8c\u9762\u52a0\u5165\u57f7\u884c\u9632\u706b\u7246\u898f\u5247\u7684\u8a2d\u5b9a<br \/># <span style=\"color: #ff0000\">sed -i &#8216;$a # OpenVPN \u9632\u706b\u7246nsh \/etc\/firewall.vpn&#8217; \/etc\/rc.local<\/span><\/p>\n<p>\u57f7\u884c OpenVPN Server<br \/># <span style=\"color: #ff0000\">systemctl start openvpn@server.service<\/span><\/p>\n<p>\u8a2d\u5b9a\u958b\u6a5f\u6642\u57f7\u884c OpenVPN Server<br \/># <span style=\"color: #ff0000\">systemctl enable openvpn@server.service<\/span><\/p>\n<p>\u6aa2\u67e5 OpenVPN Server\u00a0\u57f7\u884c\u72c0\u614b<br \/># <span style=\"color: #ff0000\">systemctl status<\/span> <span style=\"color: #ff0000\">openvpn@server.service<\/span><\/p>\n<p>\u6aa2\u67e5 OpenVPN Server\u00a0\u662f\u5426\u6709\u6b63\u5e38\u57f7\u884c<br \/># <span style=\"color: #ff0000\">netstat -antpul | grep openvpn<\/span><br \/><span style=\"color: #0000ff\">tcp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0 0 0.0.0.0:1194\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.0.0.0:*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LISTEN\u00a0\u00a0\u00a0\u00a0\u00a0 3682\/openvpn<\/span><\/p>\n<p>tun0 \u4ecb\u9762\u8cc7\u8a0a<br \/># <span style=\"color: #ff0000\">ip addr show tun0<\/span><br \/><span style=\"color: #0000ff\">7: tun0: &lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100<\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 link\/none<\/span><br \/><span style=\"color: #0000ff\">\u00a0\u00a0\u00a0 inet 10.8.0.1 peer 10.8.0.2\/32 scope global tun0<\/span><\/p>\n<p>\u89e3\u6c7a\u51fa\u73fe <span style=\"color: #0000ff\">Failed to read PID from file \/run\/openvpn@server.pid: Invalid argument<\/span>\u00a0\u7684\u8a0a\u606f<br \/># <span style=\"color: #ff0000\">chown nobody:nobody \/var\/run\/openvpn@server.pid<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53c3\u8003\u7db2\u9801\uff1aOpenVPN &#8211; ArchWikiCreate a Public Key Infras &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/2blog.ilc.edu.tw\/25793\/2014\/12\/02\/cubie-truck-%e6%b8%ac%e8%a9%a6-arch-linux-%e5%ae%89%e8%a3%9d-openvpn-server\/\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008Cubie Truck \u6e2c\u8a66 &#8211; Arch Linux \u5b89\u88dd OpenVPN Server\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":[167,170,168],"tags":[],"class_list":["post-18637","post","type-post","status-publish","format-standard","hentry","category-c-84386","category-c-85297","category-c-84780"],"meta_key":{"_pingme":["1"],"_encloseme":["1"],"lt_post_id":["523694"]},"_links":{"self":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/18637"}],"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=18637"}],"version-history":[{"count":1,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/18637\/revisions"}],"predecessor-version":[{"id":20258,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/18637\/revisions\/20258"}],"wp:attachment":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/media?parent=18637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/categories?post=18637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/tags?post=18637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}