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
