zulu_gluk 23 Posted 2004-12-20 14:40:30 Share Posted 2004-12-20 14:40:30 Мужики помогите: нужно на время открыть доступ к апачу, который стоит на машине, находящейся за шлюзом. Эта машина имеет адрес 192.168.100.210. На шлюзе также установлен апач, который на время осуществелия данной операции должен работать в нормальном режиме. Вот настроики моего файера на шлюзе: #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward # forwarding paketov (esli eshe ne vkliu4en) IPT="/sbin/iptables" ext_ip="ххх.ххх.ххх.ххх" int_ip="192.168.100.200" ext_if="eth1" int_if="eth0" ## Clear all rules $IPT -t filter -F $IPT -t filter -X $IPT -t nat -F $IPT -t nat -X $IPT -t filter -P INPUT DROP $IPT -t filter -P FORWARD DROP $IPT -t filter -P OUTPUT ACCEPT $IPT -t nat -P PREROUTING ACCEPT $IPT -t nat -P POSTROUTING ACCEPT $IPT -t nat -P OUTPUT ACCEPT ## lo # dobavliaem sebia v rules $IPT -t filter -A INPUT -d 127.0.0.1 -j ACCEPT ## DNS # Pozvoliaen DNS prohodit' $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT $IPT -t filter -A INPUT -p tcp --sport 53 -j ACCEPT $IPT -t filter -A INPUT -p udp --sport 53 -j ACCEPT #SMTP from Internet $IPT -t filter -A INPUT -p tcp -i $ext_if --dport 25 -j ACCEPT ## Squid $IPT -t filter -A INPUT -p tcp -i $ext_if -m state --state ESTABLISHED --state RELATED -j ACCEPT ## SSH $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT ## Avtorizator $IPT -t filter -A INPUT -p udp -d $ext_ip --dport 5555 -j REJECT $IPT -t filter -A OUTPUT -p udp -s $ext_ip --sport 5555 -j REJECT $IPT -t filter -A INPUT -p udp -d $ext_ip --sport 5555 -j REJECT $IPT -t filter -A OUTPUT -p udp -s $ext_ip --dport 5555 -j REJECT $IPT -t filter -A INPUT -p udp -d $int_ip --dport 5555 -j ACCEPT $IPT -t filter -A INPUT -p udp --sport 5555 -d $int_ip -j ACCEPT ## Configurator $IPT -t filter -A INPUT -p tcp -d $int_ip --dport 5550 -j ACCEPT $IPT -t filter -A INPUT -p tcp -d $int_ip --sport 5550 -j ACCEPT $IPT -t filter -A INPUT -p tcp -d $ext_ip --dport 5550 -j REJECT $IPT -t filter -A INPUT -p tcp -d $ext_ip --sport 5550 -j REJECT ## Ping $IPT -t filter -A INPUT -p icmp -j ACCEPT $IPT -t filter -A OUTPUT -p icmp -j ACCEPT ## Apache $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT $IPT -t filter -A INPUT -p tcp --sport 80 -j ACCEPT Пробовал сделать: iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 95 -j DNAT --to 192.168.100.210:80 iptables -A FORWARD -d 192.168.100.210 -j ACCEPT iptables -A FORWARD -s 192.168.100.210 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.100.210 -j SNAT --to-source $ext_ip Но что-то это не помогает. При вводе в браузер www.mysite.net:95 вылетает ошибка. Что я пропустил? Link to post Share on other sites
S_ergey 21 Posted 2004-12-20 14:59:20 Share Posted 2004-12-20 14:59:20 Я делал по этой статье все работает. http://www.opennet.ru/base/net/dnat_linux.txt.html Link to post Share on other sites
stg-34 0 Posted 2004-12-20 15:02:44 Share Posted 2004-12-20 15:02:44 Отца русской демократии спасает DNAT http://gazette.lrn.ru/rus/articles/iptable...html#DNATTARGET Там как раз про это Link to post Share on other sites
zulu_gluk 23 Posted 2004-12-20 15:45:24 Author Share Posted 2004-12-20 15:45:24 Quote Отца русской демократии спасает DNAT Конечно спасет. Я его и пытался использовать: Quote iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 95 -j DNAT --to 192.168.100.210:80 Но что-то нихрена не работает Link to post Share on other sites
Guest Guest Posted 2004-12-20 16:56:46 Share Posted 2004-12-20 16:56:46 А с DNS все впорядке пробовал проверить http://real_ip:95 Link to post Share on other sites
Guest Guest_Quarcel Posted 2004-12-20 18:34:08 Share Posted 2004-12-20 18:34:08 zulu_gluk said: Quote iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 95 -j DNAT --to 192.168.100.210:80 Но что-то нихрена не работает 1) нужно обязательно писать http т.е.: http://www.mysite.net:95 2) на серваке на который пробрасывается соединение нужно прописать дефолтовый шлюз на тачку которая пробрасывает соединения Link to post Share on other sites
zulu_gluk 23 Posted 2004-12-20 19:25:08 Author Share Posted 2004-12-20 19:25:08 С ДНС всё ОК. Еще раз прошу посмотреть сюда: iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 95 -j DNAT --to 192.168.100.210:80 iptables -A FORWARD -d 192.168.100.210 -j ACCEPT iptables -A FORWARD -s 192.168.100.210 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.100.210 -j SNAT --to-source $ext_ip Может что-то здесь неправильно? Link to post Share on other sites
Zep 0 Posted 2004-12-20 19:58:07 Share Posted 2004-12-20 19:58:07 В цепочке NAT -A PREROUTING -i eth1 -d external_ip -p tcp -m tcp --dport 85 -j DNAT --to-destination 192.168.100.210:80 Link to post Share on other sites
Zep 0 Posted 2004-12-20 20:02:50 Share Posted 2004-12-20 20:02:50 iptables -t nat -A POSTROUTING -s 192.168.100.210 -j SNAT --to-source $ext_ip тебе ненужно Link to post Share on other sites
S_ergey 21 Posted 2004-12-20 20:09:29 Share Posted 2004-12-20 20:09:29 Согласно статьи http://www.opennet.ru/base/net/dnat_linux.txt.html нет строки # iptables -A FORWARD -i eth0 -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT $LOCAL_IP - внутренний "фэйковый" адрес машины, которую надо "выкидывать" наружу $PORT2 - Порт, который "выбрасывается" наружу(например, 80 - http, либо 21 - ftp) Допиши мож поможет. Вот мой пример но он не с портами а полностью выкидывает всю машину в инет ifconfig eth2:0 212.42.84.161 netmask 255.255.255.224 broadcast 212.42.84.191 route add 212.42.84.161 gw 212.42.84.165 netmask 0.0.0.0 iptables -t nat -A PREROUTING -p tcp -d 212.42.84.161 -j DNAT --to-destination 192.168.8.4 iptables -t nat -I POSTROUTING -s 192.168.8.4 -j SNAT --to-source 212.42.84.161 iptables -A FORWARD -i eth2 -d 192.168.8.4 -j ACCEPT если есть лишний адрес проверь так. Link to post Share on other sites
zulu_gluk 23 Posted 2004-12-20 20:46:02 Author Share Posted 2004-12-20 20:46:02 Короче сделал. POSTROUTING действительно не нужен. iptables -t nat -A PREROUTING -p tcp -d $ext_ip --dport 100 -j DNAT --to-destination 192.168.100.210:80 iptables -A FORWARD -d 192.168.100.210 -j ACCEPT iptables -A FORWARD -s 192.168.100.210 -j ACCEPT Эта конструкция работает у меня 100% Link to post Share on other sites
Den_LocalNet 1,474 Posted 2004-12-20 21:53:05 Share Posted 2004-12-20 21:53:05 а вот у меня с фтп не получается [root@srv rc.d]# iptables -t nat -A PREROUTING -p tcp -d $ext_ip --dport 21 -j DNAT --to-destination 10.10.10.2:21 [root@srv rc.d]# iptables -I FORWARD 1 -s 10.10.10.2 -j ACCEPT [root@srv rc.d]# iptables -I FORWARD 1 -d 10.10.10.2 -j ACCEPT Link to post Share on other sites
Foster 0 Posted 2004-12-20 22:01:47 Share Posted 2004-12-20 22:01:47 может потому что фтп нужен еще и двадцатый порт? Link to post Share on other sites
Den_LocalNet 1,474 Posted 2004-12-20 22:08:39 Share Posted 2004-12-20 22:08:39 не помогло.... Link to post Share on other sites
Foster 0 Posted 2004-12-20 22:22:09 Share Posted 2004-12-20 22:22:09 насколько помню там и удп юзается заруби файрволом сервак и открывай порты поочереди, верный способ проверки а можешь почитать де нить какие порты фтп юзает http://www.opennet.ru/tips/sml/65.shtml Link to post Share on other sites
Den_LocalNet 1,474 Posted 2004-12-20 22:33:40 Share Posted 2004-12-20 22:33:40 открыл tcp и udp 20 и 21 порты.... никак.... попробовал 4899 (radmin) промапить - всё отлично...... может есть какие-то особенности у фтп? Link to post Share on other sites
zulu_gluk 23 Posted 2004-12-21 07:58:11 Author Share Posted 2004-12-21 07:58:11 фтп юзает tcp 20 и tcp 21. По крайней мере, у меня после открытия этих портов фтп заработал (файер режет всё подряд, кроме www и почты) Link to post Share on other sites
XoRe 0 Posted 2004-12-21 12:26:08 Share Posted 2004-12-21 12:26:08 Мммда. И кто сказал, что Линукс проще фри? В общем для фряшников рецепт такой: В конфиге natd или в качестве аргумента для natd прописать: redirect_port tcp комп_в_локалке:порт внешний_порт И все. Link to post Share on other sites
Den_LocalNet 1,474 Posted 2004-12-21 14:04:51 Share Posted 2004-12-21 14:04:51 А ты вот возьми и попробуй на той же фри промапить фтп..... на линухе прекрастно у меня промаплен хттп и радмин..... а вот с фтп не получается.... з.ы. присмотрелся что фар пишет при коннекте к фтп серверу. Там постоянно разные порты скачут.... Может в этом беда? Link to post Share on other sites
XoRe 0 Posted 2004-12-22 00:12:50 Share Posted 2004-12-22 00:12:50 При использовании протокола ftp используется 2 соединения. Одно для управления. Т.е. для отправки комманд и для получения ответа на них. Второе для передачи файлов. Когда вы подсоединяетесь к серверу по протоколу ftp по адресу ftp://host:port/, то вы открываете соединение с портом port сервера host для передачи комманд. Когда вы в процессе общения с сервером набираете команды get/mget/put/mput e.t.c., то устанавливается ещё одно соединение, по которому происходит передача файла. Насколько я понял, для каждого файла устанавливается 1 соединение. Даже если вы передаете последовательно 1000 файлов, будет последовательно создано 1000 соединений, одно после другого. В реализации ftp протокола есть 2 способа установления соединения для передачи файла. Активное - когда клиент говорит серверу номер своего порта для установления соединения, по которому пойдет файл, а сервер цепляется к клиенту на этот порт. Пассивное - когда сервер говорит клиенту номер порта, а клиент цепляется к серверу на этот порт. В обычных условиях клиент может находиться за шлюзом, т.е. до его портов так просто не добраться. А сервер, наоборот, открыт для соединений. Поэтому в обычных условиях лучше использовать пассивный режим. С одной стороны в твоем случае лучше использовать активный режим, когда при установлении соединения ftp-сервер в локальной сети цепляется на порт клиента. С другой стороны, если клиент сам будет в локалке за шлюзом, то даже этот активный режим не поможет. В качестве решения можео сделать так: на ftp-сервере настроить систему так, чтобы урезать количество портов, используемых для установления исходящих соединений до 1000. Например с 49500 до 50500. На шлюзе настроить систему так, чтобы эти порты не использовались для установления исходящих соединений. И сделать на шлюзе проброс этих 1000 соединений на ftp-сервер в локалке. Я думаю, это самый простой вариант. Могу подсказать, как это реализовать, если шлюз и ftp-сервер работают на фряхе. Если на любой другой операционной системе - то тут хуз. Link to post Share on other sites
tera 0 Posted 2005-02-04 22:36:08 Share Posted 2005-02-04 22:36:08 Ребята Нужна помаш на eth1 192.168.99.54 надо сделат перекидку с сервака на сервак в локалке что бі игралив контру тоесть в лакалке стаит линух гейм сервер контрі там ип 10,0,0,204 как сделать что с eth1 192,168,99,54 eth0 10.0.0.3 попадали на 10,0,0,204 и играли Link to post Share on other sites
ispolin 0 Posted 2005-02-13 11:25:39 Share Posted 2005-02-13 11:25:39 Вот что-то читаю Iptables HOW-TO и вижу тут про нат DNS порта, а нужно ли делать елси у меня уже и так маскарад прописан на весь внешний интерфейс?? Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now