Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save franciscocpg/64d7f60bed7a2cf75442 to your computer and use it in GitHub Desktop.

Select an option

Save franciscocpg/64d7f60bed7a2cf75442 to your computer and use it in GitHub Desktop.
How to set a default gateway on CentOS

A default gateway is a remote host or router that your Linux host forwards traffic to when the destination IP address of outgoing traffic does not match any route in your local routing table. Configuring a default gateway on CentOS is quite straightforward.

If you wish to change a default gateway temporarily at run time, you can use ip command.

First things first. To check what default gateway you are using currently:
ip route show

192.168.91.0/24 dev eth0  proto kernel  scope link  src 192.168.91.128 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.91.2 dev eth0 

According to the local routing table shown above, a default gateway is 192.168.91.2, and traffic is forwarded to the gateway via eth0.

In order to change a default gateway to another IP address:
sudo ip route replace default via 192.168.91.10 dev eth0

Obviously, a default gateway's IP address should come from the subnet associated with the interface connected to the default gateway, in this example, 192.168.91.0/24. Otherwise, the command will fail with the following error.
RTNETLINK answers: No such process

Also, keep in mind that the default route change made by ip command will be lost after rebooting.
In order to set a default gateway permanently on CentOS, you will need to update /etc/sysconfig/network accordingly.
sudo vi /etc/sysconfig/network

GATEWAY=192.168.91.10

Again, be aware that the IP addressed specified here should match with the subnet (192.168.91.0/24) associated with a default route interface.

Another option to set a default gateway persistently on CentOS is to edit /etc/sysconfig/network-scripts/ifcfg-<default_interface_name>, and add "GATEWAY=<gateway_ip>" there. If the default interface is "eth0", you will need to edit /etc/sysconfig/network-scripts/ifcfg-eth0. If you choose to use this method, you need to refer to this post to get familiar with this option.
Whether you edit /etc/sysconfig/network or /etc/sysconfig/network-scripts/ifcfg-ethX, don't forget to restart networkservice as follows, or reboot your CentOS for the change to take effect (WARNING: if something goes wrong you will lose connectivity).
sudo service network restart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment