Monday, September 14, 2015

Software Defined Network (SDN)

Networking ඉගනගන්නකොට අපිට එන ප්‍රශ්ණයක් තම Switches, Routers වගේ උපකරණ අවශ්‍ය වීම. මෙමෙ උපකරණ මිලට නොගෙන ඒවා වැඩ කරන විදිය ඉගෙනගන්න අපට පුළුවන්. ඒසදහා emulator software තියෙනවා. MiniNet, GNS3, Cisco Packet Tracer කියන්නේ මේවගේ emulator software වලින් කිහිපයක්.
MiniNet වැඩ කරන්න Linux OS 1ක තියෙන්න ඕනි. ඒවගේම Python ටිකක් දැනගන ඉන්නත් ඕනි. GNS3 කියන්නේ Linux, Mac, Windows OS 3ම වැඩකරන software 1ක්. Cisco Packet Tracer Cisco network devices වලට විශේෂ software 1ක්.

ඉහත රුපයේ තියෙන network 1ක MiniNet වලට code 1ක පහත තියෙනවා. මේ Python code 1කේ output 1ක පහතින් තියෙනවා.

Result 1කේ පේනවා Host_A Router_B 1ත් Host_C Router_B ping වෙලා තියෙනවා. ඒ කියන්නේ Host_A ත් Host_C ත් වෙනවෙනම Router_B 1ට connection 1ක සාර්ථකව හැදිලා තියෙනවා. ඒ උනාට Host_A ත් Host_C ත් අතර ping fail වෙලා. මේකට හේතුව වෙලා තියෙන්නේ Host_A හා Host_C network 2ක තිබීම. එනම් 192.168.1.1 හා 192.168.2.2 කියන network වල. මේ network 2ක අතර සම්බන්දතාවය හදන්න gateway 1ක් define කරලා තියන්න ඕනි.

දැන් බලමු මේ වැඩේම Cisco Packet Tracer වලින් කරන්නේ කොහොමද කියල. Cisco Packet Tracer වල interface 1ක පහත විදියට open වෙන්නේ.

පහත video 1ක බලන්න කොහොමද මේ වැඩේ කරන්නේ කියල.

Linux වල 
ifconfig eth_adap address ip netmask 255.255.255.0
command 1න් adapter 1ක configure කරන්න පුළුවන්.
මේකෙ netmask 1ක දෙන 1ක අනිවාර්යයි.
router add default gw ip
command 1න් default router 1ක set කරන්න ඕනි.
router -n
command 1න් අපි set කරපු router බලාගන්න පුළුවන්.

Friday, September 11, 2015

SSH - Secure Shell (2)

Cryptography key pair 1ක් බාවිතා කරල SSH හරහා server 1ට connect වෙන්නේ කොහොමද කියල අද බලමු?
මෙහිදී key files 2ක් තියෙනවා, 1ක් Public key file 1ක අනෙක Private key file 1ක. Public key 1ක server පරිගණකයේ save කරලා තියන්නේ. Private key 1ක තම අපේ පරිගණකයේ තියාගන්නේ. SSH  කරනකොට password 1ක වෙනුවට Private key 1ක යවනවා.

දැන් බලමු කොහොමද Cryptography key pair 1ක් හදාගන්නේ කියල.
Linux/Mac බාවිතා කරන අයට bash terminal 1න් මේ වැඩේ කරගන්න පුළුවන්, windows බාවිතා කරන අයට 3rd party software වල සහය ගන්න වෙනවා.
 Terminal window 1කේ පහත command 1ක මගින් Cryptography key pair 1ක් හදාගන්න පුළුවන්.
ssh-keygen -t rsa
මෙවිට පළමුවෙන් අපෙන් අහනවා file 1ක save කරන්න තැනක් හා save වෙන්න ඕනි නම. 

