Практика использования iptables

У нас сейчас две вирт. машины. На одной, которая demo, половинка сетевого инт., у которой одна половинка есть, а другого нету. В другой стороны стоит виртуалбоксЮ, который генерирует пакеты как обычное сетевое приложение. Второй инт. --- внутренний. А у лёгкого линукса только внутренний интерфейс и всё. Вот ег-то и будем в интернет выпускать.

Сформируем задачу: мы хотим сделать две вещи6

  1. Чтбы отсюда работал какой-то интернет. Для начала руками. Для этого нужно связать эти машины, сделать demo фильтром и сделать там nat
  2. Поупражняться с фиьдтрацией, чтобы посмтреть, как iptables делает фильтрацию в разных местах

Для начала выберем какую-то сеть внутр. диапазона.

# ip addr add 172.16.0.2/24 dev eth0

А на демо, если сказать ip a, увидим, что сработал zeroconf. Создадим в /etc/net конфигурацию для eth1:

# mkdir /etc/net/ifaces/eth1
# cd /etc/net/ifaces/eth1
# echo "172.16.0.1/24" > ipv4address
# cat > options
DISABLED=no
BOOTPROTO=static
# service network restart

Прверим результат действий:

# ip a
# ip r

Возвращаемся на localhost и проверяем:

#ping 172.16.0.1

Добавляем маршрут по умолчанию (сейчас есть только внутренний):

ip route add default via 172.16.0.1

Но при этом маршрутизация не работает.

Доустановим пакет tcpdump (для этого должен быть включён какой-нибудь репозиторий --- updates или branch)

# apt-get install tcpdump

теперь говорим tcpdump, на другой машине netcat и видим, что н туда ломится, но ответа не приходит. Убедимся, чт пакеты не проходят: tcpdump -i eth0 host 80.68.240.144

Пакеты не идут потому, что машина не работает в режиме маршрутизатора. Как включить режим маршрутизации:

# cd /etc/net/
# grep forward sysctl.conf
# sed -i '/net.icv4.ip_forward = 0/s/0/1/'
# grep forward sysctl.conf

После этого маршрутизация работает, но преобразования ip не происходит и ответов не приходит. Для того, чтобы это заработало, нужен nat:

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source=10.0.2.15

Что в результате получилось? Эта утилита (iptables) предназначена для редактирования тех самых таблиц. -t --- таблица, -A --- команда, -o указывает, какой инт. исп. при переадресаци, -j --- действе, которое надо произв. Скажем iptables-save, чтобы посмтреть. Можно также сказать iptables -t nat -L -nvx

iptables-save выдаёт цепочки по типам таблиц (?), iptables -L выдаёт таблицы в порядке прохождения. Согласно задумке лектора, оно должно работать.

Теперь посмотрим, какая активность. Сначала на внешнем, потом на внутреннем.

Обратите внимание, что произошла подмена адресов. Если сделаем tcpdump -i eth1, то увидем тот же трафик, но с непоменяным адресом.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

SergeyKorobkov, VladimirLysikov


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex