воскресенье, 13 октября 2013 г.

Простой шлюз на Debian

Задача - сделать простой шлюз на Debian, с пробросом некоторых портов с внешнего IP-адреса.

eth0 - внешний интерфейс, смотрящий в интернет.
eth1 - внутренний интерфейс, смотрящий в локальную сеть.
10.120.36.14 - внешний IP-адрес.
192.168.0.12 - адрес веб-сервера.
192.168.0.50 - адрес Windows сервера терминалов.

Разрешим маршрутизацию трафика, выполнив команду:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь отредактируем /etc/sysctl.conf, раскомментовав, и поправив строку:
#net.ipv4.ip_forward=0
на
net.ipv4.ip_forward=1
Применить настройку можно командой:
sysctl -p
Очистим все правила в iptables:
# iptables -F
Укажем шлюзу куда нужно перенаправлять трафик, пришедший для пользователей внутренней сети:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Теперь зададим правило, которое укажет как перенаправлять запросы с 80 порта нашего шлюза на 80 порт нашего веб-сервера находящегося в локальной сети:
# iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.12:80
# iptables -t nat -A POSTROUTING -d 192.168.0.12 -p tcp --dport 80 -j SNAT --to-source 10.120.36.14
И ту же операцию проделаем с сервером доступным по RDP, так же сидящего за нашим шлюзом:
# iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.50:3389
# iptables -t nat -A POSTROUTING -d 192.168.0.50 -p tcp --dport 3389 -j SNAT --to-source 10.120.36.14
Теперь добавим эти команды в /etc/rc.local, чтобы после перезагрузки правила сохранялись и загружались автоматически.
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#HTTP
iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.12:80
iptables -t nat -A POSTROUTING -d 192.168.0.12 -p tcp --dport 80 -j SNAT --to-source 10.120.36.14

#RDP
iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.50:3389
iptables -t nat -A POSTROUTING -d 192.168.0.50 -p tcp --dport 3389 -j SNAT --to-source 10.120.36.14

exit 0
Если вы хотите пробросить ещё один порт http или rdp, на нестандартный порт, можно использовать следующие правила:
# iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.18:80
# iptables -t nat -A POSTROUTING -d 192.168.0.18 -p tcp --dport 80 -j SNAT --to-source 10.120.36.14
Теперь при заходе на 10.120.36.14:8080, мы получим ответ от второго веб-сервера.

Комментариев нет:

Отправить комментарий