{"id":5206,"date":"2022-05-28T23:39:32","date_gmt":"2022-05-28T14:39:32","guid":{"rendered":"\/blog\/?p=5206"},"modified":"2024-01-07T14:41:19","modified_gmt":"2024-01-07T05:41:19","slug":"openvpn-%ec%9d%b8%ec%a6%9d%ec%84%9c-%ec%83%9d%ec%84%b1-%ec%84%a4%ec%b9%98-%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=5206","title":{"rendered":"OpenVPN \uc778\uc99d\uc11c \uc0dd\uc131 &#038; \uc124\uce58 \uc2a4\ud06c\ub9bd\ud2b8"},"content":{"rendered":"\n<p>make_openvpn_certs.sh<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n######################################################################\n#\n# Linux OpenVPN \uc124\uce58 \uc2a4\ud06c\ub9bd\ud2b8\n#\n# \uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub294 Linux(centos\/ubuntu)\uc5d0 OpenVPN\uc744 \uc124\uce58\ud558\uace0 \uc124\uc815\ud558\ub294\n# \uacfc\uc815\uc744 \uc790\ub3d9\uc73c\ub85c \uc9c4\ud589\ud55c\ub2e4. \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \/etc\/openvpn\/xxx.ovpn \ud30c\uc77c\uc744\n# \uc0ac\uc6a9\ud558\uc5ec \uc678\ubd80\uc5d0\uc11c \uc811\uc18d\ud560 \uc218 \uc788\ub2e4.\n#\n######################################################################\nOS_NAME=\"ubuntu\" # or centos\nOPENVPN_HOSTNAME=\"local.esvali.com\"\n\nINSTALL_OPENVPN=1\n\nOPENVPN_PORT=\"1194\"\nOPENVPN_PROTO=\"udp\"\nOPENVPN_INTERNAL_NET=\"10.8.0.0 255.255.255.0\"\n\n# https:\/\/github.com\/OpenVPN\/easy-rsa\/releases\nEASY_RSA_VER=\"3.1.7\"\nEASY_RSA_DIR=\"\/tmp\/EasyRSA-${EASY_RSA_VER}\"\nEASY_RSA_CMD=\"${EASY_RSA_DIR}\/easyrsa\"\nEASY_RSA_DOWNLOAD=\"https:\/\/github.com\/OpenVPN\/easy-rsa\/releases\/download\/v${EASY_RSA_VER}\/EasyRSA-${EASY_RSA_VER}.tgz\"\n\n# Configuration parameters\nexport EASYRSA_PKI_DIR=\"\/etc\/easy-rsa\/pki\"\nexport EASYRSA_REQ_CN=\"ovpnca\"\n\n######################################################################\n#\n# \uad00\ub828 \ud328\ud0a4\uc9c0 \uc124\uce58 (\uc774\ubbf8 \uc124\uce58\ub418\uc5b4 \uc788\uc73c\uba74 \ubd88\ud544\uc694)\n# Ubuntu\ub294 apt-get, CentOS\ub294 yum\uc73c\ub85c \uc2e4\ud589\ud55c\ub2e4.\n#\n######################################################################\n\nif [ ${OS_NAME} == \"centos\" ]; then\n  OVPN_USR=\"nobody\"\n  OVPN_GRP=\"nobody\"\n  systemctl stop openvpn@server.service\n  rm -rf \/etc\/openvpn\/*\n  if [ ${INSTALL_OPENVPN} == 1 ]; then\n    yum -y install openvpn\n  fi\n  systemctl stop openvpn@server.service\nelse\n  OVPN_USR=\"nobody\"\n  OVPN_GRP=\"nogroup\"\n  systemctl stop openvpn\n  if [ ${INSTALL_OPENVPN} == 1 ]; then\n    apt-get -y install openvpn\n  fi\n  systemctl stop openvpn\nfi\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\n######################################################################\n#\n# easy-rsa \uc124\uce58\n#\n######################################################################\nwget -P ~\/ \"${EASY_RSA_DOWNLOAD}\"\nif [ $? -ne 0 ]; then\n  exit 1\nfi\nrm -rf ${EASY_RSA_DIR}\ntar -C \/tmp -xvzf ~\/EasyRSA-${EASY_RSA_VER}.tgz\nrm -f ~\/EasyRSA-${EASY_RSA_VER}.tgz\n\n######################################################################\n#\n# ${EASY_RSA_DIR}\/vars \ud3b8\uc9d1\n#\n######################################################################\nrm -rf \/etc\/easy-rsa \/etc\/openvpn\nmkdir -p ${EASYRSA_PKI_DIR} \/etc\/openvpn\/server \/etc\/openvpn\/client\ncp -fv ${EASY_RSA_DIR}\/vars.example ${EASY_RSA_DIR}\/vars\n\nsed -i \"s\/#set_var EASYRSA_REQ_COUNTRY\\t\\\"US\\\"\/set_var EASYRSA_REQ_COUNTRY \\\"KR\\\"\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_REQ_PROVINCE\\t\\\"California\\\"\/set_var EASYRSA_REQ_PROVINCE \\\"Seoul\\\"\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_REQ_CITY\\t\\\"San Francisco\\\"\/set_var EASYRSA_REQ_CITY \\\"Seoul\\\"\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_REQ_ORG\\t\\\"Copyleft Certificate Co\\\"\/set_var EASYRSA_REQ_ORG \\\"My Office\\\"\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_REQ_EMAIL\\t\\\"me@example.net\\\"\/set_var EASYRSA_REQ_EMAIL \\\"openvpn@mydomain\\\"\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_REQ_OU\\t\\t\\\"My Organizational Unit\\\"\/set_var EASYRSA_REQ_OU \\\"My Organizational Unit\\\"\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_CA_EXPIRE\\t3650\/set_var EASYRSA_CA_EXPIRE 18250\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_CERT_EXPIRE\\t825\/set_var EASYRSA_CERT_EXPIRE 18250\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_CRL_DAYS\\t180\/set_var EASYRSA_CRL_DAYS 18250\/g\" ${EASY_RSA_DIR}\/vars\nsed -i \"s\/#set_var EASYRSA_NO_PASS\\t1\/set_var EASYRSA_NO_PASS 1\/g\" ${EASY_RSA_DIR}\/vars\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Initialization and Build CA\"\necho \"#\"\necho \"#####################################################################\"\ncd ${EASY_RSA_DIR}\n${EASY_RSA_CMD} init-pki\n${EASY_RSA_CMD} build-ca\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Build Server Key\"\necho \"#\"\necho \"#####################################################################\"\n${EASY_RSA_CMD} gen-req ${OPENVPN_HOSTNAME}-openvpn-server nopass\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n${EASY_RSA_CMD} sign-req server ${OPENVPN_HOSTNAME}-openvpn-server\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Verify the certificate file using the OpenSSL command\"\necho \"#\"\necho \"#####################################################################\"\nopenssl verify -CAfile pki\/ca.crt ${EASY_RSA_DIR}\/pki\/issued\/${OPENVPN_HOSTNAME}-openvpn-server.crt\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Build Client Key\"\necho \"#\"\necho \"#####################################################################\"\n${EASY_RSA_CMD} gen-req ${OPENVPN_HOSTNAME}-openvpn-client nopass\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n${EASY_RSA_CMD} sign-req client ${OPENVPN_HOSTNAME}-openvpn-client\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Verify the certificate file using the OpenSSL command\"\necho \"#\"\necho \"#####################################################################\"\nopenssl verify -CAfile ${EASY_RSA_DIR}\/pki\/ca.crt ${EASY_RSA_DIR}\/pki\/issued\/${OPENVPN_HOSTNAME}-openvpn-client.crt\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Generate the Diffie-Hellman key\"\necho \"#\"\necho \"#####################################################################\"\n${EASY_RSA_CMD} gen-dh\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n${EASY_RSA_CMD} gen-crl\nif [ $? -ne 0 ]; then\n  exit 1\nfi\n\n#####################################################################\n#\n# easy-rsa \uc0ad\uc81c\n#\n#####################################################################\n#rm -rf \/tmp\/${EASY_RSA_DIR}\n\nclear\necho \"#####################################################################\"\necho \"#\"\necho \"# Copy Certificates Files\"\necho \"#\"\necho \"#####################################################################\"\ncp -fv ${EASY_RSA_DIR}\/pki\/ca.crt \/etc\/openvpn\/server\/\ncp -fv ${EASY_RSA_DIR}\/pki\/issued\/${OPENVPN_HOSTNAME}-openvpn-server.crt \/etc\/openvpn\/server\/\ncp -fv ${EASY_RSA_DIR}\/pki\/private\/${OPENVPN_HOSTNAME}-openvpn-server.key \/etc\/openvpn\/server\n\ncp -fv ${EASY_RSA_DIR}\/pki\/ca.crt \/etc\/openvpn\/client\/\ncp -fv ${EASY_RSA_DIR}\/pki\/issued\/${OPENVPN_HOSTNAME}-openvpn-client.crt \/etc\/openvpn\/client\/\ncp -fv ${EASY_RSA_DIR}\/pki\/private\/${OPENVPN_HOSTNAME}-openvpn-client.key \/etc\/openvpn\/client\/\n\ncp -fv ${EASY_RSA_DIR}\/pki\/dh.pem \/etc\/openvpn\/server\/\ncp -fv ${EASY_RSA_DIR}\/pki\/crl.pem \/etc\/openvpn\/server\/\n\n#####################################################################\n#\n# server.conf\n#\n#####################################################################\necho \"# OpenVPN Port, Protocol and the tun\" > \/etc\/openvpn\/server.conf\necho \"port ${OPENVPN_PORT}\" >> \/etc\/openvpn\/server.conf\necho \"proto udp\" >> \/etc\/openvpn\/server.conf\necho \"dev tun\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# OpenVPN Server Certificate - CA, server key and certificate\" >> \/etc\/openvpn\/server.conf\necho \"ca \/etc\/openvpn\/server\/ca.crt\" >> \/etc\/openvpn\/server.conf\necho \"cert \/etc\/openvpn\/server\/${OPENVPN_HOSTNAME}-openvpn-server.crt\" >> \/etc\/openvpn\/server.conf\necho \"key \/etc\/openvpn\/server\/${OPENVPN_HOSTNAME}-openvpn-server.key\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"#DH and CRL key\" >> \/etc\/openvpn\/server.conf\necho \"dh \/etc\/openvpn\/server\/dh.pem\" >> \/etc\/openvpn\/server.conf\necho \"crl-verify \/etc\/openvpn\/server\/crl.pem\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# Network Configuration - Internal network\" >> \/etc\/openvpn\/server.conf\necho \"# Redirect all Connection through OpenVPN Server\" >> \/etc\/openvpn\/server.conf\necho \"server ${OPENVPN_INTERNAL_NET}\" >> \/etc\/openvpn\/server.conf\necho \"push \\\"redirect-gateway def1 bypass-dhcp\\\"\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# Using the DNS from https:\/\/dns.watch\" >> \/etc\/openvpn\/server.conf\necho \"push \\\"dhcp-option DNS 8.8.8.8\\\"\" >> \/etc\/openvpn\/server.conf\necho \"push \\\"dhcp-option DNS 8.8.4.4\\\"\" >> \/etc\/openvpn\/server.conf\necho \"client-to-client\" >> \/etc\/openvpn\/server.conf\necho \"topology subnet\" >> \/etc\/openvpn\/server.conf\necho \"mode server\" >> \/etc\/openvpn\/server.conf\necho \"cipher AES-256-CBC\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"#Enable multiple client to connect with same Certificate key\" >> \/etc\/openvpn\/server.conf\necho \"duplicate-cn\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# TLS Security\" >> \/etc\/openvpn\/server.conf\necho \"tls-server\" >> \/etc\/openvpn\/server.conf\necho \"#tls-version-min 1.2\" >> \/etc\/openvpn\/server.conf\necho \"#tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256\" >> \/etc\/openvpn\/server.conf\necho \"#auth SHA512\" >> \/etc\/openvpn\/server.conf\necho \"auth-nocache\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# Other Configuration\" >> \/etc\/openvpn\/server.conf\necho \"keepalive 10 120\" >> \/etc\/openvpn\/server.conf\necho \"persist-key\" >> \/etc\/openvpn\/server.conf\necho \"persist-tun\" >> \/etc\/openvpn\/server.conf\necho \"comp-lzo\" >> \/etc\/openvpn\/server.conf\necho \"daemon\" >> \/etc\/openvpn\/server.conf\necho \"user ${OVPN_USR}\" >> \/etc\/openvpn\/server.conf\necho \"group ${OVPN_GRP}\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# OpenVPN Log\" >> \/etc\/openvpn\/server.conf\necho \"log \/var\/log\/openvpn.log\" >> \/etc\/openvpn\/server.conf\necho \"status \/var\/log\/openvpn-status.log\" >> \/etc\/openvpn\/server.conf\necho \"verb 3\" >> \/etc\/openvpn\/server.conf\necho \"\" >> \/etc\/openvpn\/server.conf\necho \"# auth plug-in\" >> \/etc\/openvpn\/server.conf\necho \"#plugin \/usr\/lib\/openvpn\/openvpn-plugin-auth-pam.so login\" >> \/etc\/openvpn\/server.conf\n\n#####################################################################\n#\n# client.ovpn\n#\n#####################################################################\nOPENVPN_CLIENT_CERT=\"$(openssl x509 -in \/etc\/openvpn\/client\/${OPENVPN_HOSTNAME}-openvpn-client.crt)\"\nOPENVPN_CLIENT_CA=\"$(openssl x509 -in \/etc\/openvpn\/client\/ca.crt)\"\nOPENVPN_CLIENT_KEY=\"$(cat \/etc\/openvpn\/client\/${OPENVPN_HOSTNAME}-openvpn-client.key)\"\nNL=$'\\n'\n\ncat &lt;&lt; EOF > \/etc\/openvpn\/${OPENVPN_HOSTNAME}_client.ovpn\nclient\ndev tun\nproto ${OPENVPN_PROTO}\nremote ${OPENVPN_HOSTNAME} ${OPENVPN_PORT}\nresolv-retry infinite\nnobind\npersist-key\npersist-tun\ntls-client\ncipher AES-256-CBC\nremote-cert-tls server\ntun-mtu 1500\nauth-nocache\ncomp-lzo yes\nverb 3\nreneg-sec 0\n&lt;ca>${NL}${OPENVPN_CLIENT_CA}${NL}&lt;\/ca>\n&lt;cert>${NL}${OPENVPN_CLIENT_CERT}${NL}&lt;\/cert>\n&lt;key>${NL}${OPENVPN_CLIENT_KEY}${NL}&lt;\/key>\nEOF\n\n#####################################################################\n#\n# \ud37c\ubbf8\uc158 \uc870\uc815 \ubc0f \uc7ac\uc2dc\uc791\n#\n#####################################################################\nrm -rf ${EASY_RSA_DIR}\nrm -rf \/etc\/easy-rsa\nrm -f \/var\/log\/openvpn.log\nchown -R ${OVPN_USR}:${OVPN_GRP} \/etc\/openvpn\nsystemctl daemon-reload\nif [ ${OS_NAME} == \"centos\" ]; then\n  systemctl -f enable openvpn@server.service\n  systemctl restart openvpn@server.service\nelse\n  systemctl -f enable openvpn\n  systemctl restart openvpn\nfi\ntail -n 200 \/var\/log\/openvpn.log<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>firewall_openvpn.sh<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n######################################################################\n#\n# OpenVPN \uae30\ub3d9 \ud6c4 \uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc2e4\ud589\ud558\uc5ec Client\uc5d0\uc11c OpenVPN\n# \uc11c\ubc84\ub97c \ud1b5\ud574 \uc778\ud130\ub137 \uc5f0\uacb0\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \ud55c\ub2e4.\n#\n######################################################################\n\n####################################################################\n# \uc0ac\uc6a9\ubc95 \ucd9c\ub825\n####################################################################\nfunc_usage() {\n  echo\n  echo \"Usage (as root): $0 [start | restart | stop | status | help]\"\n  echo\n  echo \"Examples:\"\n  echo \" # ${0} start\"\n  echo \" # ${0} restart\"\n  echo \" # ${0} stop\"\n  echo\n}\n\n######################################################################\n# reset iptables\n######################################################################\nfunc_reset() {\n  # Remove any existing rules form all chains\n  iptables -F\n  iptables -F -t nat\n  iptables -F -t mangle\n  iptables -F -t raw\n  iptables -F -t filter\n  # Remove any pre-existing user-defined chains\n  iptables -X\n  iptables -X -t nat\n  iptables -X -t mangle\n  iptables -X -t raw\n  iptables -X -t filter\n  # Zero all packet and byte counters\n  iptables -Z\n  iptables -Z -t nat\n  iptables -Z -t mangle\n  iptables -Z -t raw\n  iptables -Z -t filter\n\n  iptables -P INPUT ACCEPT\n  iptables -P OUTPUT ACCEPT\n  iptables -P FORWARD DROP\n\n  echo \"0\" > \/proc\/sys\/net\/ipv4\/ip_forward\n}\n\n####################################################################\n# iptables masquerade\n####################################################################\nfunc_masq() {\n  echo 1 > \/proc\/sys\/net\/ipv4\/ip_forward\n  iptables -P INPUT ACCEPT\n  iptables -P OUTPUT ACCEPT\n  iptables -P FORWARD ACCEPT\n  iptables -t nat -A POSTROUTING -j MASQUERADE\n}\n\ncase \"$1\" in\n  start | restart)\n    echo\n    echo \"Starting\/Restarting firewall...\"\n    func_reset\n    func_masq\n    ;;\n  stop)\n    echo\n    echo \"Stopping firewall...\"\n    func_reset\n    ;;\n  status)\n    clear\n    echo \"####################################################################\"\n    echo \"# iptables -L -v -t nat\"\n    echo \"####################################################################\"\n    iptables -L -v -t nat\n    echo\n    echo \"####################################################################\"\n    echo \"# iptables -L -v\"\n    echo \"####################################################################\"\n    iptables -L -v\n    ;;\n  * | help)\n    func_usage\n    ;;\nesac\nexit 0<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>make_openvpn_certs.sh firewall_openvpn.sh<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[11,12],"tags":[],"class_list":["post-5206","post","type-post","status-publish","format-standard","hentry","category-computing_network","category-computing_security"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5206"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5206\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}