<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: xlinkersoul</title>
    <description>The latest articles on DEV Community by xlinkersoul (@xlinkersoul).</description>
    <link>https://dev.to/xlinkersoul</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F342807%2F5ff52492-13a8-414b-abb8-7873101c1562.png</url>
      <title>DEV Community: xlinkersoul</title>
      <link>https://dev.to/xlinkersoul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xlinkersoul"/>
    <language>en</language>
    <item>
      <title>Basic Linux Network Virtualization Thai (ไทย)</title>
      <dc:creator>xlinkersoul</dc:creator>
      <pubDate>Fri, 28 Feb 2020 08:07:54 +0000</pubDate>
      <link>https://dev.to/xlinkersoul/basic-linux-network-virtualization-thai-374k</link>
      <guid>https://dev.to/xlinkersoul/basic-linux-network-virtualization-thai-374k</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQyrzmll--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/ITKST_Logo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQyrzmll--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/ITKST_Logo.png" alt="alt text" title="ITKST Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ITKST Thai Basic Linux Network Virtualization Workshop-I
&lt;/h2&gt;

&lt;h5&gt;
  
  
  ยินดีต้อนรับสู่บทความ ITKST ( IT &amp;amp; Taoism Knowledge Sharing Thailand )
&lt;/h5&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Oe45_ZJpFtg"&gt;
&lt;/iframe&gt;
&lt;br&gt;
สวัสดีท่านผู้อ่านทุกท่านครับ วันนี้เราจะมาพูดกันถึงเรื่องพื้นฐานของการทำ Linux Basic Network Virtualization ซึ่งถือเป็นพื้นฐานความรู้ของทุกคนที่ทำงานเกี่ยวกับ System Engineer จำเป็นต้องรู้ ไม่ว่าจะเป็นเทคโนโลยี Docker, K8S, OpenStack เรื่องนี้ถือเป็นองค์ความรู้พื้นฐานที่จะทำให้เพื่อนๆนำไปต่อยอดใช้ในสายงานของตัวเองได้อย่างคล่องแคล่วและเพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มไปพร้อมๆกันเลยครับ&lt;/p&gt;

&lt;h4&gt;
  
  
  ในโลกแห่งความเป็นจริง (ยุคเก่าที่โลกยังไม่มีเทคโนโลยี Virtualization)
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q4_Qn8cb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-01_OldWay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q4_Qn8cb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-01_OldWay.png" alt="alt text" title="OldWay"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ในสมัยก่อนหากเพื่อนๆต้องการจะเชื่อมต่อคอมพิวเตอร์ทั้ง 2 เครื่องเข้าหากัน ก็สามารถทำได้ง่ายๆเพียงแค่เพื่อนๆนำสาย Lan ไปจิ้มจากเครื่องที่ 1 ไปยังเครื่องที่ 2 ก็เป็นอันสร็จเรียบร้อย&lt;/p&gt;

&lt;p&gt;เชื่อไหมครับว่าคอมพิวเตอร์ในปัจจุบันนั้นมีประสิทธิภาพสูงกว่าคอมพิวเตอร์ในยุคเก่าๆมากมายหลายเท่า จะดีกว่าไหมครับ หากเพื่อนๆสามารถนำเจ้าคอมพิวเตอร์ยุคเก่าๆหลายๆเครื่อง เอายัดรวมเข้าไปอยู่ในคอมพิวเตอร์สมัยใหม่เพียงแค่เครื่องเดียว&lt;/p&gt;

&lt;p&gt;เรามาลองทำกันดีกว่า&lt;/p&gt;

&lt;h4&gt;
  
  
  ในโลกจำลองที่ทุกคนสามารถยัดคอมพิวเตอร์เก่าๆ เข้าไปในคอมพิวเตอร์เครื่องใหม่เพียงเครื่องเดียวได้
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_BAXzTpm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-03_NewVsOld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_BAXzTpm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-03_NewVsOld.png" alt="alt text" title="NewWay"&gt;&lt;/a&gt;&lt;br&gt;
ซึ่งบทความนี้จะเน้นการสร้างระบบ Network ขึ้นมาในโลกจำลองบนระบบ Linux Ubuntu 18.04 โดยการที่เพื่อนๆจะสร้าง Network จำลองขึ้นมาได้นั้น, เพื่อนๆสามารถจะทำได้โดยการสร้าง Network Namespace ขึ้นมา, ซึ่งในตัวอย่างด้านล่างนั้นจะใช้คำว่า Zone ในการตั้งชื่อ Network NameSpace&lt;/p&gt;

