LINUX.ORG.RU
решено ФорумAdmin

iptables. Как из внутренней сети подключить свой внешний интерфейс?


0

1

Имеется следующая настройка iptables:

#!/bin/sh

echo "\n******************** Настройка фаервола **********************************"

# ################################
EXT="eth1"
EXT_IP="213.168.31.50"
echo "Внешний сетевой интерфейс ${EXT} ip:${EXT_IP}"
# ################################
INT="eth0"
INT_IP="10.9.9.1"
INT_BCAST="10.9.9.0/24"
echo "Внутренний сетевой интерфейс $INT ip:$INT_IP"
# ################################


# ################################
echo "Очищаем все настройки"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# ################################


# ################################
echo "Настраиваем основные политики"
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# ################################


# ################################
echo "Всегда принимаем трафик на loopback-интерфейсе"
# Если политика OUTPUT-DROP, то: iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# ################################


# ################################
echo "Настраиваем преобразование внутренних IP Masquerade"
# Если ip на внешнем интерфейсе динамический, то: iptables -t nat -A POSTROUTING -o ${EXT} -j MASQUERADE
iptables -t nat -A POSTROUTING -o ${EXT} -j SNAT --to-source ${EXT_IP}
# ################################


# ################################
echo "Разрешаем некоторые входящие соединения"
iptables -A INPUT -i ${INT} -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ${INT} -o $EXT -s ${INT_BCAST} -j ACCEPT
iptables -A FORWARD -i ${EXT} -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "Убираем проброс кривых пакетов"
iptables -A FORWARD -m state --state INVALID -j DROP

echo "Убираем фрагменты пинга"
iptables -A INPUT --fragment -p ICMP -j DROP

echo "Разрешаем пинг в обе стороны"
iptables -A INPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
# ################################


# ################################
echo "********************** Открываем необходимые порты ************************"

SQUID_PORTS="80,8080" # тут можно указать не более 15 портов!!!
echo "+++ Заворачиваем ${SQUID_PORTS} порты на проксю"
iptables -t nat -A PREROUTING -i ${INT} ! -d ${INT_BCAST} -p tcp -m multiport --dport ${SQUID_PORTS} -j DNAT --to ${INT_IP}:3128

echo "+++ Разрешаем SSH на внутреннем интерфейсе"
iptables -A INPUT -i ${INT} -p tcp --dport 22 -m state --state NEW -j ACCEPT

echo "+++ Разрешаем APACHE2 на внутреннем интерфейсе"
iptables -A INPUT -i ${INT} -p tcp --dport 80 -m state --state NEW -j ACCEPT

# echo "+++ SSH на внешнем сетевом интерфейсе"
# iptables -A INPUT -i ${EXT} -p tcp --dport 22 -m state --state NEW -j ACCEPT


# ################################
echo "********************** Проброс портов *************************************"

HTTP_SYMP="10.9.9.28"
HTTP_SYMP_PORT="80"
echo "+++ http apache symplesys ${HTTP_SYMP}:${HTTP_SYMP_PORT} tcp"
iptables -t nat -A PREROUTING -p tcp -i ${EXT} --dport ${HTTP_SYMP_PORT} -j DNAT --to-destination ${HTTP_SYMP}:${HTTP_SYMP_PORT}
iptables -A FORWARD -p tcp -i ${EXT} --dport ${HTTP_SYMP_PORT} -d ${HTTP_SYMP} -j ACCEPT


VPNSERVER="10.9.9.26"
echo "+++ Пробрасываем порт для VPN сервера ${VPNSERVER}:1723"
iptables -N pptp
iptables -A pptp -p tcp --destination-port 1723 --dst ${VPNSERVER} -j ACCEPT
iptables -A pptp -p 47 --dst ${VPNSERVER} -j ACCEPT
iptables -I FORWARD -j pptp
iptables -t nat -N pptp
iptables -t nat -A pptp -i ${EXT} -p tcp --dport 1723 -j DNAT --to ${VPNSERVER}:1723
iptables -t nat -A pptp -i ${EXT} -p 47 -j DNAT --to ${VPNSERVER}
iptables -t nat -A PREROUTING -j pptp

# ################################

echo "********************** настройка фаервола завершена **********************\n"

Вот теперь из внутренней сети иду на сайт, который расположен по адресу 213.168.31.50:80 и не могу на него попасть, тоже самое с VPN. При этом внешний интерфейс стабильно пингуется из внутренней сети. Как прописать данную возможность?

★★

Последнее исправление: Acceptor (всего исправлений: 1)

может так

$iptables -A FORWARD -i ppp0 -p tcp --dport 25 -j ACCEPT

$iptables -t nat -A PREROUTING -i ppp0 -p tcp -d XX.XX.XX.XX --dport 25 -j DNAT --to-destination YY.YY.YY.YY:25

$iptables -A FORWARD -i ppp0 -p tcp --dport 110 -j ACCEPT

$iptables -t nat -A PREROUTING -i ppp0 -p tcp -d XX.XX.XX.XX --dport 110 -j DNAT --to-destination YY.YY.YY.YY:110

$iptables -A FORWARD -i ppp0 -p tcp --dport 80 -j ACCEPT

$iptables -t nat -A PREROUTING -i ppp0 -p tcp -d XX.XX.XX.XX --dport 80 -j DNAT --to-destination YY.YY.YY.YY:80

где XX.XX.XX.XX и ppp0 внешние

YY.YY.YY.YY - внутрений

SimbioS
()
Ответ на: может так от SimbioS

Эти правила отлично работают, но к сожалению они не дают возможности коннектиться из внутренней сети на вненшний интерфейс нормально. А снаружи все коннекты и пробросы портов отлично работают!

Acceptor ★★
() автор топика
Ответ на: комментарий от uspen

Да класс.... только эта статья меня не наталкивает ни на кикае мысли кроме этих:

iptables -t nat -A PREROUTING -s $INT_BCAST -d ${EXT_IP} -p udp --dport ${U_VPN_PORT} -j DNAT --to ${U_VPN}:${U_VPN_PORT}
# iptables -A FORWARD -p udp -i ${INT} --dport ${U_VPN_PORT} -d ${U_VPN} -j ACCEPT

Но добавление этих правил ни к чему толком не привело... все-равно нет коннекта (((

Acceptor ★★
() автор топика
Ответ на: комментарий от anton_jugatsu

Форвардинг включён?

Да

Где дамп tcpdump'а?

утром выложу.

Acceptor ★★
() автор топика
Ответ на: комментарий от Acceptor

У тебя все что идет на 80 порт идет на сквид. вот и думай почему ты не можешь свой веб сервер увидеть из локалки.

$ipt -A PREROUTING -t nat -i $INT --src 192.168.0.0/24 --dst 213.168.31.50 -p tcp -m tcp --dport 80 -j RETURN
uspen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.