Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Проброс портов  (Прочитано 1721 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн iman656

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Проброс портов
« : 12 Июля 2011, 17:21:55 »
Добрый день!

Ситуация такая:
стоит сервер,который принимает и раздает интернет пользователям. На нем установлен прокси сервер squid.
дистрибутив 10.10-server
внешняя сеть 77.77.77.77
локальная 10.10.1.0
необходимо пробросить порты(80,8080,3306,25,110) на другой сервер,который находится в локальной сети.

скрипт проброса,который делал - чет не пашет:


#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables --flush

iptables --table nat --flush

iptables --table mangle --flush

iptables --delete-chain

iptables --table nat --delete-chain
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
# NAT
iptables -t nat -A POSTROUTING -o eth0 -s 10.10.1.0/24 -j MASQUERADE
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j REJECT

# http to squid
iptables -t nat -A PREROUTING -i eth1 -d ! 10.10.1.0/24 -p tcp -m multiport --dport 80,8080,443.8081 -j DNAT$

#
iptables -t nat -A PREROUTING -p tcp -d 77.77.77.77 --dport 80 -j DNAT --to-destination 10.10.1.X:80
iptables -t nat -A PREROUTING -p tcp -d 77.77.77.77 --dport 8080 -j DNAT --to-destination 10.10.1.X:8080
 

Оффлайн AyaTooru

  • Активист
  • *
  • Сообщений: 257
    • Просмотр профиля
    • http://ayatooru.com
Re: Проброс портов
« Ответ #1 : 12 Июля 2011, 17:38:10 »
NAT лучше делать статически:

-A POSTROUTING -s 192.168.0.0/24 -o внутренний-интерфейс -j SNAT --to-source внешний-IP

-A FORWARD -i eth0 -o eth1 -j REJECT — вот это зачем?

Вот пример, как можно сделать.
*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT

#Перенаправление портов
-A PREROUTING -i внешний-интерфейс -p tcp -m tcp --dport 80 -j DNAT --to-destination айпи-сервера:80
-A PREROUTING -i внешний-интерфейс -p tcp -m tcp --dport 8080 -j DNAT --to-destination айпи-сервера:8080
-A POSTROUTING -s внутренняя-сеть/24 -o внешний-интерфейс -j SNAT --to-source внешний-IP
COMMIT
*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT ACCEPT

-A INPUT ! -i lo -m addrtype --src-type LOCAL -j DROP
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m conntrack --ctstate INVALID,NEW -m tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with icmp-port-unreachable

#Пропускаем установленные соединения
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#Пропускаем всё на локальном интерфейсе
-A INPUT -i lo -j ACCEPT

#Пропускаем всё из локальной сети
-A INPUT -i внутренний-интерфейс -j ACCEPT

#Открываем порты
-A FORWARD -i внешний-интерфейс -p tcp -m state --state NEW -m tcp -m multiport --dports 80,8080,3306,25,110 -j ACCEPT
COMMIT

Сохраняешь отдельно в iptables.conf, подгружаешь из своего скрипта так:
iptables-restore /path/to/iptables.conf

Оффлайн iman656

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Проброс портов
« Ответ #2 : 13 Июля 2011, 11:31:57 »
-A FORWARD -i eth0 -o eth1 -j REJECT — вот это зачем?
Брал готовый скрипт настройки nat. :-[
Я правильно понял,что я создаю отдельный файл для скрипта портфорварда и в iptables.conf прописываю запуск этого скрипта? Так?
Или твой пример я записываю в iptables.conf и делаю ссылку на него в своем скрипте: iptables-restore /path/to/iptables.conf . Если так,то в какой части делать эту ссылку в начале,в конце или без разницы?
« Последнее редактирование: 13 Июля 2011, 11:49:26 от iman656 »

Оффлайн AyaTooru

  • Активист
  • *
  • Сообщений: 257
    • Просмотр профиля
    • http://ayatooru.com
Re: Проброс портов
« Ответ #3 : 13 Июля 2011, 11:46:22 »
В iptables.conf (можно как угодно назвать) прописать правила, которые постом выше выделены как код. А подгружать из твоего скрипта, будет вот так, к примеру:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables-restore /home/user/iptables.conf

Оффлайн iman656

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Проброс портов
« Ответ #4 : 13 Июля 2011, 12:00:20 »
Спасибо,через часок попробую...как раз время обедов будет  ;)

Пользователь решил продолжить мысль 13 Июля 2011, 12:47:01:
*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT

#
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.1.x:80
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.10.1.x:8080
-A POSTROUTING -s 10.10.1.0/24 -o eth0 -j SNAT --to-source 77.77.77.77
COMMIT
*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT ACCEPT

-A INPUT ! -i lo -m addrtype --src-type LOCAL -j DROP
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m conntrack --ctstate INVALID,NEW -m tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with icmp-port-unreachable

#
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#
-A INPUT -i lo -j ACCEPT

#
-A INPUT -i eth1 -j ACCEPT

#
-A FORWARD -i eth0 -p tcp -m state --state NEW -m tcp -m multiport --dports 80,8080,3306,25,110 -j ACCEPT
COMMIT


при таком содержимом у меня инет совсем тухнет.
eth0 - внешний интефейс
eth1 - внутренний
Ссылку на файл делаю в самом начале своего скрипта. Быть может имеет смысл сослаться на файл в конце?так можно?
« Последнее редактирование: 13 Июля 2011, 12:47:01 от iman656 »

Оффлайн AyaTooru

  • Активист
  • *
  • Сообщений: 257
    • Просмотр профиля
    • http://ayatooru.com
Re: Проброс портов
« Ответ #5 : 13 Июля 2011, 13:40:49 »
Прокси прозрачный?

Оффлайн iman656

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Проброс портов
« Ответ #6 : 13 Июля 2011, 16:08:00 »
да,прокси прозрачный
« Последнее редактирование: 13 Июля 2011, 16:28:45 от iman656 »

Оффлайн AyaTooru

  • Активист
  • *
  • Сообщений: 257
    • Просмотр профиля
    • http://ayatooru.com
Re: Проброс портов
« Ответ #7 : 14 Июля 2011, 02:04:20 »
Тогда надо ещё завернуть весь трафик на прокси.
Добавить в цепочку NAT то-то вроде:
-A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.