⇤ ← Revision 1 as of 2008-07-08 21:30:57
Size: 5459
Comment:
|
Size: 5459
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 81: | Line 81: |
|| 0 || 1 || 1 || 1 || || 1 || PavelSutyrin, DmitryChistikov || || || | || 0 || 1 || 1 || 1 || || 1 || SergeyKorobkov, VladimirLysikov || || || |
Практика использования iptables
У нас сейчас две вирт. машины. На одной, которая demo, половинка сетевого инт., у которой одна половинка есть, а другого нету. В другой стороны стоит виртуалбоксЮ, который генерирует пакеты как обычное сетевое приложение. Второй инт. --- внутренний. А у лёгкого линукса только внутренний интерфейс и всё. Вот ег-то и будем в интернет выпускать.
Сформируем задачу: мы хотим сделать две вещи6
- Чтбы отсюда работал какой-то интернет. Для начала руками. Для этого нужно связать эти машины, сделать demo фильтром и сделать там nat
- Поупражняться с фиьдтрацией, чтобы посмтреть, как 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 |
|
|