Default save වෙන්නේ home folder 1කේ .ssh/id_rsa විදියට,  කැමතිනම් path 1ක වෙනස් කරන්න පුළුවන්. දෙවනියට අහනවා password 1ක්. මේ password 1න් වෙන්නේ Private key file 1ක lock වෙන 1ක. Private key 1ක බාවිතා කරනකොට මෙතනදි දෙන password 1ක අහනවා. Password 1ක් නොදී තිබුනොත් අපේ Private key file 1ක අරගෙන ඕන කෙනෙකුට server 1ට log වෙන්න පුළුවන්. එහෙම වීම වලක්වගන්න password 1ක් දෙන 1ක ගොඩක් හොදයි.

.ssh folder 1කේ අපේ keys 2ක තියෙනවා. id_rsa කියල තියෙන්නේ අපේ Private key 1ක, id_rsa.pub කියල තියෙන්නේ Public key 1ක. Public key 1ක server පරිගණකයේ home folder 1කේ .ssh folder 1ට copy කරන්න ඕනි. Linux වලනම් මේ වැඩේ හරිම ලේසියි.
ssh-copy-id -i path_to_public_key_file username@ip 

command 1න් මේ වැඩේ කරගන්න පුළුවන්. නැත්තම් scp command 1න් මේ වැඩේ කරගන්න පුළුවන්. scp බාවිතා කලොත් copy කරගත්තට පස්සේ id_rsa.pub 1කේ තියෙන content 1ක .ssh folder 1කේ authorized_keys කියල file 1ට copy කරන්න ඕනි. cat id_rsa.pub .ssh/authorized_keys command 1න් ඔයාලට මේ වැඩේ කරගන්න පුළුවන්.
දැන් බලමු අපේ Private key 1න් server 1ට connect වෙන්නේ කොහොමද කියල.
ssh -i path_to_private_key_file username@ip

command 1න් අපට සේර්වේර් පරිගණකයට connect වෙන්න පුළුවන්. Private key file 1ට password 1ක් දුන්නනම් අපෙන් password 1ක අහනවා. 

Windows වල මේ වැඩේ කරගන්න PuTTYgen download කරගන්න ඕනි.(http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe) PuTTYgen 1කේ තියෙන Generate button 1ක click කරලා mouse 1ක ටිකක් move කර කර ඉන්න ඕනි, එතකොට key file generate වෙනවා.

Private key file 1ක save කරගන්න. PuTTY වලින් server 1ට connect වෙලා generate වෙන public key 1කේ content 1ක .ssh/authorized_keys file 1ට save කරන්න. දැන් PuTTY open කරලා Connection -> SSH -> Auth වලට ගිහින් අපේ Private key file 1ක තෝරන්න. දැන් අපට හදාගත්ත keys වලින් connect වෙනකොට වෙන්න පුළුවන්. 

Wednesday, September 9, 2015

SSH - Secure Shell

SSH නැත හොත් Secure Shell යනු කුමක්ද 

SSH කියන්නේ අපි බාවිතා කරන HTTP, SMTP වගේම තවත් protocol 1ක්. SSH මගින් දුරස්ථ පරිගණකයක් එම පරිගණකය ඉස්සරහ ඉදගන පාලනය කරනවා වගේම පාලනය කරන්න පුළුවන්. මෙමෙ පරිගණක බොහෝ විට servers. SSH වල තියෙන විදියටම මේ මෙමෙ සම්බන්ද තාවය encrypted, ඒ කියන්නේ ආරක්‍ෂිත සම්බන්ද තාවයක්. SSH වැඩ කරන්නේ command line විදියට. Network administrators ල SSH බෙහෙවින් බාවිතා කරනවා. Linux හා Mac හි bash terminal 1ක SSH එනවා, නමුත් windows os බාවිතා කරනවානම් අපට වෙනත් software වල සහය පතන්නට වෙනවා. PuTTY කියන්නේ windows වලට පාවිච්චි කරන්න පුළුවන් free software 1ක්. JuiceSSH කියන්නේ Android වලට බාවිතා කරන්න පුළුවන් SSH Client app 1ක්. Prompt iOS වලට බවිත කරන්න පුළුවන්.

අපි SSH වලින් වෙන පරිගණකයකට log වෙන්නේ, ඒ නිසා එකට අපි අවසර ගන්න ඕනි. මේකට ක්‍රම 2ක් තියෙනවා.
Username & Password 
Key pair 

