<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>GEELL</title>
    <link>https://geell.tistory.com/</link>
    <description>맹로그 좋은것만 드려요.</description>
    <language>ko</language>
    <pubDate>Tue, 7 Apr 2026 12:19:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>GEELL</managingEditor>
    <image>
      <title>GEELL</title>
      <url>https://tistory1.daumcdn.net/tistory/5788147/attach/1ac7ad493d92441d94df5a91dbb8a0de</url>
      <link>https://geell.tistory.com</link>
    </image>
    <item>
      <title>MSTP 이해하기</title>
      <link>https://geell.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MSTP란&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;여러 VLAN을 하나의 STP 그룹으로 묶는것 기술을 말한다.&lt;br /&gt;&lt;br /&gt;예를들어&amp;nbsp;VLAN&amp;nbsp;10&amp;nbsp;20&amp;nbsp;30&amp;nbsp;50&amp;nbsp;60&amp;nbsp;70&amp;nbsp;이&amp;nbsp;있다고&amp;nbsp;가정해보자. &lt;br /&gt;&lt;br /&gt;VLAN&amp;nbsp;10&amp;nbsp;20&amp;nbsp;30&amp;nbsp;-&amp;gt;&amp;nbsp;은&amp;nbsp;STP&amp;nbsp;1 &lt;br /&gt;VLAN&amp;nbsp;50&amp;nbsp;60&amp;nbsp;70&amp;nbsp;-&amp;gt;&amp;nbsp;은&amp;nbsp;STP&amp;nbsp;2 &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;0 0 []&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 여러 VLAN을 하나의 STP 트리로 관리하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;또한 MSTP는 RSTP기반이기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;RSTP와 호환되며&lt;/u&gt;&amp;nbsp;수렴 속도는 RSTP 수준이다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;MSTP는&amp;nbsp;아래&amp;nbsp;와&amp;nbsp;같은&amp;nbsp;기능들로&amp;nbsp;동작한다.&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Region&lt;/b&gt; &lt;b&gt;(기준 : 스위치)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;같은 MST 설정을 가진 스위치들의 그룹을 말한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Region으로 인식되기 위해서는 아래 값이 모두 동일해야 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Region name&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Revision number&lt;/span&gt;&lt;br /&gt;&lt;span&gt;VLAN mapping&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;예&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SW1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SW2 -&amp;gt; Region A&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SW3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;위 스위치들은 같은 MST 설정을 가지고 있기 때문에&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region A로 묶인다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;Instance (기준 : VLAN)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;여러 VLAN을 묶어 하나의 STP 트리를 만드는 단위이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;역할&lt;/span&gt;&lt;br /&gt;&lt;span&gt;여러 VLAN을 하나의 Spanning Tree로 관리&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;예&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Instance 1 -&amp;gt; VLAN 10, 20&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Instance 2 -&amp;gt; VLAN 30, 40&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Instance 3 -&amp;gt; VLAN 50&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;결과&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Instance 개수 = STP 트리 개수&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;IST (Internal Spanning Tree)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Region 내부에서 동작하는 STP이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;역할&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region 내부 루프 방지&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region 내부 Root 선출&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;예&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region A&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;SW1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;|&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SW2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;|&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SW3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;CST (Common Spanning Tree)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Region과 Region 사이에서 동작하는 STP이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;예&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region A --- Region B&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;역할&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region 간 루프 방지&lt;/span&gt;&lt;br /&gt;&lt;span&gt;전체 경로 결정&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;CIST (Common and Internal Spanning Tree)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;CST와 IST를 합친 전체 Spanning Tree 구조이다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;즉 네트워크 전체 STP를 의미한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;CIST&lt;/span&gt;&lt;br /&gt;&lt;span&gt;CST (Region 간)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;IST (Region 내부)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;Root 관련 용어&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;CIST Root Bridge&lt;/span&gt;&lt;br /&gt;&lt;span&gt;전체 네트워크 Root Bridge&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Regional Root Bridge&lt;/span&gt;&lt;br /&gt;&lt;span&gt;각 Region을 대표하는 Root 스위치&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;전체 구조 예시&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blJPUR/dJMcaioXxOV/MHhESYKXGqlnDUjTYVXPhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blJPUR/dJMcaioXxOV/MHhESYKXGqlnDUjTYVXPhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blJPUR/dJMcaioXxOV/MHhESYKXGqlnDUjTYVXPhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblJPUR%2FdJMcaioXxOV%2FMHhESYKXGqlnDUjTYVXPhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;192&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;정리&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Region 내부 -&amp;gt; IST&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Region 사이 -&amp;gt; CST&lt;/span&gt;&lt;br /&gt;&lt;span&gt;전체 구조 -&amp;gt; CIST&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;PVSTP와 차이&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;PVSTP (Per VLAN Spanning Tree)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;MSTP와 달리 VLAN을 그룹으로 묶지 않는다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;VLAN마다 STP 트리를 하나씩 만든다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;예&lt;/span&gt;&lt;br /&gt;&lt;span&gt;VLAN 10 -&amp;gt; STP1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;VLAN 20 -&amp;gt; STP2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;VLAN 30 -&amp;gt; STP3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;핵심 차이&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;PVSTP&lt;/span&gt;&lt;br /&gt;&lt;span&gt;VLAN 1개 = STP 1개&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;MSTP&lt;/span&gt;&lt;br /&gt;&lt;span&gt;여러 VLAN = STP 1개&lt;/span&gt;&lt;/p&gt;</description>
      <category>MSTP</category>
      <category>PVST</category>
      <category>pvstp</category>
      <category>STP</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/73</guid>
      <comments>https://geell.tistory.com/73#entry73comment</comments>
      <pubDate>Fri, 6 Mar 2026 18:00:16 +0900</pubDate>
    </item>
    <item>
      <title>리눅스  한개의 인터페이스에 여러 IP추가 방법</title>
      <link>https://geell.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 서버에서 한개의 인터페이스(NIC)에 여러개의 IP를 추가하는 방법에 대해 적어 보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아래부터 enp1s0f2라는 인터페이스에 ip120개를 추가하는 예시로 설명을 드리겠습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;enp1s0f2라는 인터페이스에 19.19.19.101/24 ip를 추가 하는 명령어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;ip addr add 19.19.19.101/24 dev enp1s0f2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것을 ip만 다르게 반복해서 추가하면됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 추가해야할&amp;nbsp; ip 개수가 많다면 스크랩트를 돌려도 무방합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;19.19.19.100 ~ 19.19.19.219까지 총 120개의 ip를 한번에 추가하는 명령어 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어디 파일에 추가할 필요없이 리눅스 서버에 명령어 치듯이 적고 엔터를 누르면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt; for&amp;nbsp;i&amp;nbsp;in&amp;nbsp;{100..219};&amp;nbsp;do &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&amp;nbsp;&amp;nbsp;ip&amp;nbsp;addr&amp;nbsp;add&amp;nbsp;19.19.19.$i/24&amp;nbsp;dev&amp;nbsp;enp1s0f2 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;done&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkQIwz/dJMcafMfDOX/Zi23kGxYvSpgi54fNOVdrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkQIwz/dJMcafMfDOX/Zi23kGxYvSpgi54fNOVdrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkQIwz/dJMcafMfDOX/Zi23kGxYvSpgi54fNOVdrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkQIwz%2FdJMcafMfDOX%2FZi23kGxYvSpgi54fNOVdrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;433&quot; height=&quot;76&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가 후 잘 들어갔는지 확인 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;ip addr show&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;1331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDFYBa/dJMcaaRIn8w/V5w6zF4UyQoSPUvi2dOJhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDFYBa/dJMcaaRIn8w/V5w6zF4UyQoSPUvi2dOJhK/img.png&quot; data-alt=&quot;추가된 120개의 ip&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDFYBa/dJMcaaRIn8w/V5w6zF4UyQoSPUvi2dOJhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDFYBa%2FdJMcaaRIn8w%2FV5w6zF4UyQoSPUvi2dOJhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;1331&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;1331&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;추가된 120개의 ip&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 완료 후 추가 한 ip들을 한번에 삭제하는 명령어 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;enp1s0f2 인터페이스에 ip를 전부 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt; ip addr flush dev enp1s0f2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YHL4R/dJMcagEoE1L/uulY0U1jGJf2iFg2lTNGjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YHL4R/dJMcagEoE1L/uulY0U1jGJf2iFg2lTNGjk/img.png&quot; data-alt=&quot;삭제 되어 ip가 없어진 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YHL4R/dJMcagEoE1L/uulY0U1jGJf2iFg2lTNGjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYHL4R%2FdJMcagEoE1L%2FuulY0U1jGJf2iFg2lTNGjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;914&quot; height=&quot;954&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;삭제 되어 ip가 없어진 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>네트워크</category>
      <category>Interface</category>
      <category>IP</category>
      <category>Linux</category>
      <category>Liunx</category>
      <category>Server</category>
      <category>리눅스</category>
      <category>명령어</category>
      <category>서버</category>
      <category>인터페이스</category>
      <category>추가</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/72</guid>
      <comments>https://geell.tistory.com/72#entry72comment</comments>
      <pubDate>Tue, 3 Feb 2026 10:52:40 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 KVM 실행 중인지 확인 과정</title>
      <link>https://geell.tistory.com/71</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;왜&amp;nbsp;KVM&amp;nbsp;설정을&amp;nbsp;확인했나? &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;상황&amp;nbsp;정리 &lt;br /&gt;&lt;br /&gt;PNOS는&amp;nbsp;Linux&amp;nbsp;기반&amp;nbsp;커널이다. &lt;br /&gt;&lt;br /&gt;취약점&amp;nbsp;설명에&amp;nbsp;KVM&amp;nbsp;/&amp;nbsp;가상화&amp;nbsp;기능이&amp;nbsp;전제&amp;nbsp;조건으로&amp;nbsp;등장한다. &lt;br /&gt;&lt;br /&gt;보안&amp;nbsp;점검에서는&amp;nbsp;항상&amp;nbsp;이런&amp;nbsp;질문을&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;&amp;ldquo;리눅스면,&amp;nbsp;그&amp;nbsp;기능도&amp;nbsp;있는&amp;nbsp;거&amp;nbsp;아니냐?&amp;rdquo; &lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;해야&amp;nbsp;할&amp;nbsp;일은&amp;nbsp;하나다. &lt;br /&gt;&lt;br /&gt;&amp;ldquo;PNOS&amp;nbsp;커널에&amp;nbsp;KVM&amp;nbsp;가상화&amp;nbsp;기능이&amp;nbsp;실제로&amp;nbsp;포함되어&amp;nbsp;있냐?&amp;rdquo; &lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;&amp;lsquo;커널&amp;nbsp;설정&amp;rsquo;을&amp;nbsp;확인해야&amp;nbsp;하나? &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linux에서&amp;nbsp;기능은&amp;nbsp;다음&amp;nbsp;3단계로&amp;nbsp;나뉜다. &lt;br /&gt;&lt;br /&gt;단계&amp;nbsp;/&amp;nbsp;의미 &lt;br /&gt;①&amp;nbsp;CPU&amp;nbsp;지원&amp;nbsp;/&amp;nbsp;하드웨어가&amp;nbsp;가능한가 &lt;br /&gt;②&amp;nbsp;커널&amp;nbsp;설정&amp;nbsp;/&amp;nbsp;커널에&amp;nbsp;기능을&amp;nbsp;포함했는가 &lt;br /&gt;③&amp;nbsp;실행&amp;nbsp;상태&amp;nbsp;/&amp;nbsp;실제로&amp;nbsp;사용&amp;nbsp;중인가 &lt;br /&gt;&lt;br /&gt;취약점은&amp;nbsp;②번이&amp;nbsp;있어야만&amp;nbsp;발생&amp;nbsp;가능하다. &lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;우리는 &lt;br /&gt;&amp;ldquo;커널에&amp;nbsp;KVM&amp;nbsp;기능이&amp;nbsp;포함되어&amp;nbsp;있는지&amp;rdquo;를&amp;nbsp;확인했다. &lt;br /&gt;&lt;br /&gt;/proc/config.gz&amp;nbsp;는&amp;nbsp;무엇인가? &lt;br /&gt;&lt;br /&gt;쉽게&amp;nbsp;말하면 &lt;br /&gt;&amp;ldquo;현재&amp;nbsp;PNOS가&amp;nbsp;사용하는&amp;nbsp;리눅스&amp;nbsp;커널을&amp;nbsp;만들&amp;nbsp;때&amp;nbsp;선택한&amp;nbsp;설정표&amp;rdquo;다. &lt;br /&gt;&lt;br /&gt;커널을&amp;nbsp;빌드할&amp;nbsp;때&amp;nbsp;수천&amp;nbsp;개&amp;nbsp;옵션을&amp;nbsp;선택한다. &lt;br /&gt;그&amp;nbsp;최종&amp;nbsp;결과를&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;커널이&amp;nbsp;그대로&amp;nbsp;가지고&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;그&amp;nbsp;파일이&amp;nbsp;/proc/config.gz&amp;nbsp;다. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;파일을&amp;nbsp;보면 &lt;br /&gt;어떤&amp;nbsp;기능이&amp;nbsp;들어&amp;nbsp;있고 &lt;br /&gt;어떤&amp;nbsp;기능이&amp;nbsp;아예&amp;nbsp;빠졌는지를&amp;nbsp;정확히&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;zcat&amp;nbsp;을&amp;nbsp;사용했나? &lt;br /&gt;&lt;br /&gt;/proc/config.gz&amp;nbsp;는&amp;nbsp;압축된&amp;nbsp;파일(.gz)이다. &lt;br /&gt;&lt;br /&gt;그래서 &lt;br /&gt;&lt;br /&gt;zcat&amp;nbsp;/proc/config.gz는 &lt;br /&gt;&lt;br /&gt;&amp;ldquo;압축을&amp;nbsp;풀어서&amp;nbsp;내용&amp;nbsp;전체를&amp;nbsp;보여달라&amp;rdquo;는&amp;nbsp;의미다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;grep&amp;nbsp;을&amp;nbsp;같이&amp;nbsp;사용했나? &lt;br /&gt;&lt;br /&gt;커널&amp;nbsp;설정은&amp;nbsp;수만&amp;nbsp;줄이다. &lt;br /&gt;전부&amp;nbsp;보는&amp;nbsp;건&amp;nbsp;의미가&amp;nbsp;없다. &lt;br /&gt;&lt;br /&gt;그래서 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;KVM을&amp;nbsp;사용해서 &lt;br /&gt;&lt;br /&gt;&amp;ldquo;KVM&amp;nbsp;관련된&amp;nbsp;줄만&amp;nbsp;골라서&amp;nbsp;보자&amp;rdquo;는&amp;nbsp;목적이다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;각&amp;nbsp;명령어를&amp;nbsp;왜&amp;nbsp;썼는지&amp;nbsp;설명 &lt;br /&gt;&lt;br /&gt;HAVE_KVM&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;zcat&amp;nbsp;/proc/config.gz&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;HAVE_KVM &lt;br /&gt;&lt;br /&gt;목적 &lt;br /&gt;CPU가&amp;nbsp;KVM을&amp;nbsp;지원할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;구조인지&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;결과 &lt;br /&gt;CONFIG_HAVE_KVM=y &lt;br /&gt;&lt;br /&gt;의미 &lt;br /&gt;하드웨어&amp;nbsp;수준에서는&amp;nbsp;KVM&amp;nbsp;사용이&amp;nbsp;가능함 &lt;br /&gt;&lt;br /&gt;아직&amp;nbsp;기능이&amp;nbsp;포함되었다는&amp;nbsp;뜻은&amp;nbsp;아니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KVM&amp;nbsp;기능&amp;nbsp;자체&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;zcat&amp;nbsp;/proc/config.gz&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;&quot;CONFIG_KVM=&quot; &lt;br /&gt;&lt;br /&gt;목적 &lt;br /&gt;KVM&amp;nbsp;기능이&amp;nbsp;커널에&amp;nbsp;실제로&amp;nbsp;포함되어&amp;nbsp;있는지&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;결과 &lt;br /&gt;출력&amp;nbsp;없음 &lt;br /&gt;&lt;br /&gt;의미 &lt;br /&gt;KVM&amp;nbsp;기능이&amp;nbsp;커널에&amp;nbsp;포함되지&amp;nbsp;않음 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;가상화&amp;nbsp;전체&amp;nbsp;기능&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;zcat&amp;nbsp;/proc/config.gz&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;CONFIG_VIRTUALIZATION &lt;br /&gt;&lt;br /&gt;목적 &lt;br /&gt;KVM은&amp;nbsp;가상화&amp;nbsp;기능의&amp;nbsp;일부이므로 &lt;br /&gt;상위&amp;nbsp;옵션이&amp;nbsp;켜져&amp;nbsp;있는지&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;결과 &lt;br /&gt;&lt;br /&gt;CONFIG_VIRTUALIZATION&amp;nbsp;is&amp;nbsp;not&amp;nbsp;set &lt;br /&gt;&lt;br /&gt;의미 &lt;br /&gt;가상화&amp;nbsp;기능&amp;nbsp;전체가&amp;nbsp;커널에서&amp;nbsp;제외됨 &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;과정을&amp;nbsp;한&amp;nbsp;줄로&amp;nbsp;요약하면 &lt;br /&gt;&lt;br /&gt;PNOS가&amp;nbsp;리눅스&amp;nbsp;기반이라&amp;nbsp;가상화&amp;nbsp;기능이&amp;nbsp;있을&amp;nbsp;가능성을&amp;nbsp;배제하지&amp;nbsp;않고, &lt;br /&gt;커널&amp;nbsp;설정&amp;nbsp;파일을&amp;nbsp;직접&amp;nbsp;확인해 &lt;br /&gt;가상화&amp;nbsp;기능&amp;nbsp;포함&amp;nbsp;여부를&amp;nbsp;검증했다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;이게&amp;nbsp;보안&amp;nbsp;점검에서&amp;nbsp;인정되는가? &lt;br /&gt;&lt;br /&gt;보안&amp;nbsp;점검에서&amp;nbsp;근거의&amp;nbsp;신뢰도는&amp;nbsp;다음&amp;nbsp;순서다. &lt;br /&gt;&lt;br /&gt;추측 &lt;br /&gt;&lt;br /&gt;관리&amp;nbsp;메뉴&amp;nbsp;설정 &lt;br /&gt;&lt;br /&gt;커널&amp;nbsp;설정&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;/proc/config.gz&amp;nbsp;확인은&amp;nbsp;최상위&amp;nbsp;근거다. &lt;br /&gt;제조사&amp;nbsp;설명보다&amp;nbsp;강한&amp;nbsp;증빙이&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;최종&amp;nbsp;결론 &lt;br /&gt;&lt;br /&gt;PNOS는&amp;nbsp;Linux&amp;nbsp;기반이다. &lt;br /&gt;CPU는&amp;nbsp;가상화&amp;nbsp;기능을&amp;nbsp;지원할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;하지만 &lt;br /&gt;가상화&amp;nbsp;옵션이&amp;nbsp;없고 &lt;br /&gt;KVM&amp;nbsp;기능도&amp;nbsp;없다. &lt;br /&gt;&lt;br /&gt;따라서 &lt;br /&gt;해당&amp;nbsp;취약점이&amp;nbsp;발생할&amp;nbsp;구조&amp;nbsp;자체가&amp;nbsp;없다.&lt;/p&gt;</description>
      <category>네트워크</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/71</guid>
      <comments>https://geell.tistory.com/71#entry71comment</comments>
      <pubDate>Thu, 8 Jan 2026 11:32:22 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 grep</title>
      <link>https://geell.tistory.com/70</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;grep이 하는 일&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;grep은&amp;nbsp;텍스트에서&amp;nbsp;특정&amp;nbsp;문자열이&amp;nbsp;들어&amp;nbsp;있는&amp;nbsp;줄만&amp;nbsp;골라서&amp;nbsp;출력하는&amp;nbsp;명령어다. &lt;br /&gt;파일이든,&amp;nbsp;다른&amp;nbsp;명령의&amp;nbsp;출력이든&amp;nbsp;상관없다. &lt;br /&gt;항상&amp;nbsp;&amp;ldquo;줄&amp;nbsp;단위&amp;rdquo;로&amp;nbsp;동작한다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;기본&amp;nbsp;형태&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;파일을&amp;nbsp;직접&amp;nbsp;검색할&amp;nbsp;때 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;찾을문자&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;다른&amp;nbsp;명령&amp;nbsp;결과를&amp;nbsp;검색할&amp;nbsp;때&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;명령&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;찾을문자 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;여기서&amp;nbsp;|&amp;nbsp;는&amp;nbsp;쉘&amp;nbsp;파이프다. &lt;br /&gt;앞&amp;nbsp;명령의&amp;nbsp;결과를&amp;nbsp;grep에게&amp;nbsp;넘긴다는&amp;nbsp;뜻이다. &lt;br /&gt;&lt;br /&gt;|&amp;nbsp;는&amp;nbsp;두&amp;nbsp;종류가&amp;nbsp;있다 &lt;br /&gt;&lt;br /&gt;3-1.&amp;nbsp;쉘&amp;nbsp;파이프&amp;nbsp;| &lt;br /&gt;&lt;br /&gt;명령과&amp;nbsp;명령&amp;nbsp;사이에&amp;nbsp;있는&amp;nbsp;|&amp;nbsp;는&amp;nbsp;쉘&amp;nbsp;기능이다. &lt;br /&gt;&lt;br /&gt;zcat&amp;nbsp;/proc/config.gz&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;KVM &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;의미 &lt;br /&gt;zcat이&amp;nbsp;출력한&amp;nbsp;내용을&amp;nbsp;grep에게&amp;nbsp;넘기고, &lt;br /&gt;grep이&amp;nbsp;KVM이&amp;nbsp;들어간&amp;nbsp;줄만&amp;nbsp;출력한다. &lt;br /&gt;&lt;br /&gt;3-2.&amp;nbsp;grep&amp;nbsp;검색&amp;nbsp;조건&amp;nbsp;안의&amp;nbsp;| &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;검색&amp;nbsp;문자열&amp;nbsp;안에&amp;nbsp;있는&amp;nbsp;|&amp;nbsp;는&amp;nbsp;&amp;ldquo;또는(OR)&amp;rdquo;&amp;nbsp;의미다. &lt;br /&gt;이건&amp;nbsp;grep의&amp;nbsp;정규식&amp;nbsp;문법이다. &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;-E&amp;nbsp;&quot;KVM|VIRTUALIZATION&quot;&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;의미 &lt;br /&gt;KVM이&amp;nbsp;들어&amp;nbsp;있거나 &lt;br /&gt;VIRTUALIZATION이&amp;nbsp;들어&amp;nbsp;있는&amp;nbsp;줄을&amp;nbsp;출력한다. &lt;br /&gt;&lt;br /&gt;-E&amp;nbsp;옵션은&amp;nbsp;언제&amp;nbsp;필요하나 &lt;br /&gt;&lt;br /&gt;grep에는&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;동작&amp;nbsp;모드가&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;기본&amp;nbsp;grep &lt;br /&gt;&lt;br /&gt;|&amp;nbsp;를&amp;nbsp;그냥&amp;nbsp;문자로&amp;nbsp;인식한다 &lt;br /&gt;&lt;br /&gt;OR&amp;nbsp;의미가&amp;nbsp;아니다 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;&quot;KVM|VIRTUALIZATION&quot;&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이건 &lt;br /&gt;KVM|VIRTUALIZATION&amp;nbsp;이라는&amp;nbsp;문자열을&amp;nbsp;그대로&amp;nbsp;찾는다. &lt;br /&gt;&lt;br /&gt;확장&amp;nbsp;grep&amp;nbsp;(-E) &lt;br /&gt;&lt;br /&gt;|&amp;nbsp;를&amp;nbsp;OR&amp;nbsp;로&amp;nbsp;인식한다 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;-E&amp;nbsp;&quot;KVM|VIRTUALIZATION&quot;&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이건 &lt;br /&gt;KVM&amp;nbsp;또는&amp;nbsp;VIRTUALIZATION&amp;nbsp;을&amp;nbsp;의미한다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;결론&lt;/b&gt; &lt;br /&gt;grep에서&amp;nbsp;|&amp;nbsp;를&amp;nbsp;OR&amp;nbsp;의미로&amp;nbsp;쓰려면&amp;nbsp;-E&amp;nbsp;는&amp;nbsp;필수다. &lt;br /&gt;&lt;br /&gt;따옴표를&amp;nbsp;쓰는&amp;nbsp;이유 &lt;br /&gt;&lt;br /&gt;따옴표는&amp;nbsp;쉘이&amp;nbsp;특수문자를&amp;nbsp;먼저&amp;nbsp;해석하지&amp;nbsp;못하게&amp;nbsp;막아준다. &lt;br /&gt;실무에서는&amp;nbsp;검색&amp;nbsp;문자열에&amp;nbsp;따옴표를&amp;nbsp;항상&amp;nbsp;쓰는&amp;nbsp;게&amp;nbsp;안전하다. &lt;br /&gt;&lt;br /&gt;자주&amp;nbsp;쓰는&amp;nbsp;옵션 &lt;br /&gt;&lt;br /&gt;대소문자&amp;nbsp;무시 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;-i&amp;nbsp;kvm&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;해당&amp;nbsp;줄&amp;nbsp;제외 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;-v&amp;nbsp;&quot;^#&quot; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;줄&amp;nbsp;번호&amp;nbsp;출력 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;-n&amp;nbsp;KVM&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;정규식&amp;nbsp;없이&amp;nbsp;문자열&amp;nbsp;그대로&amp;nbsp;검색 &lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;-F&amp;nbsp;&quot;KVM|VIRTUALIZATION&quot;&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;grep&amp;nbsp;결과&amp;nbsp;해석 &lt;br /&gt;&lt;br /&gt;grep은&amp;nbsp;결과가&amp;nbsp;없으면&amp;nbsp;아무것도&amp;nbsp;출력하지&amp;nbsp;않는다. &lt;br /&gt;이건&amp;nbsp;오류가&amp;nbsp;아니라&amp;nbsp;&amp;ldquo;없다&amp;rdquo;는&amp;nbsp;뜻이다. &lt;br /&gt;&lt;br /&gt;출력&amp;nbsp;있음 &lt;br /&gt;해당&amp;nbsp;문자열이&amp;nbsp;존재한다. &lt;br /&gt;&lt;br /&gt;출력&amp;nbsp;없음 &lt;br /&gt;해당&amp;nbsp;문자열이&amp;nbsp;존재하지&amp;nbsp;않는다. &lt;br /&gt;&lt;br /&gt;PNOS&amp;nbsp;커널&amp;nbsp;설정&amp;nbsp;확인&amp;nbsp;예제 &lt;br /&gt;&lt;br /&gt;zcat&amp;nbsp;/proc/config.gz&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;-E&amp;nbsp;&quot;CONFIG_KVM|CONFIG_VIRTUALIZATION&quot; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;명령은 &lt;br /&gt;커널&amp;nbsp;설정&amp;nbsp;중에서 &lt;br /&gt;KVM&amp;nbsp;관련&amp;nbsp;줄이거나 &lt;br /&gt;가상화&amp;nbsp;관련&amp;nbsp;줄만&amp;nbsp;보여준다. &lt;br /&gt;&lt;br /&gt;결과가 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;CONFIG_VIRTUALIZATION&amp;nbsp;is&amp;nbsp;not&amp;nbsp;set &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이면 &lt;br /&gt;가상화&amp;nbsp;기능이&amp;nbsp;커널에&amp;nbsp;포함되지&amp;nbsp;않았다는&amp;nbsp;뜻이다. &lt;br /&gt;&lt;br /&gt;아무&amp;nbsp;출력도&amp;nbsp;없으면 &lt;br /&gt;해당&amp;nbsp;옵션&amp;nbsp;자체가&amp;nbsp;존재하지&amp;nbsp;않는다. &lt;br /&gt;&lt;br /&gt;핵심&amp;nbsp;요약&amp;nbsp;문장 &lt;br /&gt;&lt;br /&gt;grep은&amp;nbsp;줄&amp;nbsp;필터다. &lt;br /&gt;|&amp;nbsp;를&amp;nbsp;OR&amp;nbsp;의미로&amp;nbsp;쓰려면&amp;nbsp;-E&amp;nbsp;는&amp;nbsp;반드시&amp;nbsp;필요하다. &lt;br /&gt;명령&amp;nbsp;사이의&amp;nbsp;|&amp;nbsp;와&amp;nbsp;grep&amp;nbsp;안의&amp;nbsp;|&amp;nbsp;는&amp;nbsp;완전히&amp;nbsp;다르다. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;상태면&amp;nbsp;grep은&amp;nbsp;이제&amp;nbsp;&amp;ldquo;이해한&amp;nbsp;상태&amp;rdquo;다. &lt;br /&gt;다음으로&amp;nbsp;awk,&amp;nbsp;sed,&amp;nbsp;wc&amp;nbsp;같은&amp;nbsp;걸로&amp;nbsp;넘어가도&amp;nbsp;된다.&lt;/p&gt;</description>
      <category>네트워크</category>
      <category>grep</category>
      <category>Linux</category>
      <category>리눅스</category>
      <category>찾기</category>
      <category>커널</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/70</guid>
      <comments>https://geell.tistory.com/70#entry70comment</comments>
      <pubDate>Thu, 8 Jan 2026 11:24:17 +0900</pubDate>
    </item>
    <item>
      <title>암호화 알고리즘, 무결성 체크 알고리즘</title>
      <link>https://geell.tistory.com/69</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;AES,&amp;nbsp;CAMELLIA,&amp;nbsp;CHACHA20는&amp;nbsp;모두&amp;nbsp;암호화&amp;nbsp;알고리즘(Encryption&amp;nbsp;Algorithm) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AES&amp;nbsp;&amp;rarr;&amp;nbsp;Advanced&amp;nbsp;Encryption&amp;nbsp;Standard,&amp;nbsp;블록&amp;nbsp;암호 &lt;br /&gt;&lt;br /&gt;CAMELLIA&amp;nbsp;&amp;rarr;&amp;nbsp;블록&amp;nbsp;암호,&amp;nbsp;AES와&amp;nbsp;비슷하게&amp;nbsp;TLS에서&amp;nbsp;사용 &lt;br /&gt;&lt;br /&gt;CHACHA20 &amp;rarr; 스트림 암호 + Poly1305(MAC) 결합, 빠르고 안전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;요약 &lt;br /&gt;암호화&amp;nbsp;알고리즘&amp;nbsp;=&amp;nbsp;AES&amp;nbsp;/&amp;nbsp;CAMELLIA&amp;nbsp;/&amp;nbsp;CHACHA20 &lt;br /&gt;운영모드 = GCM / CCM / Poly1305&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;SHA(Secure Hash Algorithm)는 해시 함수(Hash Function) &lt;br /&gt;&lt;br /&gt;역할:&amp;nbsp;데이터&amp;nbsp;무결성&amp;nbsp;체크,&amp;nbsp;메시지&amp;nbsp;변경&amp;nbsp;여부&amp;nbsp;확인&amp;nbsp;&amp;rarr;&amp;nbsp;MAC(Message&amp;nbsp;Authentication&amp;nbsp;Code)에&amp;nbsp;사용 &lt;br /&gt;&lt;br /&gt;특징:&amp;nbsp;입력&amp;nbsp;길이와&amp;nbsp;상관없이&amp;nbsp;고정&amp;nbsp;길이&amp;nbsp;출력(예:&amp;nbsp;SHA256&amp;nbsp;&amp;rarr;&amp;nbsp;256비트) &lt;br /&gt;&lt;br /&gt;암호화처럼&amp;nbsp;데이터를&amp;nbsp;숨기거나&amp;nbsp;복호화하는&amp;nbsp;기능은&amp;nbsp;없음 &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>네트워크</category>
      <category>네트워크</category>
      <category>네트워크 엔지니어</category>
      <category>무결성</category>
      <category>암호화</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/69</guid>
      <comments>https://geell.tistory.com/69#entry69comment</comments>
      <pubDate>Fri, 5 Dec 2025 11:32:39 +0900</pubDate>
    </item>
    <item>
      <title>리눅스의 용어 및 경로 (내용 추가 중)</title>
      <link>https://geell.tistory.com/68</link>
      <description>&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;187&quot; data-start=&quot;41&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;141&quot; data-start=&quot;41&quot;&gt;용어 정리&lt;br /&gt;용어 의미&lt;br /&gt;/ 루트 디렉토리, 파일 시스템 최상위&lt;br /&gt;~ 로그인한 사용자의 홈 디렉토리 (/root는 root 계정의 홈)&lt;br /&gt;root 사용자 계정 이름&lt;/li&gt;
