Crmgo Blog

Network Settings in CentOS 7

Network Settings in CentOS 7

First, we check the network card settings: For some reason, this utility has been excluded from the standard distribution set! This can be resolved by installing net-tools: If it's not possible to install net-tools, check as follows: Disable and remove NetworkManager. On workstations, this tool may indeed bring…

Network Settings in CentOS 7

First, check the network card settings:

# ifconfig
-bash: ifconfig: command not found

For some reason, this utility was excluded from the standard distribution set! It can be resolved by installing net-tools:

yum -y install net-tools.x86_64

If it is not possible to install net-tools, check like this:

#ip addr
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:15:5d:01:03:06 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe01:306/64 scope link 
    valid_lft forever preferred_lft forever
[root@localhost ~]# 

Disable and remove NetworkManager.

This tool may be useful on workstations, but on a server it can cause headaches:

# systemctl stop NetworkManager.service
# systemctl disable NetworkManager.service
# yum remove dnsmasq -y
# systemctl enable network.service
# systemctl restart network.service

Configure network interfaces:
#nano /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR=00:15:5D:01:03:06
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes  
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=3c4a4755-fb37-46d4-9321-e58b1719d36c
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.5
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1

Configure the second interface:

Check the MAC address of the second network interface:
#ip addr

#cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth1
#nano /etc/sysconfig/network-scripts/ifcfg-eth1

HWADDR=00:15:5D:01:03:07
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=no
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=10.0.0.2
NETMASK=255.255.255.0

Restart network services:
#systemctl restart network.service

To obtain network settings via DHCP, remove the following from ifcfg-eth01:

IPADDR=192.168.1.5
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1

Set the BOOTPROTO option to “dhcp”.
Restart network services:
#systemctl restart network.service

Description of options in the ifcfg-eth01 config file

BOOTPROTO – тип получения сетевым интерфейсом сетевого адреса. Бывает static, dhcp, bootp.
BROADCAST – адрес широковещательной рассылки, но только для ipv4. Например – 192.168.71.255.
DEFROUTE – будет ли этот сетевой интерфейс по умолчанию использоваться при маршрутизации. Два значения: yes или no.
DEVICE – это человекопонятное имя сетевого интерфейса, которое может быть использовано для написания скриптов и понимания, где какой интерфейс.
GATEWAY – адрес шлюза.
HWADDR – классический MAC-адрес (необязательный параметр, иногда могут возникнуть проблемы в виртуальных средах или при замене сетевой аппаратной части).
IPADDR – сам ipv4 адрес. Если в BOOTPROTO указано static.
IPV4_FAILURE_FATAL – указывается, будет ли отключено сетевое устройство, если сконфигурировать адрес ipv4 не удаётся.
IPV6_FAILURE_FATAL – аналогично параметру выше, только для ipv6.
IPV6ADDR – параметр, аналогичный параметру IPADDR, только для ipv6. Пример указания: IPV6ADDR=”2001:db8:1e11:115b::1/32”
IPV6INIT – показывает, надо ли включать возможность работать с ipv6 на данном сетевом интерфейсе
MASTER – определяет имя главного интерфейса, в котором этот физический сетевой интерфейс будет slave (частью). Чаще всего используется для создания логического сетевого интерфейса из нескольких физических.
NAME – имя сетевого интерфейса, которое будет отображаться в GUI.
NETMASK – сетевая маска для ipv4.
NETWORK – сетевой адрес ipv4 сети. Например, 192.168.71.0.
NM_CONTROLLED – определяет будет ли этот сетевой интерфейс управляться демоном.
ONBOOT – говорит системе, стоит ли включать этот сетевой интерфейс при страте ОС или надо ждать.
PEERDNS – содержит ли файл /etc/resolv.conf информацию о DNS, полученную с помощью DHCP.
PEERROUTES – определяет, содержит ли таблица маршрутизации шлюз по умолчанию, получаемый с DHCP.
SLAVE – указывает, что данный интерфейс является составной частью логического интерфейса, указанного именем в параметре MASTER.
TYPE – это тип подключения. Может быть: Ethernet, Bridge, IpIp и многое другое.
USERCTL – будет ли кто-нибудь ещё, кроме пользователя root, изменять состояние этого интерфейса.
UUID – это аппаратное имя сетевого интерфейса (необязательный параметр, иногда могут созникнуть проблемы в виртуальных средах или при замене сетевой аппаратной части).

DNS in CentOS 7

There are two ways to add DNS servers:
1. Specify them in the ifcfg-eth0 settings

DNS1="192.168.1.1"
DNS2="8.8.8.8"
DNS3="8.8.4.4"

After restarting network services, they will appear in /etc/resolv.conf

nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

2. Do not specify DNS in the ifcfg-eth0 settings and add them manually directly to /etc/resolv.conf.

Hostname in CentOS 7

The hostname can be changed in /etc/hostname:
#nano /etc/hostname

proxy.local

Disable IPV6 in CentOS 7

If the IPV6 protocol is not used in the network, it is better to disable it to reduce log clutter, etc. It is also advisable to first disable ipv6 in programs that use it to ensure they work correctly without ipv6.

Check which services use ipv6:
#netstat -tulnp

[root@proxy ~]# netstat -tulnp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp   0  0 0.0.0.0:22       0.0.0.0:*               LISTEN      1406/sshd           
tcp   00 127.0.0.1:25       0.0.0.0:*               LISTEN      1747/master         
tcp6   0      0 :::22       :::*                    LISTEN      1406/sshd           
tcp6       0      0 ::1:25  :::*                    LISTEN      1747/master    

After disabling ipv6 in software, disable it in the system:
#nano /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Edit the /etc/sysconfig/network file, adding the following:

NETWORKING=yes
NETWORKING_IPV6=no
IPV6INIT=no

Default Gateway in CentOS 7

If for some reason the default gateway was not set during network parameter configuration, add it manually.

Check the routing table:
#route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

The line with Destination 0.0.0.0 defines the gateway address. If it is missing or incorrect, add:
#route add default gw 192.168.1.1

Static route in CentOS 7
Suppose we have a subnet 10.0.0.0 with mask 255.255.255.0, and traffic to this subnet is routed via gateway 192.168.1. Add the route:
# route add -net 10.0.0.0/24 gw 192.168.1.1

To save the routing table, do the following:

#touch /etc/sysconfig/network-scripts/route-eth0
#nano /etc/sysconfig/network-scripts/route-eth0

10.0.0.0/24 via 192.168.1.1

Disable SELinux.

Its usage and configuration is a separate matter.

#nano /etc/sysconfig/selinux

SELINUX=disabled

Disable Firewalld.

In CentOS 7, they came up with a replacement for iptables called firewalld. I don’t know why, but there is neither time nor desire to read the manuals for the new shell. Let’s remove the new one and install the old one!

Disable Firewalld:

# systemctl stop firewalld
# systemctl disable firewalld
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

Install the iptables utilities:
# yum -y install iptables-services

Enable iptables to start at boot:
# systemctl enable iptables

Create a file where iptables rules will be added:
#touch /etc/iptables_rules.sh
#chmod 0740 /etc/iptables_rules.sh
#/etc/iptables_rules.sh

#!/bin/bash
#
Правила iptables.
#
# Записываем правила
/sbin/iptables-save  > /etc/sysconfig/iptables

Allow packet forwarding between network interfaces:

#nano /etc/sysctl.conf

net.ipv4.ip_forward = 1

Apply the settings:
# sysctl -p

estart network.service

Note: This post may be AI-assisted and then human-edited. Editorial responsibility: Dmytro Lomaka, Kaltenkirchen.