Wednesday, February 5, 2020

Basics of CIDR notations in Oracle cloud OCI

Supposedly, my network admin has created a VCN for me with CIDR block  10.10.10.0/24.
Oops, i should have started with the notations for CIDR. Let's get started.

To prevent IPs exhaustion, a new scheme known as Classless Inter-Domain Routing(CIDR) was introduced in 1993. CIDR notation is based on an IPv4 or IPv6 network or routing prefix separated by a slash from a number indicating the prefix length. OCI networking uses IPv4 addressing so the address length is 32 bits. Consider the block of IPv4 addresses specified with the following CIDR notation:10.10.10.0/24

The first part is the network identifier and the second part is host address space.

network identifier/host address space

Decimal values/host address space.


The number of addresses available for host addresses may be derived using the formula 2 , where n is the network prefix. In OCI, the networking service reserves the first IP, known as the network address; the last IP, known as the broadcast address; as well as the first host address in the CIDR range, known as the subnet default gateway address; so the actual usable number of addresses in a VCN is 2 –3

Thus in my case, 10.10.10.0/24 will have 256 hosts(32-24=8. 2 ^8=256). Out of the 256 hosts, as per the explanation above, we can have 253 hosts available.

There is a site https://www.ipaddressguide.com/cidr using which we can find all the relevant details for the CIDR block.






Now, lets us go through one scenario which will help us in putting up the CIDR block for our subnets inside a particular vcn.


My VCN-10.10.10.0/24-total 256 hosts

First Ip-10.10.10.0
Last ip-10.10.10.255


Now if i create a subnet and use the CIDR value-10.10.10.0/26, it will be created. So if we calculate the total number of hosts utilized by this CIDR block, it will be 64 hosts. So inside the VCN, out of the total 256 hosts, 64 has been taken and thus next should start from 64 onwards. If i try to create a subnet with CIDR value below


I will get the above error mentioned in the screenshot because from 0-63, it has already been used by 10.10.10.0/26 and using 10.10.10.0/25 will overlap with 10.10.10.0/26. So i will have to use the CIDR blocks, for which the ip addresses start from 64 onwards.


If i use 10.10.10.64/26, it will reserve another 64 addresses starting from 10.10.10.64 to 10.10.10.127. If we don't want to reserve that much of addresses, it is always better to go for CIDR blocks which will have less number of hosts inside that. So we can use 10.10.10.64/30 which will have 4 IP addresses. Next CIDR can be used from 10.10.10.68/30 and so on. Thus we will be able to accommodate more number of CIDR blocks if we can calculate in a wise manner.

Another aspect is, if my VCN CIDR is 10.10.10.0/24 and if i need to create subnets, then my CIDR range also depends upon host address space. For example, if i decide that my host address space would be 4, then my CIDR can be 10.10.0.40/30 or 10.10.0.44/30 or 10.10.0.48/30 or 10.10.0.52/30. It can't be 10.10.0.50/30. Similarly, if i choose my host address space would be 8, then it would be like 10.10.10.32/29 or 10.10.10.24/29 etc.


Hope this will help someone. Happy learning cloud




Sunday, February 2, 2020

Give sudo privilege to Oracle user in OCI

In my last post, https://samappsdba.blogspot.com/2020/02/create-ssh-keys-for-newly-provisioned.html i explained, how to generate ssh keys for newly provisioned instances in Oracle Cloud and using private key, we connect to those instances using putty. Normally there will be two user for connecting to the instances. One is opc and another one will be oracle user. If we connect via opc user,




opc is the master user and it has the sudo privileges to connect to oracle user and root user. It doesn't ask for any password.

But if connect to the instance via oracle user and try to do a sudo, it prompts for oracle's password.



By any chance if anyone tampers with opc user, we will not be able to connect to opc or root user.

Thus to resolve this squabble, using root user, we added the below line at the bottom of the file-/etc/sudoers


## Same thing without a password
oracle        ALL=(ALL)       NOPASSWD: ALL



And thereafter we were able to connect to opc and root from oracle user.


Hope it helps someone. Happy learning.

Create SSH keys for newly provisioned instance in Oracle Cloud

Recently, we did a lift and shift of on premise EBS 12.2 to OCI using oracle Cloud manager and as part of it, the automation script provisioned two compute instance from the backup of the on premise instances.

Say the newly created two instance are A and B. Initially to connect to these two provisioned instances, we first go the cloud manager instance and from there we have to ssh to the newly created A instance/B instance from cloud manager using A's/B's private IP. So to connect to these two instances directly without going through the cloud manager, we need the private keys if we are connecting via putty. In this blog, i will explain how we can create the new ssh keys and convert them to PPK format using puttygen in windows.

In Compute instance A/B

generate the ssh keys.

ssh-keygen

Accept the default values.

Once it completes, you will be able to see two files
id_rsa.pub
id_rsa

Now copy the content of id_rsa.pub to the authorized_keys.
cat id_rsa.pub >>authorized_keys

The above steps are for opc user.

ssh <private ip of A>

Now for Oracle user.

opc>hostname   sudo su - oracle

and follow the above steps for generating the rsa keys and adding the contents to the authorized keys.




The server part is complete. Now in order to connect to the server, we need the private ppk keys. Putty doesn't recognize the rsa keys. They have to converted to ppk format.


Copy the id_rsa to the windows and using puttygen, convert it to putty format.

open puttygen

click on Conversions and import key
choose the rsa file



       
and save it. It is important in terms with security to provide the passphrase.


Once we have the private key, we can go to putty and connect to the instance using this key





   Hope this helps someone. Happy learning cloud.