Различия между версиями 5 и 18 (по 13 версиям)
Версия 5 от 2013-10-25 15:20:10
Размер: 5116
Редактор: FrBrGeorge
Комментарий:
Версия 18 от 2013-12-27 15:00:33
Размер: 8620
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 55: Строка 55:
default via 10.0.2.2 dev enp0s3 metric 203 
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 203 
10.30.50.0/24 dev enp0s8 proto kernel scope link src 10.30.50.1 
default via 10.0.2.2 dev enp0s3 metric 203
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 203
10.30.50.0/24 dev enp0s8 proto kernel scope link src 10.30.50.1
Строка 59: Строка 59:
broadcast 10.0.2.0 dev enp0s3 proto kernel scope link src 10.0.2.15 
local 10.0.2.15 dev enp0s3 proto kernel scope host src 10.0.2.15 
broadcast 10.0.2.255 dev enp0s3 proto kernel scope link src 10.0.2.15 
broadcast 10.30.50.0 dev enp0s8 proto kernel scope link src 10.30.50.1 
local 10.30.50.1 dev enp0s8 proto kernel scope host src 10.30.50.1 
broadcast 10.30.50.255 dev enp0s8 proto kernel scope link src 10.30.50.1 
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 
broadcast 10.0.2.0 dev enp0s3 proto kernel scope link src 10.0.2.15
local 10.0.2.15 dev enp0s3 proto kernel scope host src 10.0.2.15
broadcast 10.0.2.255 dev enp0s3 proto kernel scope link src 10.0.2.15
broadcast 10.30.50.0 dev enp0s8 proto kernel scope link src 10.30.50.1
local 10.30.50.1 dev enp0s8 proto kernel scope host src 10.30.50.1
broadcast 10.30.50.255 dev enp0s8 proto kernel scope link src 10.30.50.1
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
Строка 75: Строка 75:
 0: from all lookup local 
 32766: from all lookup main 
 32767: from all lookup default 
 0: from all lookup local
 32766: from all lookup main
 32767: from all lookup default
Строка 83: Строка 83:
# ip route add default dev $ETH via $GW table $TBL  # ip route add default dev $ETH via $GW table $TBL
Строка 87: Строка 87:
-----
to be c...d
-----

=== «Russian VPN» ===
 * VPN с точки зрения Linux:
  * VPN-сервер → доставка каким-нибудь образом → VPN-клиент
  * ⇒ Виртуальный сетевой интерфейс (+адрес, +маршрутизация)
 * Ситуация: VPN-сервер не в локальной сети, но на внутреннем адресном пространстве
  1.#0 ⇒ если добавить `ip route add default`, пакеты с VPN-трафиком до него больше не доходят, потому что старый маршрутизатор по умолчанию неактуален
  1. Решается статическим добавлением маршрута до сервера через исходный маршрутизатор по умолчанию
  1. А если адрес VPN сервера выбирается динамически?
  1. А если адрес VPN сервера получается из его FQDN?
  1. А если DNS-сервер тоже не в локальной сети, но на внутреннем адресном пространстве?
Строка 91: Строка 99:
 * Изучить настройки сети на сервере: ==== Настройка сети ====
