Noob_with_cheats
Скриптер
- Сообщения
- 41
- Реакции
- 20
- Баллы
- 8
При попытке разобраться с iptables, возникли проблемы с получением доступом к внешней сети из локалки.
Дано:
Имеется вычислительный узел (ВУ) №1, играющий роль межсетевого экрана (МЭ) (Далее ВУ МЭ), и ВУ №2 (Далее ВУ).
ВУ МЭ и ВУ находятся в локальной сети 1.1.1.0/24, ВУ МЭ также подключен к внешней сети 192.168.95.0/24
ВУ имеет адрес 1.1.1.91
ВУ МЭ имеет локальный адрес 1.1.1.95 и внешний 192.168.95.5
После настройки iptables, к ВУ можно пройти по 192.168.95.91
При этом с любого хоста подсети 192.168.95.0/24 можно получить доступ к ВУ МЭ и ВУ.
ВУ МЭ имеет доступ к ВУ по локальному ip и наоборот.
Проблема: Если подключиться напрямую к ВУ и сделать пинг к любому адресу 192.168.95.0/24, то ничего не получим.
Задача: Сделать возможность видеть сеть 192.168.95.0/24 из ВУ.
Дано:
Имеется вычислительный узел (ВУ) №1, играющий роль межсетевого экрана (МЭ) (Далее ВУ МЭ), и ВУ №2 (Далее ВУ).
ВУ МЭ и ВУ находятся в локальной сети 1.1.1.0/24, ВУ МЭ также подключен к внешней сети 192.168.95.0/24
ВУ имеет адрес 1.1.1.91
ВУ МЭ имеет локальный адрес 1.1.1.95 и внешний 192.168.95.5
После настройки iptables, к ВУ можно пройти по 192.168.95.91
При этом с любого хоста подсети 192.168.95.0/24 можно получить доступ к ВУ МЭ и ВУ.
ВУ МЭ имеет доступ к ВУ по локальному ip и наоборот.
Проблема: Если подключиться напрямую к ВУ и сделать пинг к любому адресу 192.168.95.0/24, то ничего не получим.
Задача: Сделать возможность видеть сеть 192.168.95.0/24 из ВУ.
ip addr add 1.1.1.91/24 dev eth0
ip route add 192.168.95.0/24 via 1.1.1.95 dev eth0
ip link set eth0 up
ip route add 192.168.95.0/24 via 1.1.1.95 dev eth0
ip link set eth0 up
ip addr add 1.1.1.95/24 dev eth0
ip link set eth0 up
ip addr add 192.168.95.5/24 dev eth2
ip addr add 192.168.95.91/24 dev eth2
ip link set eth2 up
ip link set eth0 up
ip addr add 192.168.95.5/24 dev eth2
ip addr add 192.168.95.91/24 dev eth2
ip link set eth2 up
Bash:
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING -d 192.168.95.91 -j DNAT --to-destination 1.1.1.91
iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -d 1.1.1.91 -j ACCEPT
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -d 1.1.1.91 -s 1.1.1.0/24 -j SNAT --to-source 1.1.1.95
iptables -t nat -A OUTPUT -d 192.168.95.91 -j DNAT --to-destination 1.1.1.91
iptables -F INPUT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT ! -i eth0 -j DROP
iptables -F OUTPUT
iptables -P OUTPUT ACCEPT
Bash:
### В PREROUTING осуществляется проброс к другим ВУ
# Очистим цепочку PREROUTING
iptables -t nat -F PREROUTING
# Все пакеты, входящие в МЭ на 192.168.95.№ направляются на 1.1.1.9№.
# Тут меняется адрес назначения пакета из внешнего на локальный
iptables -t nat -A PREROUTING -d 192.168.95.№ -j DNAT --to-destination 1.1.1.9№
### FORWARD - цепочки, если узел другой
# Очистим цепочку FORWARD
iptables -F FORWARD
# Разрешаем пакетам проходить по уже установленным соединениям
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Разрешаем входящие соединения к 1.1.1.9№
iptables -A FORWARD -m conntrack --ctstate NEW -d 1.1.1.9№ -j ACCEPT
# Запрещаем весь остальной транзитный трафик
iptables -P FORWARD DROP
### В POSTROUTING осуществляется отправка пакетов из других узлов
# Пакет, предназначенный для 1.1.1.9№ будет проходить через шлюз 1.1.1.95
# Таким образом, соединения из локальной сети будут выглядеть как соединения, инициированные шлюзом,
# а соединения из внешней сети будут иметь свои оригинальные адреса.
iptables -t nat -A POSTROUTING -d 1.1.1.9№ -s 1.1.1.0/24 -j SNAT --to-source 1.1.1.95
### OUTPUT — через эту цепочку проходят пакеты, сгенерированные процессами самого хоста.
### На данном этапе при необходимости можно повторить операции проброса,
### так локально сгенерированные пакеты не проходят цепочку PREROUTING
# Все пакеты, исходящие из МЭ в 192.168.95.№ направляются на 1.1.1.9№
iptables -t nat -A OUTPUT -d 192.168.95.№ -j DNAT --to-destination 1.1.1.9№
### Разрешаем исходящие и входящие сообщения к 192.168.95.№
# Очистим цепочку INPUT
iptables -F INPUT
# Разрешаем входящие пакеты по уже установленным соединениям
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Запрещаем остальные входящие пакеты
# В т.ч. локальные. eth1 для пакетов м/у локальными
iptables -P INPUT DROP
# если хотите разрешить для eth0, тогда нужно заменить на
iptables -A INPUT ! -i eth0 -j DROP
# Очистим цепочку OUTPUT
iptables -F OUTPUT
# Разрешаем исходящие пакеты
iptables -P OUTPUT ACCEPT