SSH default වැඩ කරන්නේ port 22කේ, මේක වෙනස් කරන්නත් පුළුවන්.

දැන් බලමු Username & Password දීල Ubuntu වලින් connection 1ක් හදාගන්නේ කොහොමද කියල.
Terminal 1කේ, ssh username_of_server@ip_of_server ගහල enter කරන්න. ඊලගට වෙන්නේ fingerprint 1ක ලැබෙන 1ක. fingerprint ලැබෙන්නේ ඔයාගේ පරිගණකයෙන් server 1ට පලවෙනි පාර connect වෙනවනම් විතරයි. ඔයාලට තියෙන්නේ yes type කරලා enter කරන්න විතරයි.
 එතකොට fingerprint 1ක home folder 1කේ .ssh folder 1කේ save වෙනවා. ඊලග පාර connection 1ක හැදෙනකොට ඔයාලගේ save
උන fingerprint 1යි server 1න් එවන fingerprint 1යි සමානද කියල බලනවා. මොකක් හරි හේතුවකට fingerprint 2ක සමාන  නැත්තම් අපට connect වෙන්න දෙන්නේ නැහැ.
අත්කොට server පරිගණකයේ password 1ක එල්ලනවා. අපි මෙතනට password 1ක දෙන්න ඕනි. Linux වලනම් අවස්ථා 3ක් දෙනවා හරියට password 1ක දෙන්න. අවස්ථා 3ම නොහැකි උනොත් ssh 1ක exit වෙනවා. අත්කොට මුල ඒදන් try කරන්න වෙනවා.

මම මුලින් කිවුනනේ SSH default වැඩ කරන්නේ port 22 කියල, මේක වෙනස් කරලා තිබුනොත් terminal 1කේ අපි port 1ක දෙන්න ඕනි. පහත විදියට අපට 1ක දෙන්න පුළුවන්.
ssh username_of_server@ip_of_server -pxxx  (මෙහි xxx 1ක වෙනුවට port 1ක දෙන්න ඕනි.)

දැන් බලමු windows වලින් කොහොමද මේ වැඩේ කරගන්නේ කියල. ඉස්සල ඔයාල PuTTY download කරගන්න ඕනි, මෙන්න ලින්ක් 1ක http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
PuTTY open කරගන්න. Host Name (or IP address) කියන තැන server 1කේ IP address 1ක type කරලා Port 1ක වෙනස් කරන්න අවශ්නම් වෙනස් කරලා පහලින් තියෙන open මත click කරන්න. එතකොට වෙනත් window 1ක් open වෙනවා. අතන අපි password 1ක type කරන්න ඕනි. හැබැයි PuTTY ඔයාලට දෙන්නේ අවස්ථා 2යි. ඉස්සල වගේම මේ first time නම් fingerprint  accept කරන්න ඕනි.

Key pair වලින් connect වෙන විදිය අපි ඊලග ලිපියෙන් බලමු...

අපිට server නැහැනේ ඒ උනාට මේ කියන්න යන්නේ අපේ පරිගණකයේම මේ වැඩේ කරලා බලන්න විදියක්. මේකට Oracal VirtualBox ඕනි. https://www.virtualbox.org/wiki/Downloads න් ඔයාලට පුළුවන් VirtualBox  download කරගන්න. Ubuntu හරි CentOS install කරගන්න ඕනි (Ubuntu install කරන හැටි මෙතනින් බලන්න.). CentOS හා Ubuntu Server version වල SSH එනවා,නැත්තම් අපි ssh install කරගන්න ඕනි.
For Ubuntu - sudo apt-get install openssh-server
For CentOS  - yum -y install openssh-server openssh-clients 


පහත රුපයේ අංක පිළිවෙලට යන්න.

එවිට open වෙන window 1කේ දකුණු කෙලවරේ උඩ button 1න් පහත රුපයේ ආකාරයට rule 1ක් add කරන්න.

මෙහි Host IP එක ubuntu වල ifconfig වලින් දෙන ip 1ක වෙන්න ඕනි. උඩ ලියල තියෙන ක්‍රම 2න් ඕන ක්‍රමයකට දැන් test කරලා බලන්න.