* Настройки сети на сервере:
Строка 97: Строка 106:
  * (файлы вида `*/fw/* — настройка межсетевого экрана)
  * каких настроек сети не задано явно в текущей конфигурации `etcnet` и почему?
 * Изучить сетевые настройки клиента
  * В файле `/etc/net/ifaces/enp0s3/ipv4route` расскомментировать по одной строчке, посмотреть, что измениться после `service network restart`
  * каких привычных настроек сети не задано явно в текущей конфигурации `etcnet` и почему?
 * Настройка DHCP:
  * Настройки сервера:
   {{{
[root@uneex ~]# cat /etc/dhcp/dhcpd.conf
   }}}
  * Посмотреть сеанс настройки клиента по DHCP:
   {{{
[root@uneex ~]# tcpdump -v -n -i enp0s8 port bootps or port bootpc
   }}}
  * Перезапустить сеть на клиенте, чтобы этот сеанс произошёл:
  {{{
[root@uneexclient ~]# service network restart
  }}}
 * Настройки сети на клиенте
  * См. настройки на сервере.
  * `ip rule` (обратить внимание на пока пустую нестандартную таблицу "`back`")
  * `cat /etc/iproute2/rt_tables`
  * В файле `/etc/net/ifaces/enp0s3/ipv4route` расскомментировать по одной строчке (остальные должны быть закомментированы), посмотреть, что изменится после `service network restart`
   * В частности, выполнить команды `ip r` и `ip route get 217.76.32.61`
   * Обратите внимание на то, что записей вида `default` в таблице может быть несколько; если не заданы приоритеты, побеждает первая (она же последняя добавленная)
==== Целевая маршрутизация ====
 * Настройка и работа Policy routing
  * На клиенте раскомментировать в `enp0s3/ipv4route` только строку `default via 10.0.2.2 table back` (она заполняет таблицу "`back`"), перезапустить сеть
  * `ip route list table back`
  * `ip r get from 10.30.50.1 iif enp0s8 217.76.32.61`
   * что делает эта команда?
   * чем её результат отличается от `ip r get 217.76.32.61` и почему?
  * Пронаблюдать процесс целевой маршрутизации:
   * Выяснить ip-адрес клиента в сети `10.30.50.0/24`:
     `[root@uneexclient ~]# ip a`
   * `[root@uneexclient ~]# tcpdump -ni enp0s3 port 80`
   * `[root@uneex ~]# ip r add 217.76.32.61/32 via ip-адрес-клиента`
   * `[root@uneex ~]# ip r get 217.76.32.61; ip r get 217.76.32.60`
   * `[root@uneex ~]# echo -e "QQ\n\n" | netcat 217.76.32.61 80`
 * '''Закомментировать''' обратно все строки в `enp0s3/ipv4route` на клиенте и на сервере, а то работать будет не так, как надо

Сетевой уровень: настройка, DHCP и целевая маршрутизация

Настройки

Простой случай: ip a + ip r на каждом интерфейсе

Сохранение настроек: команды+данные (etcnet, network-scripts и т. п.) или спецAPI+данные (Network Manager). Достоинства и недостатки.

Устройство etcnet: ifaces  options.d  scripts  sysctl.conf

Функции маршрутизатора (ip_forward):

  • команда sysctl net.ipv4.ip_forward == файл /proc/sys/net/ipv4/ip_forward

    • # sysctl net.ipv4.ip_forward=1 == echo 1 > /proc/sys/net/ipv4/ip_forward

  • /etc/net/sysctl.conf: net.ipv4.ip_forward = 1

DHCP

  • Задача: узнать свой IP.
    • Решение: спросить у сервера (протокол RARP, сетевой)

  • Задача: узнать настройки сети
    • Решение: спросить у сервера (протокол BOOTP, прикладной)

  • Задача: узнать все настройки

PXE = tftp + bootp (возможны девиации)

ISC DHCPD и его настройка:

[root@uneex ~]# cat /etc/dhcp/dhcpd.conf
# See dhcpd.conf(5) for further configuration

ddns-update-style none;

subnet 10.30.50.0 netmask 255.255.255.0 {
        option routers                  10.30.50.1;
        option subnet-mask              255.255.255.0;

        option domain-name              "class.altlinux.org";
        option domain-name-servers      10.30.50.1;

        range dynamic-bootp 10.30.50.10 10.30.50.100;
        default-lease-time 21600;
        max-lease-time 43200;
}

Целевая маршрутизация

Особые случаи маршрутизации:

  • В зависимости от адреса отправителя

  • В зависимости от пометок межсетевого экрана

Policy routing:

[root@uneex ~]# ip r
default via 10.0.2.2 dev enp0s3  metric 203
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15  metric 203
10.30.50.0/24 dev enp0s8  proto kernel  scope link  src 10.30.50.1
[root@uneex ~]# ip r list table local
broadcast 10.0.2.0 dev enp0s3  proto kernel  scope link  src 10.0.2.15
local 10.0.2.15 dev enp0s3  proto kernel  scope host  src 10.0.2.15
broadcast 10.0.2.255 dev enp0s3  proto kernel  scope link  src 10.0.2.15
broadcast 10.30.50.0 dev enp0s8  proto kernel  scope link  src 10.30.50.1
local 10.30.50.1 dev enp0s8  proto kernel  scope host  src 10.30.50.1
broadcast 10.30.50.255 dev enp0s8  proto kernel  scope link  src 10.30.50.1
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1

Пример правил:

# ip rule
 0:      from all lookup local
 32766:  from all lookup main
 32767:  from all lookup default

# echo $TBL $TNAME >> /etc/iproute2/rt_tables
# ip rule add from $IP table $TBL # или $TNAME
# ip route add default dev $ETH via $GW table $TBL
# ip route add $NET dev $ETH table $TBL

«Russian VPN»

  • VPN с точки зрения Linux:
    • VPN-сервер → доставка каким-нибудь образом → VPN-клиент
    • ⇒ Виртуальный сетевой интерфейс (+адрес, +маршрутизация)
  • Ситуация: VPN-сервер не в локальной сети, но на внутреннем адресном пространстве
    1. ⇒ если добавить ip route add default, пакеты с VPN-трафиком до него больше не доходят, потому что старый маршрутизатор по умолчанию неактуален

    2. Решается статическим добавлением маршрута до сервера через исходный маршрутизатор по умолчанию
    3. А если адрес VPN сервера выбирается динамически?
    4. А если адрес VPN сервера получается из его FQDN?
    5. А если DNS-сервер тоже не в локальной сети, но на внутреннем адресном пространстве?

Д/З

Настройка сети

  • Настройки сети на сервере:
    • ip r, ip a

    • ls /etc/net, ls /etc/net/ifaces

    • find /etc/net/ifaces/[el]* -type f -print (эта команда рекурсивно просматривает соответствующие каталоги и находит в них файлы)

    • find /etc/net/ifaces/[el]* -type f -print -exec cat {} \; (эта командавыводит не только имена файлов, но и их содержимое)

    • (вариант предыдущей команды, в которой find только выдаёт имена файлов, а выводом занимается sh): find /etc/net/ifaces/[el]* -type f -print | while read f; do echo "     ====== $f"; cat $f; done

    • каких привычных настроек сети не задано явно в текущей конфигурации etcnet и почему?

  • Настройка DHCP:
    • Настройки сервера:
      • [root@uneex ~]# cat /etc/dhcp/dhcpd.conf
    • Посмотреть сеанс настройки клиента по DHCP:
      • [root@uneex ~]# tcpdump -v -n -i enp0s8 port bootps or port bootpc
    • Перезапустить сеть на клиенте, чтобы этот сеанс произошёл:
      [root@uneexclient ~]# service network restart
  • Настройки сети на клиенте
    • См. настройки на сервере.
    • ip rule (обратить внимание на пока пустую нестандартную таблицу "back")

    • cat /etc/iproute2/rt_tables

    • В файле /etc/net/ifaces/enp0s3/ipv4route расскомментировать по одной строчке (остальные должны быть закомментированы), посмотреть, что изменится после service network restart

      • В частности, выполнить команды ip r и ip route get 217.76.32.61

      • Обратите внимание на то, что записей вида default в таблице может быть несколько; если не заданы приоритеты, побеждает первая (она же последняя добавленная)

Целевая маршрутизация

  • Настройка и работа Policy routing
    • На клиенте раскомментировать в enp0s3/ipv4route только строку default via 10.0.2.2 table back (она заполняет таблицу "back"), перезапустить сеть

    • ip route list table back

    • ip r get from 10.30.50.1 iif enp0s8 217.76.32.61

      • что делает эта команда?
      • чем её результат отличается от ip r get 217.76.32.61 и почему?

    • Пронаблюдать процесс целевой маршрутизации:
      • Выяснить ip-адрес клиента в сети 10.30.50.0/24:

        • [root@uneexclient ~]# ip a

      • [root@uneexclient ~]# tcpdump -ni enp0s3 port 80

      • [root@uneex ~]# ip r add 217.76.32.61/32 via ip-адрес-клиента

      • [root@uneex ~]# ip r get 217.76.32.61; ip r get 217.76.32.60

      • [root@uneex ~]# echo -e "QQ\n\n" | netcat 217.76.32.61 80

  • Закомментировать обратно все строки в enp0s3/ipv4route на клиенте и на сервере, а то работать будет не так, как надо

LecturesCMC/LinuxNetwork2013/04-IProuteDHCP (последним исправлял пользователь FrBrGeorge 2013-12-27 15:00:33)