Ubuntu ships with a number of graphical utilities to configure your network devices. This document is geared toward server administrators and will focus on managing your network on the command line.
Ethernet interfaces
Ethernet interfaces are identified by the system using predictable network interface names. These names can appear as eno1 or enp0s25. However, in some cases an interface may still use the kernel eth# style of naming.
Identify Ethernet interfaces
To quickly identify all available Ethernet interfaces, you can use the ip command as shown below.
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0
valid_lft 3257sec preferred_lft 3257sec
inet6 fe80::216:3eff:fee2:5242/64 scope link
valid_lft forever preferred_lft forever
Another application that can help identify all network interfaces available to your system is the lshw
command. This command provides greater details around the hardware capabilities of specific adapters. In the example below, lshw
shows a single Ethernet interface with the logical name of eth4 along with bus information, driver details and all supported capabilities.
sudo lshw -class network
*-network
description: Ethernet interface
product: MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
vendor: Mellanox Technologies
physical id: 0
bus info: pci@0004:01:00.0
logical name: eth4
version: b0
serial: e4:1d:2d:67:83:56
slot: U78CB.001.WZS09KB-P1-C6-T1
size: 10Gbit/s
capacity: 10Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm vpd msix pciexpress bus_master cap_list ethernet physical fibre 10000bt-fd
configuration: autonegotiation=off broadcast=yes driver=mlx4_en driverversion=4.0-0 duplex=full firmware=2.9.1326 ip=192.168.1.1 latency=0 link=yes multicast=yes port=fibre speed=10Gbit/s
resources: iomemory:24000-23fff irq:481 memory:3fe200000000-3fe2000fffff memory:240000000000-240007ffffff
Ethernet Interface logical names
Interface logical names can also be configured via a Netplan configuration. If you would like control which interface receives a particular logical name use the match
and set-name
keys. The match
key is used to find an adapter based on some criteria like MAC address, driver, etc. The set-name
key can be used to change the device to the desired logical name.
network:
version: 2
renderer: networkd
ethernets:
eth_lan0:
dhcp4: true
match:
macaddress: 00:11:22:33:44:55
set-name: eth_lan0
Ethernet Interface settings
ethtool
is a program that displays and changes Ethernet card settings such as auto-negotiation, port speed, duplex mode, and Wake-on-LAN. The following is an example of how to view the supported features and configured settings of an Ethernet interface.
sudo ethtool eth4
Settings for eth4:
Supported ports: [ FIBRE ]
Supported link modes: 10000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: 10000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Port: FIBRE
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000014 (20)
link ifdown
Link detected: yes
IP addressing
The following section describes the process of configuring your system’s IP address and default gateway needed for communicating on a local area network and the Internet.
Temporary IP address assignment
For temporary network configurations, you can use the ip
command which is also found on most other GNU/Linux operating systems. The ip
command allows you to configure settings which take effect immediately – however they are not persistent and will be lost after a reboot.
To temporarily configure an IP address, you can use the ip
command in the following manner. Modify the IP address and subnet mask to match your network requirements.
sudo ip addr add 10.102.66.200/24 dev enp0s25
The ip
can then be used to set the link up or down.
ip link set dev enp0s25 up
ip link set dev enp0s25 down
To verify the IP address configuration of enp0s25
, you can use the ip
command in the following manner:
ip address show dev enp0s25
10: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0
valid_lft 2857sec preferred_lft 2857sec
inet6 fe80::216:3eff:fee2:5242/64 scope link
valid_lft forever preferred_lft forever6
To configure a default gateway, you can use the ip
command in the following manner. Modify the default gateway address to match your network requirements.
sudo ip route add default via 10.102.66.1
You can also use the ip
command to verify your default gateway configuration, as follows:
ip route show
default via 10.102.66.1 dev eth0 proto dhcp src 10.102.66.200 metric 100
10.102.66.0/24 dev eth0 proto kernel scope link src 10.102.66.200
10.102.66.1 dev eth0 proto dhcp scope link src 10.102.66.200 metric 100
If you require DNS for your temporary network configuration, you can add DNS server IP addresses in the file /etc/resolv.conf
. In general, editing /etc/resolv.conf
directly is not recommended, but this is a temporary and non-persistent configuration. The example below shows how to enter two DNS servers to /etc/resolv.conf
, which should be changed to servers appropriate for your network. A more lengthy description of the proper (persistent) way to do DNS client configuration is in a following section.
nameserver 8.8.8.8
nameserver 8.8.4.4
If you no longer need this configuration and wish to purge all IP configuration from an interface, you can use the ip
command with the flush option:
ip addr flush eth0
Note
Flushing the IP configuration using theip
command does not clear the contents of/etc/resolv.conf
. You must remove or modify those entries manually (or re-boot), which should also cause/etc/resolv.conf
, which is a symlink to/run/systemd/resolve/stub-resolv.conf
, to be re-written.
Dynamic IP address assignment (DHCP client)
To configure your server to use DHCP for dynamic address assignment, create a Netplan configuration in the file /etc/netplan/99_config.yaml
. The following example assumes you are configuring your first Ethernet interface identified as enp3s0
.
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
The configuration can then be applied using the netplan
command:
sudo netplan apply
Static IP address assignment
To configure your system to use static address assignment, create a netplan
configuration in the file /etc/netplan/99_config.yaml
. The example below assumes you are configuring your first Ethernet interface identified as eth0
. Change the addresses
, routes
, and nameservers
values to meet the requirements of your network.
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 10.10.10.2/24
routes:
- to: default
via: 10.10.10.1
nameservers:
search: [mydomain, otherdomain]
addresses: [10.10.10.1, 1.1.1.1]
The configuration can then be applied using the netplan
command.
sudo netplan apply
NOTE
netplan
in Ubuntu Bionic 18.04 LTS doesn’t understand the “to: default
” syntax to specify a default route, and should use the oldergateway4: 10.10.10.1
key instead of the wholeroutes:
block.
The loopback interface is identified by the system as lo
and has a default IP address of 127.0.0.1. It can be viewed using the ip
command.
ip address show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
Name resolution
Name resolution (as it relates to IP networking) is the process of mapping hostnames to IP addresses, and vice-versa, making it easier to identify resources on a network. The following section will explain how to properly configure your system for name resolution using DNS and static hostname records.
DNS client configuration
Traditionally, the file /etc/resolv.conf
was a static configuration file that rarely needed to be changed, or it automatically changed via DCHP client hooks. systemd-resolved
handles nameserver configuration, and it should be interacted with through the systemd-resolve
command. Netplan configures systemd-resolved
to generate a list of nameservers and domains to put in /etc/resolv.conf
, which is a symlink:
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
To configure the resolver, add the IP addresses of the appropriate nameservers for your network to the netplan
configuration file. You can also add optional DNS suffix search-lists to match your network domain names. The resulting file might look like the following:
network:
version: 2
renderer: networkd
ethernets:
enp0s25:
addresses:
- 192.168.0.100/24
routes:
- to: default
via: 192.168.0.1
nameservers:
search: [mydomain, otherdomain]
addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
The search option can also be used with multiple domain names so that DNS queries will be appended in the order in which they are entered. For example, your network may have multiple sub-domains to search; a parent domain of example.com
, and two sub-domains, sales.example.com
and dev.example.com
.
If you have multiple domains you wish to search, your configuration might look like the following:
network:
version: 2
renderer: networkd
ethernets:
enp0s25:
addresses:
- 192.168.0.100/24
routes:
- to: default
via: 192.168.0.1
nameservers:
search: [example.com, sales.example.com, dev.example.com]
addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
If you try to ping a host with the name server1
, your system will automatically query DNS for its Fully Qualified Domain Name (FQDN) in the following order:
-
server1.example.com
-
server1.sales.example.com
-
server1.dev.example.com
If no matches are found, the DNS server will provide a result of notfound and the DNS query will fail.
Static hostnames
Static hostnames are locally defined hostname-to-IP mappings located in the file /etc/hosts
. Entries in the hosts
file will have precedence over DNS by default. This means that if your system tries to resolve a hostname and it matches an entry in /etc/hosts
, it will not attempt to look up the record in DNS. In some configurations, especially when Internet access is not required, servers that communicate with a limited number of resources can be conveniently set to use static hostnames instead of DNS.
The following is an example of a hosts
file where a number of local servers have been identified by simple hostnames, aliases and their equivalent Fully Qualified Domain Names (FQDN’s):
127.0.0.1 localhost
127.0.1.1 ubuntu-server
10.0.0.11 server1 server1.example.com vpn
10.0.0.12 server2 server2.example.com mail
10.0.0.13 server3 server3.example.com www
10.0.0.14 server4 server4.example.com file
Note
In this example, notice that each of the servers were given aliases in addition to their proper names and FQDN’s. Server1 has been mapped to the name vpn, server2 is referred to as mail, server3 as www, and server4 as file.
Name Service Switch (NSS) configuration
The order in which your system selects a method of resolving hostnames to IP addresses is controlled by the Name Service Switch (NSS) configuration file /etc/nsswitch.conf
. As mentioned in the previous section, typically static hostnames defined in the systems /etc/hosts
file have precedence over names resolved from DNS. The following is an example of the line responsible for this order of hostname lookups in the file /etc/nsswitch.conf
.
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
-
files
first tries to resolve static hostnames located in/etc/hosts
. -
mdns4_minimal
attempts to resolve the name using Multicast DNS. -
[NOTFOUND=return]
means that any response ofnotfound
by the precedingmdns4_minimal
process should be treated as authoritative and that the system should not try to continue hunting for an answer. -
dns
represents a legacy unicast DNS query. -
mdns4 represents a multicast DNS query.
To modify the order of these name resolution methods, you can simply change the hosts:
string to the value of your choosing. For example, if you prefer to use legacy unicast DNS versus multicast DNS, you can change the string in /etc/nsswitch.conf
as shown below:
hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4
Bridging multiple interfaces
Bridging is a more advanced configuration, but is very useful in multiple scenarios. One scenario is setting up a bridge with multiple network interfaces, then using a firewall to filter traffic between two network segments. Another scenario is using bridge on a system with one interface to allow virtual machines direct access to the outside network. The following example covers the latter scenario:
Configure the bridge by editing your netplan
configuration found in /etc/netplan/
, entering the appropriate values for your physical interface and network:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
bridges:
br0:
dhcp4: yes
interfaces:
- enp3s0
Now apply the configuration to enable the bridge:
sudo netplan apply
The new bridge interface should now be up and running. The brctl
provides useful information about the state of the bridge, controls which interfaces are part of the bridge, etc. See man brctl
for more information.
networkd-dispatcher for hook scripts
Users of the former ifupdown
may be familiar with using hook scripts (e.g., pre-up, post-up) in their interfaces file. Netplan configuration does not currently support hook scripts in its configuration definition.
Instead, to achieve this functionality with the networkd
renderer, users can use networkd-dispatcher. The package provides both users and packages with hook points when specific network states are reached, to aid in reacting to network state.
Note:
If you are on Desktop (not Ubuntu Server) the network is driven by Network Manager — in that case you need NM Dispatcher scripts instead.
The Netplan FAQ has a great table that compares event timings between ifupdown
/systemd-networkd
/network-manager
.
It is important to be aware that these hooks run asynchronously; i.e. they will not block transition into another state.
The Netplan FAQ also has an example on converting an old ifupdown
hook to networkd-dispatcher
.
Resources
-
The Ubuntu Wiki Network page has links to articles covering more advanced network configuration.
-
The Netplan website has additional examples and documentation.
-
The Netplan man page has more information on Netplan.
-
The systemd-resolved man page has more information on systemd-resolved service.
-
For more information on bridging see the netplan.io examples page
Содержание
Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).
Настройка TCP/IP в Linux для работы в сети Ethernet
Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.
Параметры сети
Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:
IP-адрес — как уже говорилось в первой части статьи — это уникальный адрес машины, в формате четырех десятичных чисел, разделенных точками. Обычно, при работе в локальной сети, выбирается из частных диапазонов, например: 192.168.0.1
Маска подсети — так же, 4 десятичных числа, определяющие, какая часть адреса относиться к адресу сети/подсети, а какая к адресу хоста. Маска подсети является числом, которое складывается (в двоичной форме) при помощи логического И, с IP-адресом и в результате чего выясняется, к какой подсети принадлежит адрес. Например адрес 192.168.0.2 с маской 255.255.255.0 принадлежит подсети 192.168.0.
Адрес подсети — определяется маской подсети. При этом, для петлевых интерфейсов не существует подсетей.
Широковещательный адрес — адрес, используемый для отправки широковещательных пакетов, которые получат все хосты подсети. Обычно, он равен адресу подсети со значением хоста 255, то есть для подсети 192.168.0 широковещательным будет 192.168.0.255, аналогично, для подсети 192.168 широковещательным будет 192.168.255.255. Для петлевых интерфейсов не существует широковещательного адреса.
IP адрес шлюза — это адрес машины, являющейся шлюзом по-умолчанию для связи с внешним миром. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети), потому что данным сетям некуда отправлять пакеты вне сети, то же самое относиться и к петлевым интерфейсам.
IP-адрес сервера имен (DNS — сервера) — адрес сервера преобразующего имена хостов в IP адреса. Обычно, предоставляется провайдером.
Файлы настроек сети в Linux (конфигурационные файлы)
Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей «Этапы загрузки Linux». В целом, вся работа Linux основана на процессе init, который рождается при загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю необходимую работу, будь то запуск bash или демона. Да, и вся загрузка Linux основана на скриптах bash, в которых прописана вся последовательность запуска мелких утилит с различными параметрами, которые последовательно запускаются/останавливаются при запуске/остановке системы. Аналогично запускается и сетевая подсистема Linux.
Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина, думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов, станет более-менее понятно, например у Debian/Ubuntu (за основу возьмем эту ветвь дистрибутивов) за инициализацию сети отвечает скрипт /etc/init.d/networking
, просмотрев содержимое которого:
net-server:~#cat /etc/init.d/networking #!/bin/sh -e ### BEGIN INIT INFO # Provides: networking # Required-Start: mountkernfs $local_fs # Required-Stop: $local_fs # Should-Start: ifupdown # Should-Stop: ifupdown # Default-Start: S # Default-Stop: 0 6 # Short-Description: Raise network interfaces. ### END INIT INFO PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" [ -x /sbin/ifup ] || exit 0 . /lib/lsb/init-functions process_options() { [ -e /etc/network/options ] || return 0 log_warning_msg "/etc/network/options still exists and it will be IGNORED! Read README.Debian of netbase." } check_network_file_systems() { [ -e /proc/mounts ] || return 0 if [ -e /etc/iscsi/iscsi.initramfs ]; then log_warning_msg "not deconfiguring network interfaces: iSCSI root is mounted." exit 0 fi exec 9<&0 < /proc/mounts while read DEV MTPT FSTYPE REST; do case $DEV in /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*) log_warning_msg "not deconfiguring network interfaces: network devices still mounted." exit 0 ;; esac case $FSTYPE in nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs) log_warning_msg "not deconfiguring network interfaces: network file systems still mounted." exit 0 ;; esac done exec 0<&9 9<&- } check_network_swap() { [ -e /proc/swaps ] || return 0 exec 9<&0 < /proc/swaps while read DEV MTPT FSTYPE REST; do case $DEV in /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*) log_warning_msg "not deconfiguring network interfaces: network swap still mounted." exit 0 ;; esac done exec 0<&9 9<&- } case "$1" in start) process_options log_action_begin_msg "Configuring network interfaces" if ifup -a; then log_action_end_msg $? else log_action_end_msg $? fi ;; stop) check_network_file_systems check_network_swap log_action_begin_msg "Deconfiguring network interfaces" if ifdown -a --exclude=lo; then log_action_end_msg $? else log_action_end_msg $? fi ;; force-reload|restart) process_options log_warning_msg "Running $0 $1 is deprecated because it may not enable again some interfaces" log_action_begin_msg "Reconfiguring network interfaces" ifdown -a --exclude=lo || true if ifup -a --exclude=lo; then log_action_end_msg $? else log_action_end_msg $? fi ;; *) echo "Usage: /etc/init.d/networking {start|stop}" exit 1 ;; esac exit 0
можно найти несколько функций, проверяющих наличие подключенных сетевых файловых систем (check_network_file_systems(), check_network_swap()), а так же проверку существования какого-то пока непонятного конфига /etc/network/options (функция process_options()), а в самом низу, конструкцией case «$1» in проверяется первый параметр переданный скрипту и в соответствии с введенным параметром (start/stop/force-reload|restart или любое дугое) производит определенные действия. Из этих самых «определенных действий», на примере аргумента start видно, что сначала запускается функция process_options, далее отправляется в лог фраза Configuring network interfaces, и запускается команда ifup -a. Если посмотреть man ifup, то видно что данная команда читает конфиг из файла /etc/network/interfaces и согласно ключу -a запускает все интерфейсы имеющие параметр auto.
The ifup and ifdown commands may be used to configure (or, respectively, deconfigure) network interfaces based on interface definitions in the file /etc/network/interfaces. -a, --all If given to ifup, affect all interfaces marked auto. Interfaces are brought up in the order in which they are defined in /etc/network/interfaces. If given to ifdown, affect all defined interfaces. Interfaces are brought down in the order in which they are currently listed in the state file. Only interfaces defined in /etc/network/interfaces will be brought down.
Соответственно, прочитав man interfaces (rus) или man interfaces (eng), становиться ясно, как же в Debian/Ubuntu настроить какой-либо сетевой интерфейс с помощью конфига /etc/network/interfaces. Ниже, пример данного конфигурационного файла для 3х интерфейсов: петлевой (lo), со статичным IP (eth2) и IP получаемым по dhcp (eth0):
ip-server:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth2 iface eth2 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.254 broadcast 192.168.1.255
В данном конфиге строки allow-hotplug и auto — это синонимы и интерфейсы будут подняты по команде ifup -a. Вот, собственно, и вся цепь работы сетевой подсистемы. Аналогично, в других дистрибутивах: в RedHat и SUSE сеть запускается скриптом /etc/init.d/network. Рассматрев его, аналогично можно найти, где лежит конфигурация сети.
/etc/hosts
Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:
ip-server:~# cat /etc/hosts # ip host.in.domain host 127.0.0.1 localhost 127.0.1.1 ip-server.domain.local ip-server 192.168.1.1 ip-server.domain.local ip-server
Исторически, данный файл использовался вместо службы DNS. В настоящее время, файл так же может использоваться вместо службы DNS, но только при условии, что в вашей сети количество машин измеряется в единицах, а не в десятках или сотнях, потому что в таком случае, придется контролировать корректность данного файла на каждой машине.
/etc/networks
Данный файл хранит имена и адреса локальной и других сетей. Пример:
ip-server:~# cat /etc/networks default 0.0.0.0 loopback 127.0.0.0 link-local 169.254.0.0 home-network 192.168.1.0
При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.
/etc/nsswitch.conf
Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:
Для хостов: hosts: files dns Для сетей: networks: files
Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.
/etc/resolv.conf
Этот файл определяет параметры механизма преобразования сетевых имен в IP адреса. Пример:
ip-server:~# cat /etc/resolv.conf nameserver 10.0.0.4 nameserver 10.0.0.1 search domain.local
Первые 2 строчки указывают сервера DNS. Третья строка указывает домены поиска. Если при разрешении имени, имя не будет FQDN-именем, то данный домен подставиться в виде «окончания». Например при выполнении команды ping host, прингуемый адрес преобразуется в host.domain.local. Остальные параметры можно почитать в man resolv.conf.
В современных дистрибутивах Linux используется динамическая генерация данного файла, с помощью утилиты resolvconf. Она является посредником между службами, динамически предоставляющими сервера имен (например DHCP client) и службами, использующими данные сервера имен. Статические адреса DNS серверов, в случае использования resolvconf, задаются внутри /etc/network/interfaces (подробнее об этом — в разделе настройки).
Настройка сети
Диагностика сети Linux
Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.
ping
Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:
[root@proxy ~]# ping ya.ru PING ya.ru (87.250.251.3) 56(84) bytes of data. 64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=1 ttl=57 time=42.7 ms 64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=2 ttl=57 time=43.2 ms 64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=3 ttl=57 time=42.5 ms 64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=4 ttl=57 time=42.5 ms 64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=5 ttl=57 time=41.9 ms ^C --- ya.ru ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4012ms rtt min/avg/max/mdev = 41.922/42.588/43.255/0.500 ms
Как видно, из приведенного примера, ping выводит нам кучу полезной информации. Прежде всего, мы выяснили, что можем установить соединение с хостом ya.ru (иногда говорят, что «хост ya.ru нам доступен»). Во-вторых, мы видим, что DNS работает корректно, потому что «пингуемое» имя было корректно преобразовано в IP адрес (PING ya.ru (87.250.251.3)). Далее, в поле icmp_seq= указана нумерация отправляемых пакетов. Каждому отправляемому пакету последовательно присваивается номер и если в данной нумерации будут «провалы», то это нам расскажет о том, что соединение с «пингуемым» неустойчиво, а так же может означать, что сервер, которому шлют пакеты перегружен. По значению time= мы видим, сколько времени пакет путешествовал до 87.250.251.3 и обратно. Остановить работу утилиты ping можно клавишами Ctrl+C.
Так же, утилита ping интересна тем, что может позволить увидеть, где именно возникли неполадки. Допустим, утилита ping выводит сообщение network not reachable (сеть недоступна), либо другое аналогичное сообщение. Это, скорее всего, говорит о некорректной настройке вашей системы. В таком случае, можно послать пакеты по IP-адресу провайдера, чтобы понять, в каком месте возникает проблема (между локальным ПК или «дальше»). Если Вы подключены к интернету через маршрутизатор, то можно послать пакеты по его IP. Соответственно, если проблема проявиться уже на этом этапе, это говорит, о неправильном конфигурировании локальной системы, либо о повреждении кабеля, если маршрутизатор отзывается, а сервер провайдера нет, то проблема — в канале связи провайдера и т.д. Наконец, если неудачей завершилось преобразовании имени в IP, то можно проверить связь по IP, если ответы будут приходить корректно, то можно догадаться, что проблема в DNS.
Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.
traceroute
Простым языком, команда называется трассировка маршрута. Как можно понять из названия — данная утилита покажет по какому маршруту шли пакеты до хоста. Утилита traceroute несколько похожа на ping, но отображает больше интересной информации. Пример:
[root@proxy ~]# traceroute ya.ru traceroute to ya.ru (213.180.204.3), 30 hops max, 60 byte packets 1 243-083-free.kubtelecom.ru (213.132.83.243) 6.408 ms 6.306 ms 6.193 ms 2 065-064-free.kubtelecom.ru (213.132.64.65) 2.761 ms 5.787 ms 5.777 ms 3 lgw.kubtelecom.ru (213.132.75.54) 5.713 ms 5.701 ms 5.636 ms 4 KubTelecom-lgw.Krasnodar.gldn.net (194.186.6.177) 81.430 ms 81.581 ms 81.687 ms 5 cat26.Moscow.gldn.net (194.186.10.118) 47.789 ms 47.888 ms 48.011 ms 6 213.33.201.230 (213.33.201.230) 43.322 ms 41.783 ms 41.106 ms 7 carmine-red-vlan602.yandex.net (87.250.242.206) 41.199 ms 42.578 ms 42.610 ms 8 www.yandex.ru (213.180.204.3) 43.185 ms 42.126 ms 42.679 ms
Как видно, можно проследить маршрут от маршрутизатора провайдера 243-083-free.kubtelecom.ru (213.132.83.243) (Юг россии) до конечного хоста в www.yandex.ru (213.180.204.3) в москве.
dig
Данная утилита посылает запросы серверам DNS и возвращает информацию о заданном домене. Пример:
[root@proxy ~]# dig @ns.kuban.ru roboti.ru ; <<>> DiG 9.3.6-P1 <<>> @ns.kuban.ru roboti.ru ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64412 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;roboti.ru. IN A ;; ANSWER SECTION: roboti.ru. 448 IN A 72.52.4.90 ;; AUTHORITY SECTION: roboti.ru. 345448 IN NS ns1.sedoparking.com. roboti.ru. 345448 IN NS ns2.sedoparking.com. ;; Query time: 102 msec ;; SERVER: 62.183.1.244#53(62.183.1.244) ;; WHEN: Thu Feb 17 19:44:59 2011 ;; MSG SIZE rcvd: 94
Команда dig послала запрос серверу DNS — ns.kuban.ru (@ns.kuban.ru — данный параметр указывать не обязательно, в таком случае источником информации о DNS будет взят сервер из настройки вашей системы) о доменном имени roboti.ru. В результате чего, получила ответ, в котором мы можем увидеть в разделе ANSWER SECTION информацию об IP адресах домена, в разделе AUTHORITY SECTION информацию о т.н. авторитетных DNS серверах. Третья строка снизу говорит нам о том, какой сервер предоставил ответ.
Другие утилиты диагностики
Подключение новой сетевой карты
Подключение и запуск новой сетевой карты сводится к выполнению нескольких шагов:
-
Физическое подключение карты
-
Просмотр вывода dmesg на обнаружение системой новой сетевой карты:
Посмотрим вывод ДО подключения новой карты:server:~# dmesg | grep eth [ 4.720550] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection [ 5.130191] e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection [ 15.285527] e1000: eth2: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [ 15.681056] e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
в выводе видно, что в системе есть 2 сетевые карты eth1 и eth2. Подключаем третью и смотрим вывод:server:~# dmesg | grep eth [ 4.720513] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection [ 5.132029] e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection [ 5.534684] e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network Connection [ 39.274875] udev: renamed network interface eth2 to eth3 [ 39.287661] udev: renamed network interface eth1_rename_ren to eth2 [ 45.670744] e1000: eth2: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [ 46.237232] e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [ 96.977468] e1000: eth3: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
В dmesg мы видим, что появилась новая сетевушка — eth3, которая на самом деле — eth2, но переименована менеджером устройств udev в eth3, а eth2 — это на самом деле переименованная eth1 (об udev мы поговорим в отдельном посте). Появление нашей новой сетевой в dmesg нам говорит, что сетевая карта поддерживается ядром и корректно определилась. Осталось дело за малым — настроить новый интерфейс в /etc/network/interfaces (Debian), потому что данная карта не была инициализирована стартовым скриптом /etc/init.d/network. ifconfig данную карту видит:
server:~# ifconfig eth3 eth3 Link encap:Ethernet HWaddr 08:00:27:5f:34:ad inet6 addr: fe80::a00:27ff:fe5f:34ad/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:311847 errors:0 dropped:0 overruns:0 frame:0 TX packets:126 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:104670651 (99.8 MiB) TX bytes:16184 (15.8 KiB)
но опять же — не конфигурирует. Как конфигурировать сетевую карту говорилось выше.
Резюме
Думаю, на сегодня это все. Когда начал писать данную статью, думал что впишусь в один пост, но он получился громаден. Посему было решено разбить статью на две. Итого, я постарался изложить, не пошаговое хауту по настройке сети, а изложить принцип и объяснить понимание того, как же запускается и работает сеть в Linux. Очень надеюсь, что мне это удалось. Буду рад вашим комментариями и дополнениям. Со временем, буду статью дополнять.
Что еще почитать по теме?
Автор | Раздел |
---|---|
Крамаренко Максим | как сделать … |
Для систематизирования информации по настройке сети в ОС Linux было решено написать эту заметку. Здесь в доступной форме описан процесс настройки сетевого интерфейса на примере ОС Ubuntu. Также данное руководство поможет «поднять» локальную сеть и на любом другом дистрибутиве Linux.
Как посмотреть текущие сетевые настройки в Linux?
Для просмотра текущих параметров сети и состояния сетевых интерфейсов в ОС Линукс существует команда:
sudo ifconfig
Пример вывода:
eth0Link encap:Ethernet HWaddr 00:11:5b:91:25:3e
inet addr:192.168.1.18 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: fe80::211:5bff:fe91:253e/64 Диапазон:Ссылка
ВВЕРХ BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:648009 errors:0 dropped:0 overruns:0 frame:0
TX packets:1075413 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:1000
RX bytes:70177943 (70.1 MB) TX bytes:1536487024 (1.5 GB)
Прервано:19 Base address:0xd000
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Диапазон:Узел
ВВЕРХ LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:106 errors:0 dropped:0 overruns:0 frame:0
TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:0
RX bytes:13776 (13.7 KB) TX bytes:13776 (13.7 KB)
Для просмотра абсолютно всех сетевых интерфейсов запускаем команду с ключом -a:
# sudo ifconfig -a
Из приведенного примера видно, что на компьютере используется два сетевых интерфейса: eth0 и lo.
Интерфейс lo — это локальная петля, которая имеет IP-адрес 127.0.0.1 и предназначена для сетевого доступа к своему же компьютеру. Далее этот интерфейс рассматриваться не будет, так как для эффективной работы не требует дополнительной настройки.
Интерфейс eth0 – это Ethernet сетевая карта, которая имеет сетевые параметры: IP-адрес – 192.168.1.18, маску сети – 255.255.0.0 и MAC-адрес – 00:11:5b:91:25:3e. Значение RUNNING показывает, что в данный момент сетевой интерфейс eth0 работает.
Для просмотра типа соединения, скорости и поддерживаемых параметров сетевым интерфейсом eth0 набираем команду:
sudo ethtool eth0
Вывод:
Supported ports: [ TP MII ]
Supported link modes:10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pg
Wake-on: d
Current message level: 0×000000c5 (197)
Link detected: yes
Из вывода видно, что сетевой интерфейс eth0 работает на скорости 100Мб/с с включенным полным дуплексом (Full Duplex). Полный дуплекс от полудуплекса (Half Duplex) отличается тем, что первый обеспечивает передачу данных в обе стороны одновременно, а второй осуществляет передачу входящих и исходящих данных поочередно.
Как остановить/запустить или перезагрузить сетевой интерфейс?
Для остановки сетевого интерфейса eth0 существует команда:
sudo ifconfig eth0 down
Команду легко запомнить, так как после названия самой команды идет имя интерфейса и после действие, которое нужно произвести над ним (down или up).
Для возобновления работы сетевого интерфейса eth0:
sudo ifconfig eth0 up
Чтобы перезапустить все сетевые интерфейсы ОС вводим команду:
sudo /etc/init.d/networking restart
Эта строка запускает bash-скрипт networking, перезапускающий сетевые интерфейсы системы.
Так же по аналогии производится остановка всех интерфейсов:
sudo /etc/init.d/networking stop
и их запуск:
sudo /etc/init.d/networking start
Как изменить сетевые настройки?
Чтобы изменить сетевые настройки в ОС Linux можно пойти двумя путями:
- использовать команды для присвоения параметров сетевых интерфейсов;
- отредактировать конфигурационный файл, содержащий параметры сетевых интерфейсов.
Настроить сеть можно одним из вышеприведенных способов. Эти два способа абсолютно взаимозаменяемые. Кому как привычнее.
- Настройка сети с помощью команд.
Чтобы настроить сетевой интерфейс, не влезая в дебри конфигурационного файла, нужно воспользоваться специальными командами.
Чтобы задать основной IP-адрес и маску сети для интерфейса eth0:
sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
Для присвоения дополнительного IP-адреса интерфейсу eth0:
sudo ifconfig eth0:0 10.10.0.1 netmask 255.255.255.0
- Настройка сети с помощью редактирования конфигурационного файла.
Редактировать будем конфигурационный файл /etc/network/interfaces. Чтобы вывести на экран содержимое конфига, набираем команду:
sudo nano /etc/network/interfaces
Если локальная сеть, к которой подключаемся, подразумевает ручную настройку IP-адреса, то содержимое конфигурационного файла должно выглядеть примерно так:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.18
netmask 255.255.0.0
gateway 192.168.1.253
Первые строки оставляем как есть, так как их дополнительная настройка не требуется.
Строка auto eth0 говорит, что сетевой интерфейс eth0 должен стартовать при загрузке ОС.
Вторая строка iface eth0 inet static говорит, что сетевому интерфейсу eth0 IP-адрес задается вручную.
Строка address 192.168.1.18 говорит, что сетевому интерфейсу eth0 назначен IP-адрес 192.168.1.18 (этот сетевой адрес взят для примера и на его месте может быть любой другой).
Строка netmask 255.255.0.0 говорит, что маска сети является 255.255.0.0.
Последняя строчка gateway 192.168.1.253 показывает, что сетевым шлюзом является компьютер с IP-адресом 192.168.1.253. Эта строка может отсутствовать, так как ее наличие в конфигурационном файле зависит от параметров локальной сети, к которой подключается настраиваемый компьютер.
Если в подключаемой локальной сети используется автоматическая раздача сетевых настроек DHCP-сервером, то конфигурационный файл /etc/network/interfaces должен быть приведен к виду:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Дополнительные сетевые настройки: DNS-сервера, MAC-адреса и скорость сетевого интерфейса.
Настройка DNS-сервера.
Так же во многих случаях для правильной работы локальной сети на настраиваемом компьютере потребуется ввести IP-адрес используемого DNS-сервера.
Для этого нужно открыть конфигурационный файл командой:
sudo nano /etc/resolv.conf
Вывод:
Generated by NetworkManager
nameserver 192.168.1.253
Строка nameserver 192.168.1.253 говорит, что в качестве DNS-сервера используется компьютер с IP-адресом 192.168.1.253.
Смена MAC-адреса сетевой карты.
Чтобы временно поменять MAC-адрес сетевой карты eth0 нужно воспользоваться командой:
sudo ifconfig eth0 hw ether 00:01:02:03:04:05
Последнее число – это новый MAC-адрес.
Для смена MAC-адреса навсегда нужно в конфигурационном файле /etc/network/interfaces к настройкам сетевого интерфейса добавить строку с новым MAC-адресом:
auto eth0
iface eth0 inet dhcp
pre-up ifconfig eth0 hw ether 00:01:02:03:04:05
Смены скорости сетевого интерфейса.
Для строгого задания скорости сетевой карты:
sudo ethtool -s eth0 speed 100 duplex full autoneg off
sudo ethtool -s eth0 speed 10 duplex half autoneg off
Зарубин Иван
Эксперт по Linux и Windows
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Введение | |
Получить список сетевых интерфейсов (ip a) | |
Установить статический IP | |
Включить (up) / Выключить (down) сетевой интерфейс | |
Изменить gateway | |
Изменить netmask | |
Прослушиваемые порты | |
iftop |
Введение
Настройка сети это одно из самых частых действий администратора Linux
Это статья общего характера. Смотрите также статьи
-
Настройка сети в Ubuntu
-
Настройка сети в Debian
-
Настройка сети в Rocky
-
Настройка сети в CentOS
Настройка сети
Изучить файл с перечнем задействованных интерфейсов можно с помощью команды
vi /etc/network/interfaces
Далее настройка зависит от версии Linux, которую Вы используете.
На новых версиях
Debian
.
Например, на Debian 9 используется
Iproute2
Если Вам нужно настроить сеть на старой версии Debian с помощью утилит
ifconfig
пролистайте страницу вниз или перейдите по
ссылке
Настройка сети с помощью Iproute2
Актуально для Debian 9 и выше.
Чтобы получить список интерфейсов нужно воспользоваться командой
ip a
На выходе будет что-то похожее на
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 30:f9:ed:d9:ea:d3 brd ff:ff:ff:ff:ff:ff
inet 192.0.2.131/24 brd 192.0.2.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::32f9:edff:fed9:ead3/64 scope link
valid_lft forever preferred_lft forever
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:76:3f:f5:c4:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.43.4/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp1s0
valid_lft 2800sec preferred_lft 2800sec
inet6 fe80::ba76:3fff:fef5:c41f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
1: Первый интерфейс это
lo
он направлен на локальную машину и имеет IP
127.0.0.1/8
2: Второй интерфейс
enp3s0 это моё поключение к по Ethernet к другому ПК.
В этом примере компьютер с Debian (1) соединён с компьютером
с
Windows
(2) напрямую через Ethernet кабель
Через это подключение я захожу на комп номер 1 по SSH.
IP компьютера с Debian вы видите выше
192.0.2.131/24
, а у компа с Windows IP
192.0.2.130/24
его здесь, естественно не видно.
Как настроить этот IP читайте
дальше
3: Третий интефейс
wlp1s0
это подключение к местному Wi-Fi от мобильного телефона.
IP получен динамически
192.168.43.4/24
Раньше интерфейсы назывались
eth0
,
eth1
и так далее, сейчас у них более разнообразные названия.
enp0s31f6: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 54:05:db:cd:b2:af txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xef380000-ef3a0000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2465 bytes 795656 (795.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2465 bytes 795656 (795.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.1 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 678 bytes 51442 (51.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.70.158 netmask 255.255.240.0 broadcast 10.1.79.255
inet6 fe80::9708:9f80:20b5:4777 prefixlen 64 scopeid 0x20<link>
ether 8c:8d:28:c5:a2:2e txqueuelen 1000 (Ethernet)
RX packets 1103516 bytes 1061399166 (1.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 320242 bytes 110222925 (110.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Как установить статический IP
Чтобы подлкючиться к другому компьютеру через Ethernet нужно в Windows выставить
параметры адаптера через контольную панель. То же самое нужно было сделать и
в Linux.
Для этого нужно выполнить команду
sudo vi /etc/network/interfaces
И добавить туда
auto enp3s0
iface enp3s0 inet static
address 192.0.2.131
netmask 255.255.255.0
dns-nameservers 8.8.8.8,8.8.4.4
auto wlp1s0
iface wlp1s0 inet dhcp
Обратите внимание, что gateway не указан.
И перезапустить сеть
/etc/init.d/networking restart
или
sudo service networking restart
Второй вариант проще запомнить, но, чтобы он заработал
нужно наличие service
Теперь если у Вас установлен SSH можно зайти на компьютер с Linux по ssh с помощью
Putty
или
MobaXterm
Если нужно установить SSH выполните
sudo apt install openssh-server
sudo apt-get install openssh-client
Включить / Выключить сетевой интерфейс
ВКЛЮЧИТЬ интерфейс enp0s25:
ip link
set dev enp0s25 up
ВЫКЛЮЧИТЬ интерфейс enp0s25:
ip link
set dev enp0s25 down
Изменить Gateway
Удаление старого gateway
route delete default
Добавление нового gateway
route add default gw IP_Address
Если старых gateway много, то нужно указать какой конкретно IP с какого интерфейса
удалить
route delete default gw 10.0.0.1 eth0
Для создания тоже можно указать конкретные данные
route add default gw 192.168.0.1 eth0
Изменить netmask
Что такое netmask или маска подсети вы можете узнать в статье
«Компьютерные сети»
Узнать свою маску
ip r
default via 10.6.0.1 dev eth0
10.6.0.0/8 dev eth0 src 10.6.1.68
Удалить старую
ip address del 10.6.1.100/8 dev eth0
Добавить новую
ip address add 10.6.1.68/22 dev eth0
Прослушиваемые порты
lsof
Утилита lsof позволяет посмотреть
все
открытые в системе соединения.
Чтобы изучить именно сетевые соединения воспользуйтесь опцией
i
Чтобы отображались именно порты, а не названия сетевых служб примените опцию
P
lsof -i -P
ss
На вопрос как посмотреть список открытых портов также может ответить утилита ss
ss -lntup
Если нужно проверить используется ли определённый порт, например 5000
ss -na | grep :5000
Если вывод пуст, значит порт не используется
Чтобы узнать какая программа слушает определённый порт нужно предварительно установить один из
инструментов:
netstat, fuser или lsof
Начнём с netstat
Netstat
sudo apt install net-tools
С помощью команды
netstat
можно посмотреть список активных соединений по сети
netstat
Обычно netstat используют с набором опций tulpn
который и позволяет понять какая программа слушает какой порт.
netstat -tulpn
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
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 —
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN —
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN —
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN —
tcp6 0 0 :::22 :::* LISTEN —
tcp6 0 0 ::1:631 :::* LISTEN —
tcp6 0 0 ::1:6010 :::* LISTEN —
tcp6 0 0 ::1:6011 :::* LISTEN —
tcp6 0 0 :::80 :::* LISTEN —
udp 0 0 0.0.0.0:52756 0.0.0.0:* —
udp 0 0 0.0.0.0:68 0.0.0.0:* —
udp 0 0 0.0.0.0:631 0.0.0.0:* —
udp 0 0 0.0.0.0:5353 0.0.0.0:* —
udp6 0 0 :::45815 :::* —
udp6 0 0 :::5353 :::* —
Настройка сети с помощью ifconfig
Получить информацию об имеющихся интерфейсах на старых версиях Debian можно с помощью команды
ifconfig
Изучите вывод этой команды и посмотрите какой интерфейс Вам доступен. Обычно это eth0.
, если нужно получать ip автоматически
iface eth0 inet dhcp
Если нужно задать статический ip
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
Чтобы изменения пришли в силу нужно выполнить
ifup eth0
Выключить wi-fi
ifconfig wlan0 down
Включить/выключить ceть
ifconfig eth0 up/down
Перезапустить/остановить/запустить сетевые службы
/etc/init.d/networking restart/stop/start
Настроить DNS можно через файл /etc/resolv.conf
nameserver 8.8.8.8
При
установке
нужно было запомнить какие сетевые интерфейсы
вам предлагает сконфигурировать Debian.
В старых версиях Dbian это было просто, они назывались eth0, eth1 и так далее.
Поэтому для включения сетевого интерфейса, в приведённой выше команде нужно менять 0 на 1 и т.д.
В новых версиях Debian и в других Unix-подобных дистрибутивах, например
OpenBSD
сетевые интерфейсы называются более разнообразно (msk0, sk0 и др.)
Для того, чтобы с этим не возникало сложностей — полезно записывать то, что предлагается сконфигурировать при
установке дистрибутива.
Включить автоматическое получение ip
dhclient eth0
Выключить автоматическое получение ip можно вытащив сетевой шнур и вставив обратно. Говорят, что
должно сброситься.
Советую выполнить
man interfaces
и изучить вывод.
iftop
Мониторить объём входящего и исходящего траффика на определённом интерфейсе можно
командой
iftop -i eth0
Сеть | |
Настройка сети в Debian | |
Настройка сети в Ubuntu | |
Настройка сети в CentOS | |
Настройка сети в Rocky | |
Linux | |
ifconfig | |
firewall | |
iptables | |
etc/hosts | |
eth0 | |
ip | |
SSH | |
SCP | |
Компьютерные сети |
Для доступа к сетевым картам в Linux используются так называемые интерфейсы. Интерфейсы это не файлы устройств и их нет в каталоге /dev. Интерфейсы создаются динамически и не всегда связаны с сетевыми картами. Например интерфейс ppp0 — это интерфейс VPNа, организованного по протоколу PPTP, а интерфейс lo это виртуальная сетевая карта с адресом localhost (127.0.0.1). В Linux имена интерфейсов традиционно состоят из мнемонического типа интерфейса и его порядкового номера. Карты ethernet доступны через интерфейсы eth0, eth1 и т.д. В системах, использующих systemd способ именования другой — интерфейсы имеют имена вида enp2s0 (en -Ethernet, p — PCI, 2 — номер на шине) Список всех интерфейсов можно посмотреть командой ifconfig -a
или ip link
.
Привязка интерфейса к карте
При наличии нескольких сетевых карт возникает вопрос о порядке их нумерации. В CentOS 6 эта задача возложена на подсистему обнаружения и конфигурации устройств — udev. В системах с systemd правила именования встроены в udev, но могот быть переопределены, как написано ниже.
Конфигурационный файл переименования интерфейсов обновляется автоматически при первом обнаружении очередной сетевой карты и находится в файле /etc/udev/rules.d/70-persistent-net.rules. Файл состоит из строк такого содержания:
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:29:24:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка).
ifcfg
Классическая утилита конфигурации сетевых интерфейсов ifcfg
#просмотр списка активных интерфейсов
ifcfg
#просмотр конфигурации конкретного интерфейса
ifcfg eth0
#просмотр списка доступных интерфейсов
ifcfg -a
#настройка ip адреса и активация интерфейса
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
#деактивация интерфейса
ifconfig eth0 down
route
Настройка таблицы маршрутизации route
#добавление шлюза по умолчанию
route add default gw 192.168.0.1
#добавление маршрута в локальную сеть
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
#добавление маршрута в удаленную сеть
route add -net 192.57.66.0 netmask 255.255.255.0 gw 192.168.0.2
#удаление маршрута
route del -net 192.57.66.0 netmask 255.255.255.0 gw 192.168.0.2
#просмотр таблицы маршрутизации
route
#или
netstat -r
ip
В современных дистрибутивах линукса на смену ifconfig
и route
приходит универсальная утилита ip
#просмотр списка доступных интерфейсов
ip link
#просмотр статистики по интерфейсам
ip -s link
#просмотр ip адресов
ip addr
#просмотр таблицы маршрутизации
ip route
DNS
Адреса серверов DNS и имя локального домена вписываются в файл /etc/resolv.conf
search example.com
nameserver 8.8.8.8
Ручная настройка сети в CentOS 6
Общие настройки сети
Файл /etc/sysconfig/network используется стартовыми скриптами и содержит ключевые параметры — нужна ли сеть, нужно ли конфигурировать IP v6, имя компьютера. Сюда можно вписать шлюз по умолчанию, но CentOS 6 ориентируется на динамическое подкючение к сетям через WiFi и вписывает его в конфигурацию подходящего интерфейса.
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=wwww.example.com
GATEWAY=10.10.10.1
Конфигурация интерфейса
Файлы в каталоге /etc/sysconfig/network-scripts с именами вида ifcfg-eth0
Интерфейс, получающий адрес по DHCP
# динамическая конфигурация интерфейса
ONBOOT="yes"
DEVICE="eth0"
BOOTPROTO="dhcp"
Ручная конфигурация
# статическая конфигурация интерфейса
ONBOOT="yes"
DEVICE="eth1"
BOOTPROTO="static"
IPADDR=145.14.137.221
PREFIX=24
# конфигурация шлюза и DNS
GATEWAY=192.168.1.1
DEFROUTE=yes
DNS1=192.168.1.14
# NM - NetworkManager - графическая оболочка + автоматизация настроек
NM_CONTROLLED="no"
Дополнительный IP адрес на интерфейсе eth1
ONBOOT=no
DEVICE=eth1:0
BOOTPROTO=static
IPADDR=172.16.12.6
NETMASK=255.255.0.0
# следующие два параметра можно не писать
# они вычисляются из IP и маски
BROADCAST=172.16.255.255
NETWORK=172.16.0.0
Инициализация VLAN на eth1
DEVICE=eth1.72
VLAN=yes
VLAN_TRUNK_IF=eth1
BOOTPROTO=static
IPADDR=10.10.0.1
NETMASK=255.255.255.192
ONBOOT=yes
Настройка DNS
Файл /etc/resolv.conf
# мой домен, для подстановки в короткие имена
search example.com
# сервер DNS
nameserver 8.8.8.8
Ручная настройка имен хостов файл /etc/hosts
127.0.0.1 localhost.localdomain localhost ANY
::1 localhost6.localdomain6 localhost6
194.87.0.50 www.ru
Настройка брандмауэра
Файл /etc/sysconfig/system-config-firewall правила для настройки программой system-config-firewall
Файл /etc/sysconfig/iptables текущие правила, сохраненные на случай перезагрузки.
После ручного изменения правил их можно сохранить командой service iptables save