Задача - сделать простой шлюз на Debian, с пробросом некоторых портов с внешнего IP-адреса.
eth0 - внешний интерфейс, смотрящий в интернет.
eth1 - внутренний интерфейс, смотрящий в локальную сеть.
10.120.36.14 - внешний IP-адрес.
192.168.0.12 - адрес веб-сервера.
192.168.0.50 - адрес Windows сервера терминалов.
Разрешим маршрутизацию трафика, выполнив команду:
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И ту же операцию проделаем с сервером доступным по RDP, так же сидящего за нашим шлюзом:
# iptables -t nat -A POSTROUTING -d 192.168.0.12 -p tcp --dport 80 -j SNAT --to-source 10.120.36.14
# iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.50:3389Теперь добавим эти команды в /etc/rc.local, чтобы после перезагрузки правила сохранялись и загружались автоматически.
# iptables -t nat -A POSTROUTING -d 192.168.0.50 -p tcp --dport 3389 -j SNAT --to-source 10.120.36.14
$ cat /etc/rc.local
#!/bin/sh -eЕсли вы хотите пробросить ещё один порт http или rdp, на нестандартный порт, можно использовать следующие правила:
#
# 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
# iptables -t nat -A PREROUTING -d 10.120.36.14 -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.18:80Теперь при заходе на 10.120.36.14:8080, мы получим ответ от второго веб-сервера.
# iptables -t nat -A POSTROUTING -d 192.168.0.18 -p tcp --dport 80 -j SNAT --to-source 10.120.36.14
Комментариев нет:
Отправить комментарий