&lt;p&gt;ก่อนที่เพื่อนๆทุกคนจะสามารถทำ Workshop ตามตัวอย่างด้านล่างได้นั้น&lt;br&gt;
เพื่อนๆจำเป็นจะต้องมีระบบปฏิบัติการ Ubuntu 18.04 ก่อน&lt;br&gt;
ซึ่งผมจะใช้โปรแกรม Oracle Virtual Box จำลอง Ubuntu 18.04 มาใช้งานบน Windows เพื่อนๆสามารถ Download ได้จาก Link ด้านล่าง&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ubuntu 18.04 &lt;a href="https://ubuntu.com/download/desktop"&gt;https://ubuntu.com/download/desktop&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Oracle Virtual Box &lt;a href="https://www.virtualbox.org/wiki/Downloads"&gt;https://www.virtualbox.org/wiki/Downloads&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ติดตั้ง Ubuntu ให้เรียบร้อย (กด Next รัวๆ)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Workshop I เราจะสร้าง Network จำลองขึ้นมาด้วย Network Namespace, โดยเราจะสร้าง Network Namespace จำนวน 2 Namespace ได้แก่ Zone1 และ Zone2
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--srY4Q-GC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-02_NewWay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--srY4Q-GC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-02_NewWay.png" alt="alt text" title="NewWay"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A48US_Vl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-04_veth_pair.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A48US_Vl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/xlinkersoul/ITKST-Ubuntu1804_NetworkVirt/raw/master/Lab_01-Basic_2_Computer_Connection/Lab_01-04_veth_pair.png" alt="alt text" title="vethpair"&gt;&lt;/a&gt;&lt;br&gt;
Virtual Port Pair หรือ vethpair คือการจำลอง Port Network จำนวน 2 Port ที่มีสายเชื่อมต่อกันอยู่ดังรูป ซึ่งใช้สำหรับเชื่อมต่อ Network Namespace เข้าหากัน&lt;/p&gt;

&lt;h4&gt;
  
  
  Workshop I - สร้าง Network Namespace จำนวน 2 Zone แล้วให้เชื่อมต่อกันด้วย Port จำลองหรือ veth แล้วหลังจากนั้นให้ทดสอบการเชื่อมต่อด้วยคำสั่ง ping
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;จุดประสงค์ของการทำ Workshop I เพื่อ&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;สร้าง Network Namespace ขึ้นมาจำนวน 2 Zone&lt;/li&gt;
&lt;li&gt;สร้าง Virtual Port Pair ขึ้นมา 1 คู่ ( 1 คู่จะเท่ากับ 2 Port ที่เชื่อมต่อกัน)&lt;/li&gt;
&lt;li&gt;ย้าย veth ไปอยู่คนละ Network NameSpace กัน&lt;/li&gt;
&lt;li&gt;ตั้งค่า IP Address ให้กับ veth0 และ veth1&lt;/li&gt;
&lt;li&gt;ใช้คำสั่ง ping เพื่อทดสอบการเชื่อมต่อหากันระหว่าง Namespace ว่าสำเร็จหรือไม่
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#### ดู username และให้ sudo จำ password ไว้&lt;/span&gt;
&lt;span class="nb"&gt;sudo id&lt;/span&gt;

&lt;span class="c"&gt;#### ตามรูปเราจะต้องสร้าง Network Name Space ขึ้นมา 2 Zone (zone1 &amp;amp; zone2)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns add zone1
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns add zone2
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns

&lt;span class="c"&gt;#### สร้าง Virtual Port Pair ขึ้นมา 1 คู่ (veth0 &amp;amp; veth1)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip &lt;span class="nb"&gt;link &lt;/span&gt;add &lt;span class="nb"&gt;type &lt;/span&gt;veth
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip addr show

&lt;span class="c"&gt;#### ผูก Port veth0 เข้ากับ Network Namespace ที่ชื่อ zone1&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip &lt;span class="nb"&gt;link set &lt;/span&gt;dev veth0 netns zone1
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone1 ip addr show

&lt;span class="c"&gt;#### ผูก Port veth1 เข้ากับ Network Namespace ที่ชื่อ zone2&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip &lt;span class="nb"&gt;link set &lt;/span&gt;dev veth1 netns zone2
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone2 ip addr show

&lt;span class="c"&gt;#### ตั้งค่า ip address ของ veth0 = 192.168.16.1&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone1 ip addr add 192.168.16.1/24 dev veth0
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone1 ip &lt;span class="nb"&gt;link set &lt;/span&gt;dev veth0 up
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone1 ip addr show

&lt;span class="c"&gt;#### ตั้งค่า ip address ของ veth1 = 192.168.16.2&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone2 ip addr add 192.168.16.2/24 dev veth1
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone2 ip &lt;span class="nb"&gt;link set &lt;/span&gt;dev veth1 up
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone2 ip addr show

&lt;span class="c"&gt;#### ทดสอบ ping จาก zone1 ไปหา address 192.168.16.2 ใน zone2 &lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone1 ping &lt;span class="nt"&gt;-c&lt;/span&gt; 2 192.168.16.2

&lt;span class="c"&gt;#### ทดสอบ ping จาก zone2 ไปหา address 192.168.16.1 ใน zone1 &lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ip netns &lt;span class="nb"&gt;exec &lt;/span&gt;zone2 ping &lt;span class="nt"&gt;-c&lt;/span&gt; 2 192.168.16.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h5&gt;
  
  
  ITKST เป็นบทความที่จะเพิ่มความรู้ทางด้าน IT ให้กับคุณเยอะด้วยเนื้อหา อัดแน่นด้วยคุณภาพ แต่ใช้เวลาหยิบมือเดียว ITKST สังคมเพื่อการแบ่งปัน จากคนไทยเพื่อคนไทย
&lt;/h5&gt;

</description>
      <category>workshop</category>
      <category>network</category>
      <category>virtualization</category>
      <category>thai</category>
    </item>
  </channel>
</rss>
