<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Promox on Joonlog</title><link>https://joonlog.github.io/tags/promox/</link><description>Recent content in Promox on Joonlog</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Mon, 23 Feb 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://joonlog.github.io/tags/promox/index.xml" rel="self" type="application/rss+xml"/><item><title>Promox 네트워크 설정 및 VM 생성</title><link>https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/</link><pubDate>Mon, 23 Feb 2026 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Promox 내부 VM을 위한 사설 네트워크 인터페이스 생성 필요&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="promox-네트워크-설정"&gt;Promox 네트워크 설정
&lt;/h3&gt;&lt;p&gt;현재 랜선이 그대로 미니 PC에 연결되어 있어 pve의 네트워크 인터페이스는 공인 IP만 존재한다&lt;/p&gt;
&lt;p&gt;따라서 Promox 내부 VM을 사설 IP로 관리하기 위한 네트워크 인터페이스가 필요하다&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;NI 생성&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;vim&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;network&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;interfaces&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;auto&lt;/code&gt;: 부팅 시 NI 활성&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;address&lt;/code&gt;: 고정 IP 설정&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이 IP가 하위 VM들의 Gateway 역할&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;post-up&lt;/code&gt;: 인터넷 연결&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;내부 VM에서 외부 네트워크로의 라우팅 허용&lt;/li&gt;
&lt;li&gt;출발지가 192.168.100.0/24 대역인 트래픽이 vmbr0으로 나갈 때 vmbr0 IP로 출발지 IP를 SNAT&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;post-down&lt;/code&gt;: 트래픽이 vmbr1으로 내려갈때는 위 NAT 규칙 삭제&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;auto&lt;/span&gt; &lt;span class="nx"&gt;vmbr1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;iface&lt;/span&gt; &lt;span class="nx"&gt;vmbr1&lt;/span&gt; &lt;span class="nx"&gt;inet&lt;/span&gt; &lt;span class="kr"&gt;static&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;address&lt;/span&gt; &lt;span class="mf"&gt;192.168.100.1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;bridge_ports&lt;/span&gt; &lt;span class="nx"&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;bridge_stp&lt;/span&gt; &lt;span class="nx"&gt;off&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;bridge_fd&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;up&lt;/span&gt; &lt;span class="nx"&gt;echo&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;/proc/sys/net/ipv4/ip_forward&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;up&lt;/span&gt; &lt;span class="nx"&gt;iptables&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="nx"&gt;nat&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt; &lt;span class="nx"&gt;POSTROUTING&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="mf"&gt;192.168.100.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt; &lt;span class="nx"&gt;vmbr0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="nx"&gt;MASQUERADE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;down&lt;/span&gt; &lt;span class="nx"&gt;iptables&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="nx"&gt;nat&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;D&lt;/span&gt; &lt;span class="nx"&gt;POSTROUTING&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="mf"&gt;192.168.100.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt; &lt;span class="nx"&gt;vmbr0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="nx"&gt;MASQUERADE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;신규 생성한 NI 기동&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;systemctl&lt;/span&gt; &lt;span class="nx"&gt;restart&lt;/span&gt; &lt;span class="nx"&gt;networking&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;ifup&lt;/span&gt; &lt;span class="nx"&gt;vmbr1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VM에서 인터넷 통신 필요 시 pve에서 nftables 활성화 필수&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;기본 설정에선 vmbr1에서 vmbr0으로의 FORWARD를 막고 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings01.png"
width="774"
height="566"
srcset="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings01_hu_acba38255ea87837.png 480w, https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings01_hu_6386d90174c7aab1.png 1024w"
loading="lazy"
alt="PromoxNetworkVMSettings01.png"
class="gallery-image"
data-flex-grow="136"
data-flex-basis="328px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="promox에서-vm-생성"&gt;Promox에서 VM 생성
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;rocky 8.10 이미지 다운로드&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /var/lib/vz/template/iso/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://download.rockylinux.org/pub/rocky/8.10/isos/x86_64/Rocky-8.10-x86_64-minimal.iso
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VM 생성&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;좌측 pve 우클릭 - Create VM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings02.png"
width="1320"
height="737"
srcset="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings02_hu_7ff307c9ebc19f5a.png 480w, https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings02_hu_7570d7bda941ddd1.png 1024w"
loading="lazy"
alt="PromoxNetworkVMSettings02.png"
class="gallery-image"
data-flex-grow="179"
data-flex-basis="429px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;q35 설정&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings03.png"
width="1320"
height="725"
srcset="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings03_hu_1e303e3fbade40d0.png 480w, https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings03_hu_dd5acdaeb3bad8fc.png 1024w"
loading="lazy"
alt="PromoxNetworkVMSettings03.png"
class="gallery-image"
data-flex-grow="182"
data-flex-basis="436px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bridge에서 위에서 만든 NI 할당&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings04.png"
width="1280"
height="749"
srcset="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings04_hu_4e7f9207a29579c7.png 480w, https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings04_hu_206012b2e822b049.png 1024w"
loading="lazy"
alt="PromoxNetworkVMSettings04.png"
class="gallery-image"
data-flex-grow="170"
data-flex-basis="410px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="promox-vm-설정"&gt;Promox VM 설정
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Start at boot를 활성화 해야지 promox 부팅될 때 해당 VM도 부팅&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings05.png"
width="1049"
height="389"
srcset="https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings05_hu_8d0339afdaf42337.png 480w, https://joonlog.github.io/p/promox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95-%EB%B0%8F-vm-%EC%83%9D%EC%84%B1/PromoxNetworkVMSettings05_hu_c4d518e1033f8877.png 1024w"
loading="lazy"
alt="PromoxNetworkVMSettings05.png"
class="gallery-image"
data-flex-grow="269"
data-flex-basis="647px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VM NI 설정&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;사설 IP 수동 할당 및 게이트웨이, dns 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;nmcli&lt;/span&gt; &lt;span class="nx"&gt;con&lt;/span&gt; &lt;span class="nx"&gt;mod&lt;/span&gt; &lt;span class="nx"&gt;enp6s18&lt;/span&gt; &lt;span class="nx"&gt;ipv4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt; &lt;span class="nx"&gt;manual&lt;/span&gt; &lt;span class="nx"&gt;ipv4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addresses&lt;/span&gt; &lt;span class="mf"&gt;192.168.100.11&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="nx"&gt;ipv4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gateway&lt;/span&gt; &lt;span class="mf"&gt;192.168.100.1&lt;/span&gt; &lt;span class="nx"&gt;ipv4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dns&lt;/span&gt; &lt;span class="mf"&gt;8.8.8.8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;nmcli&lt;/span&gt; &lt;span class="nx"&gt;con&lt;/span&gt; &lt;span class="nx"&gt;mod&lt;/span&gt; &lt;span class="nx"&gt;enp6s18&lt;/span&gt; &lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;autoconnect&lt;/span&gt; &lt;span class="nx"&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;nmcli&lt;/span&gt; &lt;span class="nx"&gt;con&lt;/span&gt; &lt;span class="nx"&gt;down&lt;/span&gt; &lt;span class="nx"&gt;enp6s18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;nmcli&lt;/span&gt; &lt;span class="nx"&gt;con&lt;/span&gt; &lt;span class="nx"&gt;up&lt;/span&gt; &lt;span class="nx"&gt;enp6s18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ping 8.8.8.8 성공 시 설정 완료&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cloudflare Tunnel을 사용한 홈서버 Promox PVE 콘솔 접근 설정</title><link>https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/</link><pubDate>Fri, 06 Feb 2026 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/</guid><description>&lt;h3 id="목표"&gt;목표
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;현재 외부에서 홈서버 Promox PVE 콘솔에 접근 시 공인 IP로 직접 접근하는 중&lt;/li&gt;
&lt;li&gt;PVE 접속용 도메인 설정&lt;/li&gt;
&lt;li&gt;외부에서 도메인 접근 시 Cloudflare 인증을 요구하도록 설정하고, 인증 성공 시에만 PVE 콘솔에 접근하도록 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="0-사전-준비"&gt;0. 사전 준비
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Cloudflare에 등록할 도메인 준비&lt;/li&gt;
&lt;li&gt;도메인 네임서버를 Cloudflare로 설정
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare 회원가입 및 로그인&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;로그인 시 나오는 네임서버 도메인 2개를 도메인 등록기관의 네임서버 설정에 등록&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;초록색 체크 표시 뜨면 OK!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting01.png"
width="1910"
height="824"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting01_hu_c1357fcc4c66fda9.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting01_hu_813a6c54a08dfda4.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting01.png"
class="gallery-image"
data-flex-grow="231"
data-flex-basis="556px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="1-cloudflared-설치-및-연동"&gt;1. Cloudflared 설치 및 연동
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting02.png"
width="1885"
height="874"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting02_hu_8101428f9b7e0398.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting02_hu_9959e4923e475ba5.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting02.png"
class="gallery-image"
data-flex-grow="215"
data-flex-basis="517px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Networks&lt;/code&gt; - &lt;code&gt;Connectors&lt;/code&gt; - &lt;code&gt;Add a tunnel&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting03.png"
width="1911"
height="843"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting03_hu_dc0d91ba841d4269.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting03_hu_f5aefa0a9264498.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting03.png"
class="gallery-image"
data-flex-grow="226"
data-flex-basis="544px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cloudflared&lt;/code&gt; 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting04.png"
width="1915"
height="842"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting04_hu_59b54e2eb56b16fb.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting04_hu_f3d8cc431bdec73e.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting04.png"
class="gallery-image"
data-flex-grow="227"
data-flex-basis="545px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tunnel 이름 기입&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting05.png"
width="1897"
height="843"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting05_hu_3804c961258f8242.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting05_hu_93a6df372b04bb1d.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting05.png"
class="gallery-image"
data-flex-grow="225"
data-flex-basis="540px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OS 확인 및 Cloudflared 설치&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Promox는 Debian 리눅스 64bit
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat /etc/os-release&lt;/code&gt; + &lt;code&gt;uname -m&lt;/code&gt; 명령어로 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;root&lt;/code&gt; 사용자로 진행
&lt;ul&gt;
&lt;li&gt;Promox는 sudo가 설치되어 있지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Add&lt;/span&gt; &lt;span class="nx"&gt;cloudflare&lt;/span&gt; &lt;span class="nx"&gt;gpg&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0755&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;keyrings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;fsSL&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//pkg.cloudflare.com/cloudflare-public-v2.gpg | tee /usr/share/keyrings/cloudflare-public-v2.gpg &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Add&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="nx"&gt;repo&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;your&lt;/span&gt; &lt;span class="nx"&gt;apt&lt;/span&gt; &lt;span class="nx"&gt;repositories&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;tee&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;cloudflared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;cloudflared&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;update&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;cloudflared&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;apt-get update 시 &lt;code&gt;enterprise.proxmox.com 패키지 Unauthorized&lt;/code&gt; 오류가 나는 경우&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Promox의 기본 패키지는 유료 구독형이기 때문에 비활성화 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;mv&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="nx"&gt;pve&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;enterprise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt; &lt;span class="nx"&gt;pve&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;enterprise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;disabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;mv&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="nx"&gt;ceph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt; &lt;span class="nx"&gt;ceph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;disabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;일반 패키지 리포 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;/etc/apt/sources.list.d/pve-no-subscription.sources &amp;lt;&amp;lt;&amp;#39;EOF&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Types&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;deb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;URIs&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//download.proxmox.com/debian/pve
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Suites&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;trixie&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Components&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pve&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;subscription&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Signed&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;By&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;/usr/share/keyrings/proxmox-archive-keyring.gpg&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;하단의 토큰 값 유출되지 않도록 유의&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;서버가 시작될때마다 Tunnel이 자동으로 기동되게 할 경우&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;cloudflared&lt;/span&gt; &lt;span class="nx"&gt;service&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;토큰&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;현재 터미널에서만 Tunnel 연결할 경우&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;cloudflared&lt;/span&gt; &lt;span class="nx"&gt;tunnel&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;토큰&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-cloudflare-routes-설정"&gt;2. Cloudflare Routes 설정
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;연동한 tunnel을 통해서 연결할 도메인 경로 및 라우팅 경로 설정&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hostname: 보유 도메인 기입&lt;/li&gt;
&lt;li&gt;Type: HTTPS&lt;/li&gt;
&lt;li&gt;URL: localhost:8006&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting06.png"
width="1899"
height="862"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting06_hu_3134605963e9ece8.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting06_hu_cc9e551410d8722c.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting06.png"
class="gallery-image"
data-flex-grow="220"
data-flex-basis="528px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Promox 서버에서 https://localhost:8006로 접근 시 TLS 해제 필요&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting07.png"
width="1483"
height="753"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting07_hu_dd3e9bb72c0663c6.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting07_hu_5637088d1446b654.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting07.png"
class="gallery-image"
data-flex-grow="196"
data-flex-basis="472px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;여기까지 설정 완료 시 기입한 서브도메인으로 PVE 접근 가능&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-cloudflare-access-설정"&gt;3. Cloudflare Access 설정
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;서브도메인에 대한 인증 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting08.png"
width="1891"
height="834"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting08_hu_8fe68082c1ee78d8.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting08_hu_6b9e1c9035e05ed4.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting08.png"
class="gallery-image"
data-flex-grow="226"
data-flex-basis="544px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting09.png"
width="1878"
height="889"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting09_hu_bcb751c2f18ff6b9.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting09_hu_86c3b5f3a5e1f7b0.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting09.png"
class="gallery-image"
data-flex-grow="211"
data-flex-basis="506px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Self-hosted 설명에 나와 있듯이 Policy 먼저 생성&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting10.png"
width="1878"
height="881"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting10_hu_59e4d92e1d7b35b5.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting10_hu_e69b4e984d2c87d9.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting10.png"
class="gallery-image"
data-flex-grow="213"
data-flex-basis="511px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PVE 접속 도메인 접근 시 Email 인증하도록 Policy 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting11.png"
width="1410"
height="811"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting11_hu_72a815eebfe7db60.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting11_hu_63c32a375dd6d0d1.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting11.png"
class="gallery-image"
data-flex-grow="173"
data-flex-basis="417px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;설정한 Policy 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting12.png"
width="1080"
height="886"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting12_hu_ba003a3f09e176f9.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting12_hu_34f39429bee2bfce.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting12.png"
class="gallery-image"
data-flex-grow="121"
data-flex-basis="292px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PVE 접속 도메인 접근 시 이메일 인증 요구하는 화면 출력 확인&lt;/li&gt;
&lt;li&gt;설정 완료!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-promox-인바운드-접근-차단"&gt;3. Promox 인바운드 접근 차단
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare Tunnel이 뚫렸기 때문에, 기존에 anyopen되어 있던 Promox 공인 IP에 대한 접근을 전부 차단&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zero-Inbound 설정&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PVE 콘솔 → Datacenter → Firewall → Options → Firewall 활성화&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting13.png"
width="1920"
height="703"
srcset="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting13_hu_f412b33bd12e6a28.png 480w, https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/CloudflareTunnelSetting13_hu_5e5ad7d123a12843.png 1024w"
loading="lazy"
alt="CloudflareTunnelSetting13.png"
class="gallery-image"
data-flex-grow="273"
data-flex-basis="655px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;설정 즉시 공인 IP를 통한 PVE 콘솔 차단 완료!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="결과"&gt;결과
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;홈서버로서의 취약한 보안 조치 완료
&lt;ul&gt;
&lt;li&gt;홈 공인IP 숨기기&lt;/li&gt;
&lt;li&gt;관리자용 페이지 접근 시 이메일 인증 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>홈서버 접근 용도로 Cloudflare Tunnel을 쓰는 이유</title><link>https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84-%EC%A0%91%EA%B7%BC-%EC%9A%A9%EB%8F%84%EB%A1%9C-cloudflare-tunnel%EC%9D%84-%EC%93%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0/</link><pubDate>Thu, 05 Feb 2026 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84-%EC%A0%91%EA%B7%BC-%EC%9A%A9%EB%8F%84%EB%A1%9C-cloudflare-tunnel%EC%9D%84-%EC%93%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0/</guid><description>&lt;blockquote&gt;
&lt;p&gt;외부에서 홈서버에 안전하게 접근하기 위한 설정&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;홈서버를 디폴트 상태로 외부에서 접근하기 위해선 IP와 Port로 접근이 필요하다.&lt;/p&gt;
&lt;p&gt;클라우드라면 Security Group / ACL 등등으로 제어가 쉽기 때문에 상관이 없지만, 홈서버는 집에서 사용하는 공유기 공인 IP를 외부에 오픈해야하기 때문에 보안적으로 위험하다.&lt;/p&gt;
&lt;p&gt;기본적으로 홈 IP는 AnyOpen되어 있고, 외부에서 접근한다는 것 자체가 Wifi든 모바일이든 매번 접근하는 IP가 가변적이기 때문에 IP로 접근을 차단하는 것에도 무리가 있다.&lt;/p&gt;
&lt;p&gt;특히 Proxmox 관리 콘솔(PVE)은 관리자 권한 탈취될 시 홈 네트워크 전체에 대한 통제권을 넘길 수 있기 때문에 매우 위험하다.&lt;/p&gt;
&lt;p&gt;따라서 &lt;code&gt;Cloudflare Tunnel&lt;/code&gt;로 공인 IP를 숨기고, &lt;code&gt;Cloudflare Access&lt;/code&gt;로 인증된 사용자만 접근할 수 있게 하려고 한다.&lt;/p&gt;
&lt;h2 id="1-cloudflare-tunnel"&gt;&lt;strong&gt;1. Cloudflare Tunnel&lt;/strong&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;IP와 포트를 공개하지 않고도 외부에서 서버로 접속할 수 있게 하는 서비스&lt;/li&gt;
&lt;li&gt;외부에서 Cloudflare를 거쳐서 서버에 접속&lt;/li&gt;
&lt;li&gt;기존 인바운드+포트 포워딩 기반 접근과 다른 아웃바운드 기반 리버스 프록시 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cloudflare-tunnel을-쓰는-이유"&gt;Cloudflare Tunnel을 쓰는 이유
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;홈서버는 가정용 공유기에 부여된 공인 IP로 접근해야 하기 때문에 보안에 취약&lt;/li&gt;
&lt;li&gt;기업에서 쓰는 서버들의 경우 WAF, IPS, F/W 등 방어 솔루션이 많지만, 홈서버는 사실상 방어 수단이 전무&lt;/li&gt;
&lt;li&gt;Cloudflare를 거치면서 레이턴시가 늘어나더라도, 홈서버는 보안이 최우선&lt;/li&gt;
&lt;li&gt;따라서 Zero-Inbound를 유지하고도 운영이 가능한 Cloudflare Tunnel 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="기존-포트포워딩-방식"&gt;&lt;strong&gt;기존 포트포워딩 방식&lt;/strong&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;포트포워딩은 외부에서 들어오는 Inbound 연결을 서버가 직접 받아들이는 구조&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;외부 클라이언트 → 공유기(포트포워딩) → 홈서버
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;이 방식에서는 서버가 외부에서 접근 가능한 상태가 되며, 열려 있는 포트는 스캔이나 공격의 대상이 될 수 있어서 보안적으로 매우 취약&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="cloudflare-tunnel-방식"&gt;Cloudflare Tunnel 방식
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare Tunnel은 서버가 먼저 Cloudflare로 Outbound 연결을 생성&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[항상 유지되는 연결]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;홈서버(cloudflared) → Cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cloudflared&lt;/code&gt; 데몬은 Cloudflare Edge와 여러 개의 TLS 연결을 지속적으로 유지&lt;/li&gt;
&lt;li&gt;이 시점에는 외부 요청이 없어도 연결은 계속 생존&lt;/li&gt;
&lt;li&gt;즉, 요청이 올 때마다 연결을 여는 구조가 아니다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;외부 사용자가 서비스에 접근하면 요청은 먼저 Cloudflare에 도달&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;외부 클라이언트 → Cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;이 단계에서 Cloudflare는 아래 접근 제어를 수행&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cloudflare Access 기반 인증 (로그인, OTP, SSO, 서비스 토큰 등)&lt;/li&gt;
&lt;li&gt;IP, 국가, 정책 기반 접근 제어&lt;/li&gt;
&lt;li&gt;인증 실패 시 요청 차단&lt;/li&gt;
&lt;li&gt;인증과 접근 제어는 홈서버와 분리된 상태에서 Cloudflare가 전담&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;인증 이후 실 연결&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare → 기존 Tunnel → 홈서버
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;인증을 통과한 요청만 이미 열려 있는 터널 연결을 통해 홈서버로 전달됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="2-cloudflare-access"&gt;2. Cloudflare Access
&lt;/h2&gt;&lt;p&gt;Cloudflare tunnel만 사용한다면, 최초 목적 중 공인 IP 숨기기만 가능하다.&lt;/p&gt;
&lt;p&gt;PVE 콘솔에 대한 접근 자체를 막기 위해선 Cloudflare Access를 사용한 인증 절차 도입이 필요하다.&lt;/p&gt;
&lt;h3 id="cloudflare-access-도입-후의-구조"&gt;Cloudflare Access 도입 후의 구조
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;위 Cloudflare Tunnel의 2번째 단계에서 Cloudflare Access 추가&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;외부&lt;/span&gt; &lt;span class="nx"&gt;클라이언트&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nx"&gt;Cloudflare&lt;/span&gt; &lt;span class="nx"&gt;Access&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nx"&gt;Cloudflare&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="정리"&gt;정리
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Cloudflare Tunnel은 요청을 역방향으로 전달하는 Outbound 기반 리버스 프록시 구조&lt;/li&gt;
&lt;li&gt;홈서버 입장에서는 외부 클라이언트와 직접 통신하지 않는다&lt;/li&gt;
&lt;li&gt;Cloudflare와 유지 중인 Outbound 연결만 사용하며, 외부에서 서버로 들어오는 Inbound 포트는 존재하지 않는다&lt;/li&gt;
&lt;li&gt;따라서 Zero-Inbound로 외부에서 서비스 접근이 가능&lt;/li&gt;
&lt;li&gt;내가 외부에서 접근해야 하지만 공개적으로 오픈하면 안 될 경우 Cloudflare Access 사용&lt;/li&gt;
&lt;li&gt;실제 작업 과정은 다음 글 확인&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>홈서버용 Mini PC에 Promox 설치하기</title><link>https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/</link><pubDate>Wed, 04 Feb 2026 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/</guid><description>&lt;blockquote&gt;
&lt;p&gt;개발/인프라/K8S 연습용 홈서버로 Mini PC 구매&lt;/p&gt;
&lt;p&gt;Mini PC에 Proxmox 설치&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mini PC 모델: Chatreey AN3P&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3 id="1-promox-이미지-준비"&gt;1. Promox 이미지 준비
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;ISO 이미지로 설치 가능한 USB를 만들 때 사용
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class="link" href="https://rufus.ie/ko/" target="_blank" rel="noopener"
&gt;https://rufus.ie/ko/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall01.png"
width="711"
height="548"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall01_hu_5378edfa434089d2.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall01_hu_82dfb91e3b728646.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall01.png"
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall02.png"
width="418"
height="542"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall02_hu_fcf09e262d39789b.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall02_hu_b7acb733446a67d3.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall02.png"
class="gallery-image"
data-flex-grow="77"
data-flex-basis="185px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-mini-pc-부팅"&gt;2. Mini PC 부팅
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;미니 PC 부팅하니 바이오스 화면 진입&lt;/li&gt;
&lt;li&gt;가상화 기능을 써야 하니 관련 설정이 정상적인지 확인
&lt;ul&gt;
&lt;li&gt;Advanced → CPU Configuration → &lt;code&gt;SVM&lt;/code&gt; / &lt;code&gt;Virtualization&lt;/code&gt; / &lt;code&gt;AMD-V&lt;/code&gt; 관련 항목은 무조건 &lt;code&gt;Enabled&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall03.png"
width="1536"
height="938"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall03_hu_c530c5f363efb4cd.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall03_hu_a55b2b667cd181de.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall03.png"
class="gallery-image"
data-flex-grow="163"
data-flex-basis="393px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;USB를 통한 Promox 설치 시 막힐 수 있어서 Secure Boot 해제
&lt;ul&gt;
&lt;li&gt;Boot → Boot Configuration → Secure Boot → &lt;code&gt;Disabled&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall04.png"
width="1536"
height="947"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall04_hu_e63ffa2ae97f1eed.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall04_hu_ea90da49a480317.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall04.png"
class="gallery-image"
data-flex-grow="162"
data-flex-basis="389px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boot → Boot Option 순서에서 Promox 설치 USB를 첫번째 순서로 조정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall05.png"
width="1536"
height="950"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall05_hu_22ea9313b0a99fed.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall05_hu_5ee3b02b0327b05b.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall05.png"
class="gallery-image"
data-flex-grow="161"
data-flex-basis="388px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;설정 저장 및 재기동&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-promox-설정"&gt;3. Promox 설정
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;부팅 후 Promox 기본 설정대로 설치 진행&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;인터페이스는 일단 DHCP로 설정&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;모든 설정 후 재부팅하면 설치 완료&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall06.png"
width="600"
height="450"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall06_hu_db008771b6443246.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall06_hu_6c45beabc2672ea8.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall06.png"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-promox-pve-접근-확인"&gt;4. Promox PVE 접근 확인
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;재부팅하면 Promox CLI로 부팅됨
&lt;ul&gt;
&lt;li&gt;ID는 root, PWD는 설정한 비밀번호로 로그인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;CLI에 출력되는 공인IP:Port로 외부에서 PVE(Promox 관리 콘솔) 접근 가능
&lt;ul&gt;
&lt;li&gt;PVE 콘솔 접근 정보는 계정 접근 정보와 동일&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;접근 성공!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall07.png"
width="1917"
height="899"
srcset="https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall07_hu_55aae682856bbcda.png 480w, https://joonlog.github.io/p/%ED%99%88%EC%84%9C%EB%B2%84%EC%9A%A9-mini-pc%EC%97%90-promox-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/MiniPCPromoxInstall07_hu_fff3f9625fdb7595.png 1024w"
loading="lazy"
alt="MiniPCPromoxInstall07.png"
class="gallery-image"
data-flex-grow="213"
data-flex-basis="511px"
&gt;&lt;/p&gt;</description></item></channel></rss>