{"id":5453,"date":"2022-08-02T23:21:12","date_gmt":"2022-08-02T14:21:12","guid":{"rendered":"\/blog\/?p=5453"},"modified":"2023-09-21T09:26:24","modified_gmt":"2023-09-21T00:26:24","slug":"battle-net-%ec%84%9c%eb%b2%84-%ec%84%a4%ec%b9%98-pvpgn","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=5453","title":{"rendered":"Battle.net \uc11c\ubc84 \uc124\uce58 (PvPGN)"},"content":{"rendered":"\n<p>\n  <span style=\"font-family: monospace;\">\n    <strong>\u25a0PvPGN(Player versus Player Gaming Network)<\/strong>\n    <br>&nbsp; <a href=\"https:\/\/pvpgn.pro\/\" target=\"_blank\" rel=\"noopener\">https:\/\/pvpgn.pro\/<\/a>\n    <br>\n    <br>\n    <strong>1. \uc18c\uc2a4\ucf54\ub4dc \ubc0f support \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc<\/strong>\n    <br>&nbsp; <a href=\"https:\/\/github.com\/pvpgn\/pvpgn-server\/archive\/master.tar.gz\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/pvpgn\/pvpgn-server\/archive\/master.tar.gz<\/a>\n    <br>&nbsp; <a href=\"https:\/\/sourceforge.net\/projects\/pvpgn.berlios\/files\/Support%20files\/pvpgn-support-1.2.tar.gz\/download\" target=\"_blank\" rel=\"noopener\">https:\/\/sourceforge.net\/projects\/pvpgn.berlios\/files\/Support%20files\/pvpgn-support-1.2.tar.gz\/download<\/a>\n    <br>\n    <br>\n    <strong>2. \uc18c\uc2a4\ucf54\ub4dc \ube4c\ub4dc<\/strong>\n    <br>&nbsp; <em>mkdir build<\/em>\n    <br>\n    <em>&nbsp; cd build<\/em>\n    <br>\n    <em>&nbsp; cmake -D CMAKE_INSTALL_PREFIX=\/usr\/local\/pvpgn -D WITH_MYSQL=false -D WITH_LUA=false ..\/<\/em>\n    <br>\n    <em>&nbsp; make<\/em>\n    <br>\n    <em>&nbsp; make install<\/em>\n    <br>\n    <br>\n    <strong>3. systemctl \uc11c\ube44\uc2a4 \ub4f1\ub85d<\/strong>\n    <br>&nbsp; \uc11c\ube44\uc2a4 \ud30c\uc77c \uc791\uc131 <br>&nbsp; <em>vi \/usr\/lib\/systemd\/system\/pvpgn.service<\/em>\n    <br>--------------------------------------- <br>\n    <span style=\"color: #e67e23;\">[Unit]<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">Description=Player versus Player Gaming Network(Battle.net) Service<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">After=network.target<\/span>\n    <br>\n    <br>\n    <span style=\"color: #e67e23;\">[Service]<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">Type=forking<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">ExecStart=\/usr\/local\/pvpgn\/sbin\/bnetd<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">User=nobody<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">Group=nogroup<\/span>\n    <br>\n    <br>\n    <span style=\"color: #e67e23;\">[Install]<\/span>\n    <br>\n    <span style=\"color: #e67e23;\">WantedBy=multi-user.target<\/span>\n    <br>--------------------------------------- <br>&nbsp; \ub370\ubaac \uc2e4\ud589 <br>&nbsp; <em>chmod 644 \/usr\/lib\/systemd\/system\/pvpgn.service<\/em>\n    <br>\n    <em>&nbsp; chown -R nobody:nogroup \/usr\/local\/pvpgn<\/em>\n    <br>\n    <em>&nbsp; systemctl daemon-reload<\/em>\n    <br>\n    <em>&nbsp; systemctl enable pvpgn.service<\/em>\n    <br>\n    <em>&nbsp; systemctl start pvpgn.service<\/em>\n    <br>\n    <br>\n    <strong>4. \uc124\uc815\ud30c\uc77c \ud3b8\uc9d1<\/strong>\n    <br>&nbsp; <em>vi \/usr\/local\/pvpgn\/etc\/pvpgn\/bnetd.conf<\/em>\n    <br>\n    <br>&nbsp; <span style=\"color: #34495e;\">allowed_clients = sexp<\/span>\n    <br>\n    <span style=\"color: #34495e;\">&nbsp; mail_support = false<\/span>\n    <br>\n    <br>\n    <strong>5. Support \ud30c\uc77c \ub123\uae30<\/strong>\n    <br>&nbsp; \/usr\/local\/pvpgn\/var\/pvpgn\/files \uc5d0 \ub2e4\uc6b4\ub85c\ub4dc \ubc1b\uc740 Support \ud30c\uc77c\uc744 \ub123\ub294\ub2e4. <br>\n    <br>\n    <strong>6. \ud658\uc601 \uba54\uc138\uc9c0 \ud3b8\uc9d1<\/strong>\n    <br>&nbsp; <em>vi \/usr\/local\/pvpgn\/etc\/pvpgn\/i18n\/koKR\/bnmotd.txt<\/em>\n    <br>\n    <br>\n    <strong>7. PC\uc5d0\uc11c \ubc30\ud2c0\ub137 \ub4f1\ub85d<\/strong>\n    <br>&nbsp; \u2460blizzard-battle-net-gateway-editor \ub2e4\uc6b4\ub85c\ub4dc \ud6c4 \uc2e4\ud589 <br>&nbsp; <a href=\"https:\/\/www.engamers.com\/blizzard-battle-net-gateway-editor\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.engamers.com\/blizzard-battle-net-gateway-editor\/<\/a>\n    <br>\n    <br>&nbsp; \u2461Zone\uc744 -9\ub85c \uc124\uc815\ud558\uc5ec \uc11c\ubc84 \ub4f1\ub85d <br>\n    <br>\n    <strong>8. \ubc29\ud654\ubcbd \uc14b\ud305<\/strong>\n    <br>&nbsp; \uac19\uc740 \ub124\ud2b8\uc6cc\ud06c\uac00 \uc544\ub2c8\uba74 \ubc30\ud2c0\ub137\uc5d0 \uc811\uc18d\ud574\ub3c4 JOIN\uc774 \ub418\uc9c0 \uc54a\ub294\ub2e4. <br>&nbsp; JOIN\uc744 \uc704\ud574\uc11c\ub294 \ubc29\uc744 \ub9cc\ub4dc\ub294 PC\uc758 \uacf5\uc720\uae30 \ub610\ub294 \ubc29\ud654\ubcbd\uc5d0 \uc544\ub798\uc640 \uac19\uc740 \ud3ec\ud2b8\ud3ec\uc6cc\ub529 \uc815\ucc45\uc744 \ucd94\uac00\ud574\uc918\uc57c \ud55c\ub2e4. <br>&nbsp; <strong>\n      <span style=\"color: #e03e2d;\">&lt;\uacf5\uc720\uae30&gt;<\/span>\u2192 <span style=\"color: #236fa1;\">&lt;\uc2a4\ud0c0\ud06c\ub798\ud504\ud2b8\ub97c \uc2e4\ud589\ud560 PC\uc758 \ub0b4\ubd80IP&gt;<\/span>\n    <\/strong>\n    <br>&nbsp; <strong>Port: 6112\/tcp,udp<\/strong>\n  <\/span>\n<\/p>\n<p>\n  <span style=\"font-family: monospace;\">&nbsp; pvpgn \uc11c\ubc84\ub294 \uc544\ub798\uc758 \uc2a4\ud06c\ub9bd\ud2b8\ub85c iptables\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubc29\ud654\ubcbd\uc744 \uc14b\ud305\ud574 \uc900\ub2e4. <br>\n  <\/span>\n<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\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=\"\">IPTABLES_CMD=\"\/usr\/sbin\/iptables\"\nWAN_IF=\"enp1s0\"\nLAN_IF=\"enp2s0\"\nLAN_IP=$(ifconfig ${LAN_IF} | awk '\/inet \/ {print $2}')\n\n######################################################################\n# \ubc30\ud2c0\ub137\uc5d0 \uc811\uc18d\ud560 PC\ub4e4\uc758 IP\uc8fc\uc18c \ub9e8 \ub4b7\uc790\ub9ac \ub098\uc5f4\n######################################################################\nGAMMING_PC=\"34 87 88 106 153\"\n\n######################################################################\n# \ubc30\ud2c0\ub137 PC \ubc29\ud654\ubcbd \uc815\ucc45 \uc124\uc815\n######################################################################\nfunc_set_battle_net_rules() {\n  func_debug_msg ${FUNCNAME[0]}\n\n  # 192.168.1 \ud615\ud0dc\uc758 Network address\ub97c \uad6c\ud55c\ub2e4.\n  IFS=. read -r ii1 ii2 ii3 ii4 &lt;&lt;&lt; ${LAN_IP}\n  NETWORK_HEAD3=\"${ii1}.${ii2}.${ii3}\"\n\n  #\n  # BATTLE.NET OUTGOING NAT RULES\n  #\n  ${IPTABLES_CMD} -t nat -N BATTLENET_OUT\n  ${IPTABLES_CMD} -t nat -I POSTROUTING -p udp -s ${LAN_NETWORK} --sport 6112 --dport 6112 -j BATTLENET_OUT\n  ${IPTABLES_CMD} -t nat -I POSTROUTING -p tcp -s ${LAN_NETWORK} --sport 6112 --dport 6112 -j BATTLENET_OUT\n  for LOOP_VAL1 in ${GAMMING_PC}\n  do\n    TMP_PORT1=\"$((60000 + $LOOP_VAL1))\"\n    ${IPTABLES_CMD} -t nat -I BATTLENET_OUT -p udp -s ${NETWORK_HEAD3}.${LOOP_VAL1} --sport 6112 --dport 6112 -j SNAT --to ${WAN_IP}:${TMP_PORT1}\n    ${IPTABLES_CMD} -t nat -I BATTLENET_OUT -p tcp -s ${NETWORK_HEAD3}.${LOOP_VAL1} --sport 6112 --dport 6112 -j SNAT --to ${WAN_IP}:${TMP_PORT1}\n  done\n\n  #\n  # BATTLE.NET INCOMING NAT RULES\n  #\n  ${IPTABLES_CMD} -t nat -N BATTLENET_IN\n  for LOOP_VAL1 in ${GAMMING_PC}\n  do\n    TMP_PORT1=\"$((60000 + $LOOP_VAL1))\"\n    ${IPTABLES_CMD} -t nat -I PREROUTING -p udp --dport ${TMP_PORT1} -j BATTLENET_IN\n  done\n\n  for LOOP_VAL1 in ${GAMMING_PC}\n  do\n    TMP_PORT1=\"$((60000 + $LOOP_VAL1))\"\n    ${IPTABLES_CMD} -t nat -I PREROUTING -p tcp --dport ${TMP_PORT1} -j BATTLENET_IN\n  done\n\n  for LOOP_VAL1 in ${GAMMING_PC}\n  do\n    TMP_PORT1=\"$((60000 + $LOOP_VAL1))\"\n    ${IPTABLES_CMD} -t nat -I BATTLENET_IN -p udp -d ${WAN_IP} --dport ${TMP_PORT1} -j DNAT --to ${NETWORK_HEAD3}.${LOOP_VAL1}:6112\n    ${IPTABLES_CMD} -t nat -I BATTLENET_IN -p tcp -d ${WAN_IP} --dport ${TMP_PORT1} -j DNAT --to ${NETWORK_HEAD3}.${LOOP_VAL1}:6112\n  done\n\n  ${IPTABLES_CMD} -A FORWARD -p udp --sport 6112 -j ACCEPT\n  echo 0 > \/proc\/sys\/net\/ipv4\/conf\/${WAN_IF}\/rp_filter\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u25a0PvPGN(Player versus Player Gaming Network) &nbsp; https:\/\/pvpgn.pro\/ 1. \uc18c\uc2a4\ucf54\ub4dc \ubc0f support \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc &nbsp; https:\/\/github.com\/pvpgn\/pvpgn-server\/archive\/master.tar.gz &nbsp; https:\/\/sourceforge.net\/projects\/pvpgn.berlios\/files\/Support%20files\/pvpgn-support-1.2.tar.gz\/download 2. \uc18c\uc2a4\ucf54\ub4dc \ube4c\ub4dc &nbsp; mkdir build &nbsp; cd build &nbsp; cmake -D CMAKE_INSTALL_PREFIX=\/usr\/local\/pvpgn -D WITH_MYSQL=false -D WITH_LUA=false ..\/ &nbsp; make &nbsp; make install 3. systemctl \uc11c\ube44\uc2a4 \ub4f1\ub85d &nbsp; \uc11c\ube44\uc2a4 \ud30c\uc77c \uc791\uc131 &nbsp; vi \/usr\/lib\/systemd\/system\/pvpgn.service &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; [Unit] Description=Player versus [&hellip;]<\/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":"","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":"default","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":[39,15],"tags":[87,86,88,89],"class_list":["post-5453","post","type-post","status-publish","format-standard","hentry","category-os_linux_unix_macos","category-computing_tools","tag-pnpgn","tag-86","tag-88","tag-89"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5453","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=5453"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5453\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}