&lt;li data-end=&quot;187&quot; data-start=&quot;143&quot;&gt;지금 상황&lt;br /&gt;[root@localhost ~]# pwd&lt;br /&gt;/root&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;297&quot; data-start=&quot;189&quot; data-ke-size=&quot;size16&quot;&gt;현재 경로가 /root이므로 root 계정 홈 디렉토리에 있음&lt;br /&gt;여기서 ls를 하면 /root 안의 파일만 보임&lt;br /&gt;/boot는 루트(/) 아래에 있는 디렉토리이므로 /root 안에는 없음&lt;/p&gt;
&lt;p data-end=&quot;381&quot; data-start=&quot;299&quot; data-ke-size=&quot;size16&quot;&gt;디렉토리 구조 예시&lt;br /&gt;/&lt;br /&gt;├── boot&lt;/p&gt;
&lt;p data-end=&quot;381&quot; data-start=&quot;299&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;├── root &amp;larr; 현재 디렉토리 ~&lt;br /&gt;├── home&lt;br /&gt;├── etc&lt;br /&gt;└── ...&lt;/p&gt;
&lt;p data-end=&quot;420&quot; data-start=&quot;383&quot; data-ke-size=&quot;size16&quot;&gt;그래서 홈(~)에서 ls를 해도 boot 디렉토리는 보이지 않음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-12-03 153940.png&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOXQKE/dJMcafLQqgp/QWWk3okKlilzCO1tU7oKZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOXQKE/dJMcafLQqgp/QWWk3okKlilzCO1tU7oKZ0/img.png&quot; data-alt=&quot;root 계정의 홈 -&amp;amp;gt; 파일 시스템 최상위로 이동 -&amp;amp;gt; ls로 파일 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOXQKE/dJMcafLQqgp/QWWk3okKlilzCO1tU7oKZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOXQKE%2FdJMcafLQqgp%2FQWWk3okKlilzCO1tU7oKZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;577&quot; height=&quot;93&quot; data-filename=&quot;스크린샷 2025-12-03 153940.png&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;root 계정의 홈 -&amp;gt; 파일 시스템 최상위로 이동 -&amp;gt; ls로 파일 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;420&quot; data-start=&quot;383&quot; data-ke-size=&quot;size16&quot;&gt;3. cd /boot&lt;br /&gt;cd /boot&lt;/p&gt;
&lt;p data-end=&quot;565&quot; data-start=&quot;448&quot; data-ke-size=&quot;size16&quot;&gt;슬래시(/)로 시작하면 절대경로로 인식됨&lt;br /&gt;루트(/) 아래 있는 boot 디렉토리로 바로 이동&lt;br /&gt;현재 경로가 /root든 /home/user든 상관 없음&lt;br /&gt;이동 후 pwd를 실행하면 /boot가 출력됨&lt;/p&gt;
&lt;p data-end=&quot;680&quot; data-start=&quot;567&quot; data-ke-size=&quot;size16&quot;&gt;핵심 포인트&lt;br /&gt;/는 파일 시스템 최상위&lt;br /&gt;~는 사용자 홈 디렉토리&lt;br /&gt;cd /boot는 루트(/) 아래 boot로 이동&lt;br /&gt;cd boot(상대경로)는 현재 디렉토리 안에 boot가 있을 때만 가능&lt;/p&gt;
&lt;p data-end=&quot;771&quot; data-start=&quot;682&quot; data-ke-size=&quot;size16&quot;&gt;/boot와 /root는 같은 루트(/) 아래 있는 다른 디렉토리임&lt;br /&gt;/boot는 루트 시스템용 파일 디렉토리&lt;br /&gt;/root는 root 계정의 홈 디렉토리&lt;/p&gt;</description>
      <category>네트워크</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/68</guid>
      <comments>https://geell.tistory.com/68#entry68comment</comments>
      <pubDate>Wed, 3 Dec 2025 15:42:07 +0900</pubDate>
    </item>
    <item>
      <title>RSA 서명과 SHA-512 해시값 이해하기</title>
      <link>https://geell.tistory.com/67</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SSL/TLS에서 보안 통신을 위해 인증, 무결성 체크, 암호화가 필요합니다. 그 중 서명(Signature)과 해시(Hash)가 어떻게 사용되는지 RSA-SHA-512를 예로 설명합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1. 서명(Signature)이란?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;서명은 데이터를 보내는 사람이 정말 그 사람인지 확인하고, 데이터가 전송 중 변조되지 않았음을 보장하기 위한 기술입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;예: rsa-sha2-512&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;RSA : 서명 생성에 사용하는 공개키 암호 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SHA-512 : 서명에 사용될 데이터의 해시값 생성 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;즉, RSA가 &amp;ldquo;누가 보냈는지 인증&amp;rdquo;하는 역할을 하고, SHA-512는 서명을 위한 데이터 요약 역할을 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. 해시(Hash)란?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;해시는 데이터를 고정 길이 숫자나 문자열로 바꾸는 과정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SHA-512는 데이터를 512비트 길이의 고유 문자열로 변환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;특징:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;입력 데이터가 조금만 달라져도 해시값이 완전히 달라짐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;해시값만으로 원본 데이터를 유추하기 어려움&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3. RSA-SHA-512 서명 과정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;원본 데이터를 SHA-512 해시 함수로 변환 &amp;rarr; 512비트 해시값 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;생성된 해시값을 RSA 개인키로 암호화 &amp;rarr; 서명 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수신자는 RSA 공개키로 서명을 복호화 &amp;rarr; 해시값 확인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;복호화된 해시값과 수신한 데이터로 새로 생성한 해시값이 같으면 데이터 무결성 확인 완료&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;4. 핵심 요약&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;항목 의미 비트 수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SHA-512 해시함수, 데이터 요약 512비트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;RSA 공개키 기반 서명, 인증용 RSA 키 길이에 따라 다름 (예: 2048비트)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;rsa-sha2-512 SHA-512로 해시 후 RSA로 서명 해시: 512비트, 서명 길이는 RSA 키 길이와 동일&lt;/span&gt;&lt;/p&gt;</description>
      <category>네트워크</category>
      <category>hash</category>
      <category>RSA</category>
      <category>SHA</category>
      <category>SHA-512</category>
      <category>SSL</category>
      <category>TLS</category>
      <category>네트워크</category>
      <category>네트워크 엔지니어</category>
      <category>엔지니어</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/67</guid>
      <comments>https://geell.tistory.com/67#entry67comment</comments>
      <pubDate>Wed, 3 Dec 2025 10:37:03 +0900</pubDate>
    </item>
    <item>
      <title>X-Forwarded-For (XFF) 헤더</title>
      <link>https://geell.tistory.com/66</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ChatGPT Image 2025년 12월 2일 오후 04_42_09.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjuj1j/dJMcahv7vGO/jYPmtkji6ZAQON8KYsoD60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjuj1j/dJMcahv7vGO/jYPmtkji6ZAQON8KYsoD60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjuj1j/dJMcahv7vGO/jYPmtkji6ZAQON8KYsoD60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjuj1j%2FdJMcahv7vGO%2FjYPmtkji6ZAQON8KYsoD60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-filename=&quot;ChatGPT Image 2025년 12월 2일 오후 04_42_09.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;model-response-message-contentr_d4dfbff7a7552915&quot;&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. X-Forwarded-For (XFF) 헤더란 무엇인가요?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정의:&lt;/b&gt; 클라이언트의 &lt;b&gt;실제 IP 주소&lt;/b&gt;를 식별하기 위한 HTTP 요청 헤더의 한 종류입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;역할:&lt;/b&gt; 클라이언트 IP를 HTTP 헤더에 담아 &lt;b&gt;중간 장비(L4/프록시 서버)&lt;/b&gt; &lt;span data-math=&quot;\rightarrow&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;rarr;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;b&gt;웹 서버&lt;/b&gt;로 전달하는 역할을 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;위치:&lt;/b&gt; &lt;b&gt;애플리케이션 계층(L7)&lt;/b&gt;, 즉 HTTP 프로토콜 내에 담겨있는 &lt;b&gt;데이터&lt;/b&gt;일 뿐입니다. (네트워크 계층의 IP 주소와는 다름)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;5&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;2. XFF가 필요한 이유는 무엇인가요?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;문제 상황:&lt;/b&gt; 서비스 구조(클라이언트 - L4 - 서버)에서 L4 스위치가 FNAT(Full Network Address Translation)를 수행할 때, 클라이언트의 IP를 &lt;b&gt;자신의 IP&lt;/b&gt;로 변경하여 서버에 요청을 보냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt; XFF가 없으면 서버는 요청이 &lt;b&gt;L4의 IP&lt;/b&gt;에서 온 것으로만 인식하고, &lt;b&gt;실제 클라이언트의 IP&lt;/b&gt;는 알 수 없습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;해결:&lt;/b&gt; XFF 헤더를 통해 중간 장비가 클라이언트의 실제 IP를 서버에 알려주어, 서버가 정확한 IP를 식별하게 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;8&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;3. 서버는 XFF를 어떻게 활용하나요? (목적)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;XFF를 사용하는 주된 목적은 애플리케이션 계층(L7)의 정확성을 확보하는 것입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;로그 기록:&lt;/b&gt; 웹 서버 로그에 &lt;b&gt;중간 장비 IP&lt;/b&gt;가 아닌, &lt;b&gt;실제 클라이언트 IP&lt;/b&gt;를 정확하게 기록하기 위함입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;서비스 로직:&lt;/b&gt; &lt;b&gt;IP 기반 접근 제어(차단/허용)&lt;/b&gt;, &lt;b&gt;부정 행위 방지&lt;/b&gt;, &lt;b&gt;지역별 서비스 제공&lt;/b&gt; 등 클라이언트의 실제 IP가 필요한 모든 애플리케이션 기능을 정확하게 실행하기 위함입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;12&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;4. 서버는 어떤 IP로 응답하나요? (네트워크 경로)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;응답 IP:&lt;/b&gt; 서버는 XFF 헤더의 클라이언트 IP가 아닌, 요청이 들어온 패킷의 발신지 IP(L4 스위치 IP)로 응답을 보냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이유:&lt;/b&gt; 응답 경로는 네트워크 계층(L3/L4)에서 처리되는 통신 원칙을 따르기 때문입니다. &lt;b&gt;L7 데이터&lt;/b&gt;인 XFF 헤더는 응답 패킷의 목적지를 결정하는 데 사용되지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;경로:&lt;/b&gt; 응답 패킷은 서버 &lt;span data-math=&quot;\rightarrow&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;rarr;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; L4 &lt;span data-math=&quot;\rightarrow&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;rarr;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 클라이언트 순서로 전달됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>네트워크</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/66</guid>
      <comments>https://geell.tistory.com/66#entry66comment</comments>
      <pubDate>Tue, 2 Dec 2025 16:42:33 +0900</pubDate>
    </item>
    <item>
      <title>퇴직연금 (DB, DC, IRP) 정리</title>
      <link>https://geell.tistory.com/65</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IRP&amp;middot;ISA &amp;middot;DC정리&lt;/b&gt; &lt;br /&gt;1.&amp;nbsp;DC(확정기여형)&amp;nbsp;vs&amp;nbsp;IRP(개인형&amp;nbsp;퇴직연금)&amp;nbsp;vs&amp;nbsp;ISA(개인종합자산관리계좌) &lt;br /&gt;구분 특징 세액공제 운용&amp;nbsp;가능 &lt;br /&gt;DC 회사가&amp;nbsp;주로&amp;nbsp;납입하는&amp;nbsp;퇴직연금 없음 정기예금,&amp;nbsp;펀드&amp;nbsp;등 &lt;br /&gt;IRP 개인이&amp;nbsp;추가로&amp;nbsp;납입&amp;nbsp;가능한&amp;nbsp;퇴직연금 있음&amp;nbsp;(16.5%) 정기예금,&amp;nbsp;펀드,&amp;nbsp;ETF&amp;nbsp;등 &lt;br /&gt;ISA 주식&amp;middot;펀드 투자용 계좌, 최대 5년 일반형: 없음 / 중개형: 일부 조건 가능 국내&amp;middot;해외 주식, 펀드, ETF&lt;br /&gt;세액공제&amp;nbsp;목적은&amp;nbsp;IRP,&amp;nbsp;투자&amp;nbsp;목적은&amp;nbsp;ISA. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;IRP&amp;nbsp;세액공제&amp;nbsp;핵심&amp;nbsp;포인트&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;연간&amp;nbsp;최대&amp;nbsp;한도:&amp;nbsp;DC&amp;nbsp;+&amp;nbsp;IRP&amp;nbsp;합산&amp;nbsp;700만&amp;nbsp;원 &lt;br /&gt;&lt;br /&gt;세액공제율:&amp;nbsp;16.5%&amp;nbsp;(근로소득&amp;nbsp;5,500만&amp;nbsp;이하&amp;nbsp;기준) &lt;br /&gt;&lt;br /&gt;납입&amp;nbsp;시점:&amp;nbsp;연중&amp;nbsp;언제든&amp;nbsp;가능,&amp;nbsp;12월&amp;nbsp;한&amp;nbsp;번&amp;nbsp;납입도&amp;nbsp;공제&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;DC는&amp;nbsp;회사&amp;nbsp;납입금으로&amp;nbsp;세액공제&amp;nbsp;불가 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;IRP&amp;nbsp;계좌&amp;nbsp;구조&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;IRP&amp;nbsp;계좌&amp;nbsp;자체:&amp;nbsp;계약기간&amp;nbsp;없음,&amp;nbsp;언제든&amp;nbsp;유지&amp;middot;해지&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;포트폴리오(상품)&amp;nbsp;선택:&amp;nbsp;정기예금,&amp;nbsp;펀드&amp;nbsp;등 &lt;br /&gt;&lt;br /&gt;각&amp;nbsp;상품마다&amp;nbsp;약정기간&amp;nbsp;존재&amp;nbsp;가능&amp;nbsp;(예:&amp;nbsp;36개월&amp;nbsp;정기예금) &lt;br /&gt;&lt;br /&gt;납입&amp;nbsp;시점&amp;nbsp;기준&amp;nbsp;운용&amp;nbsp;시작 &lt;br /&gt;&lt;br /&gt;월별&amp;nbsp;납입&amp;nbsp;시&amp;nbsp;해당&amp;nbsp;금액부터&amp;nbsp;포트폴리오&amp;nbsp;운용 &lt;br /&gt;&lt;br /&gt;12월&amp;nbsp;한&amp;nbsp;번&amp;nbsp;납입&amp;nbsp;시&amp;nbsp;그&amp;nbsp;금액부터&amp;nbsp;운용 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&amp;nbsp;세액공제&amp;nbsp;계산&amp;nbsp;예시&lt;/b&gt; &lt;br /&gt;①&amp;nbsp;IRP&amp;nbsp;월&amp;nbsp;납입액&amp;nbsp;기준 &lt;br /&gt;월&amp;nbsp;납입액 연간&amp;nbsp;납입액 세액공제&amp;nbsp;환급액&amp;nbsp;(16.5%) &lt;br /&gt;10만&amp;nbsp;원 120만&amp;nbsp;원 19.8만&amp;nbsp;원 &lt;br /&gt;20만&amp;nbsp;원 240만&amp;nbsp;원 39.6만&amp;nbsp;원 &lt;br /&gt;25만&amp;nbsp;원 300만&amp;nbsp;원 49.5만&amp;nbsp;원 &lt;br /&gt;②&amp;nbsp;DC&amp;nbsp;포함&amp;nbsp;예시 &lt;br /&gt;&lt;br /&gt;IRP&amp;nbsp;500만&amp;nbsp;원&amp;nbsp;+&amp;nbsp;DC&amp;nbsp;100만&amp;nbsp;원 &lt;br /&gt;&lt;br /&gt;세액공제는&amp;nbsp;IRP&amp;nbsp;500만&amp;nbsp;원&amp;nbsp;기준 &lt;br /&gt;&lt;br /&gt;500&amp;nbsp;&amp;times;&amp;nbsp;0.165&amp;nbsp;&amp;asymp;&amp;nbsp;82.5만&amp;nbsp;원&amp;nbsp;환급 &lt;br /&gt;&lt;br /&gt;DC는&amp;nbsp;세액공제에&amp;nbsp;포함되지&amp;nbsp;않음 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.&amp;nbsp;IRP&amp;nbsp;포트폴리오&amp;nbsp;선택&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;디폴트&amp;nbsp;옵션:&amp;nbsp;은행에서&amp;nbsp;자동&amp;nbsp;운용,&amp;nbsp;일반적&amp;nbsp;선택&amp;nbsp;방식 &lt;br /&gt;&lt;br /&gt;직접&amp;nbsp;운용&amp;nbsp;가능:&amp;nbsp;자신이&amp;nbsp;ETF/펀드&amp;nbsp;등&amp;nbsp;배분 &lt;br /&gt;&lt;br /&gt;만기&amp;nbsp;후&amp;nbsp;재선택&amp;nbsp;가능:&amp;nbsp;36개월&amp;nbsp;정기예금&amp;nbsp;만기&amp;nbsp;시점에서&amp;nbsp;재선택 &lt;br /&gt;&lt;br /&gt;자동&amp;nbsp;연장&amp;nbsp;가능:&amp;nbsp;포트폴리오&amp;nbsp;만기&amp;nbsp;후&amp;nbsp;은행&amp;nbsp;규정에&amp;nbsp;따라&amp;nbsp;연장 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6.&amp;nbsp;요약&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;IRP&amp;nbsp;=&amp;nbsp;세액공제용&amp;nbsp;계좌 &lt;br /&gt;&lt;br /&gt;ISA&amp;nbsp;=&amp;nbsp;투자용&amp;nbsp;계좌 &lt;br /&gt;&lt;br /&gt;DC는&amp;nbsp;세액공제&amp;nbsp;불가,&amp;nbsp;회사&amp;nbsp;납입금만 &lt;br /&gt;&lt;br /&gt;세액공제는&amp;nbsp;연간&amp;nbsp;납입액&amp;nbsp;기준,&amp;nbsp;12월&amp;nbsp;한&amp;nbsp;번&amp;nbsp;납입도&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;포트폴리오는&amp;nbsp;납입한&amp;nbsp;금액&amp;nbsp;단위로&amp;nbsp;운용&amp;nbsp;시작 &lt;br /&gt;&lt;br /&gt;IRP&amp;nbsp;+&amp;nbsp;DC&amp;nbsp;합산&amp;nbsp;한도&amp;nbsp;700만&amp;nbsp;원&amp;nbsp;참고,&amp;nbsp;실제&amp;nbsp;세액공제는&amp;nbsp;IRP만&lt;/p&gt;</description>
      <category>DC</category>
      <category>IRP</category>
      <category>ISA</category>
      <category>개인형 퇴직연금</category>
      <category>계좌</category>
      <category>세금</category>
      <category>세액공제</category>
      <category>은행</category>
      <category>퇴직연금</category>
      <category>투자용 계좌</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/65</guid>
      <comments>https://geell.tistory.com/65#entry65comment</comments>
      <pubDate>Tue, 2 Dec 2025 11:16:17 +0900</pubDate>
    </item>
    <item>
      <title>리눅스에서 find와 grep 명령어</title>
      <link>https://geell.tistory.com/63</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;b&gt;리눅스에서&amp;nbsp;find와&amp;nbsp;grep&amp;nbsp;명령어&lt;/b&gt; &lt;br /&gt;둘&amp;nbsp;다&amp;nbsp;무언가를&amp;nbsp;찾는다는&amp;nbsp;목적은&amp;nbsp;같으나,&amp;nbsp;찾는&amp;nbsp;대상이&amp;nbsp;다르다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;-&amp;nbsp;find:&amp;nbsp;파일,&amp;nbsp;디렉토리의&amp;nbsp;이름을&amp;nbsp;찾는다. &lt;/u&gt;&lt;br /&gt;&lt;u&gt;-&amp;nbsp;grep:&amp;nbsp;파일&amp;nbsp;안에서&amp;nbsp;글자/내용을&amp;nbsp;찾는다.&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;find&amp;nbsp;&amp;ndash;&amp;nbsp;파일/디렉터리&amp;nbsp;이름&amp;nbsp;찾기 &lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 143px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;명령어&amp;nbsp;예시&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;현재&amp;nbsp;폴더에서&amp;nbsp;특정&amp;nbsp;이름&amp;nbsp;찾기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;find&amp;nbsp;.&amp;nbsp;-name&amp;nbsp;&quot;pnlog&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;현재&amp;nbsp;폴더(.)&amp;nbsp;아래에서&amp;nbsp;pnlog라는&amp;nbsp;이름&amp;nbsp;검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;전체&amp;nbsp;시스템에서&amp;nbsp;찾기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;find&amp;nbsp;/&amp;nbsp;-name&amp;nbsp;&quot;pnlog&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;루트(/)&amp;nbsp;아래&amp;nbsp;전체&amp;nbsp;탐색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;이름&amp;nbsp;일부만&amp;nbsp;찾기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;find&amp;nbsp;.&amp;nbsp;-name&amp;nbsp;&quot;*pnlog*&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;pnlog가 포함된 모든 파일 검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;특정&amp;nbsp;확장자&amp;nbsp;찾기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;find&amp;nbsp;/var/log&amp;nbsp;-name&amp;nbsp;&quot;*.log&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;.log로&amp;nbsp;끝나는&amp;nbsp;파일&amp;nbsp;검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;최근&amp;nbsp;1일&amp;nbsp;안에&amp;nbsp;수정된&amp;nbsp;파일&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;find&amp;nbsp;/home/user&amp;nbsp;-mtime&amp;nbsp;-1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;최근&amp;nbsp;1일&amp;nbsp;이내&amp;nbsp;수정된&amp;nbsp;파일&amp;nbsp;검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;특정&amp;nbsp;타입&amp;nbsp;찾기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;find&amp;nbsp;.&amp;nbsp;-type&amp;nbsp;d&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;디렉터리만&amp;nbsp;검색&amp;nbsp;(-type&amp;nbsp;f&amp;nbsp;&amp;rarr;&amp;nbsp;파일만)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;grep&amp;nbsp;&amp;ndash;&amp;nbsp;파일&amp;nbsp;안&amp;nbsp;텍스트&amp;nbsp;내용&amp;nbsp;찾기&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 127px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;명령어&amp;nbsp;예시&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;특정&amp;nbsp;파일에서&amp;nbsp;문자열&amp;nbsp;검색&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;grep&amp;nbsp;&quot;error&quot;&amp;nbsp;/var/log/syslog&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;syslog&amp;nbsp;파일에서&amp;nbsp;error&amp;nbsp;포함&amp;nbsp;줄&amp;nbsp;출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;대소문자&amp;nbsp;구분&amp;nbsp;없이&amp;nbsp;검색&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;grep&amp;nbsp;-i&amp;nbsp;&quot;error&quot;&amp;nbsp;/var/log/syslog&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;Error,&amp;nbsp;ERROR&amp;nbsp;모두&amp;nbsp;검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;줄&amp;nbsp;번호까지&amp;nbsp;출력&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;grep&amp;nbsp;-n&amp;nbsp;&quot;error&quot;&amp;nbsp;/var/log/syslog&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;몇&amp;nbsp;번째&amp;nbsp;줄인지&amp;nbsp;같이&amp;nbsp;보여줌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;폴더&amp;nbsp;전체&amp;nbsp;재귀&amp;nbsp;검색&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;grep&amp;nbsp;-r&amp;nbsp;&quot;error&quot;&amp;nbsp;/var/log/&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;하위&amp;nbsp;폴더까지&amp;nbsp;모든&amp;nbsp;파일&amp;nbsp;검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;특정&amp;nbsp;문자열&amp;nbsp;제외&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;grep&amp;nbsp;-v&amp;nbsp;&quot;root&quot;&amp;nbsp;/etc/passwd&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;root&amp;nbsp;제외한&amp;nbsp;줄만&amp;nbsp;출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;여러&amp;nbsp;패턴&amp;nbsp;검색&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;grep&amp;nbsp;-E&amp;nbsp;&quot;error|fail|warning&quot;&amp;nbsp;/var/log/syslog&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;error,&amp;nbsp;fail,&amp;nbsp;warning&amp;nbsp;중&amp;nbsp;하나라도&amp;nbsp;포함된&amp;nbsp;줄&amp;nbsp;출력&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;</description>
      <category>네트워크</category>
      <category>find</category>
      <category>grep</category>
      <category>네트워크</category>
      <category>리눅스</category>
      <category>명령어</category>
      <author>GEELL</author>
      <guid isPermaLink="true">https://geell.tistory.com/63</guid>
      <comments>https://geell.tistory.com/63#entry63comment</comments>
      <pubDate>Thu, 13 Nov 2025 17:35:19 +0900</pubDate>
    </item>
  </channel>
</rss>