Ответ
Как DevOps-инженер, я работаю с этими концепциями при проектировании сетей в облаке (VPC, подсети) и настройке виртуальных сетевых устройств.
Коммутатор (Switch, уровень L2 - канальный) работает внутри одной логической сети (LAN, VLAN, подсеть VPC). Его основная задача — пересылать кадры (frames) между устройствами, находящимися в одной сети, на основе MAC-адресов. Он строит таблицу MAC-адресов, сопоставляя их с портами. Коммутатор не понимает IP-адреса.
Маршрутизатор (Router, уровень L3 - сетевой) работает между разными сетями. Его задача — передавать пакеты (packets) из одной сети в другую на основе IP-адресов. Он принимает решение о маршруте, используя таблицу маршрутизации.
Ключевые отличия с практической точки зрения:
| Аспект | Коммутатор (L2) | Маршрутизатор (L3) |
|---|---|---|
| Уровень работы | Канальный (Data Link, L2) | Сетевой (Network, L3) |
| Адресация | MAC-адреса | IP-адреса |
| Домен | Одна сеть/подсеть (broadcast domain) | Соединяет разные сети/подсети |
| Типичные задачи | Объединение устройств в LAN, сегментация через VLAN | Маршрутизация между подсетями, NAT, базовый firewall (ACL) |
Пример в облаке AWS:
- Подсеть (Subnet) в VPC — это, по сути, сегмент L2-сети. EC2-инстансы в одной подсети общаются через L2-коммутацию (через гипервизор).
- Таблица маршрутизации (Route Table), прикрепленная к подсети, и Internet Gateway / NAT Gateway выполняют роль маршрутизаторов (L3), направляя трафик между подсетями и в интернет.
Пример настройки маршрута в Linux (имитация работы роутера):
# Просмотр таблицы маршрутизации
ip route show
# Добавление статического маршрута (например, для доступа к внутренней сети через VPN-шлюз)
ip route add 10.8.0.0/24 via 192.168.1.1 dev eth0
# Включение IP forwarding (чтобы сервер мог работать как роутер)
echo 1 > /proc/sys/net/ipv4/ip_forward
# Или перманентно в /etc/sysctl.conf: net.ipv4.ip_forward=1