LINUX.ORG.RU
ФорумAdmin

Окончательно запутался с IPTABLES


0

0

Последняя надежда на вашу помощь. Опишу сложившуюся ситуацию. Есть сервер, два сетевых интерфейса: eth0 - смотрит в интернет, статический "белый айпишник". eth1 - обращена в локалку, ip 192.168.0.250. Стоит биллинг Cake.

Как сделать так, что бы пользователи имели доступ к интернету только при подключеном ВПН. Локалка 192.168.0.0.24. А также открыть порты 22, 80, 8080, в мир и в локалку.

Форвардинг включен.

Если есть возможность напишите скрипт.

Заранее всем спасибо.

З.Ы. Мозх згорел...

anonymous

Какой тип VPN? Если что завязанное на ppp (pptp, pppoe). То ты можешь элементарно привязаться к имени интерфейса. Например:

iptables -t nat -I POSTROUTING -s ! 192.168.0.0/24 -i ppp+ -o eth0 --to-source "белый айпишник"

Еще можно к подсети твоего VPN.

I3rain
()
Ответ на: комментарий от I3rain

ВПН такой PPTPD + PPP Но есть маленький нюанс, как я говорил, я юзаю Cake biling. В нем маленькая фича, при подключении пользователя, допустим у него айпи 192.168.0.7, к ВПН-серверу ему присваивается айпи 192.168.2.4, хотя в конфигах пул 192.168.0.100-249.

Плюс надо что бы у юзера появлялся инет, только тогда, когда он приконекчен по ВПНу. А с отключеным, был доступен только внутренний веб-сервер.

anonymous
()
Ответ на: комментарий от I3rain

ВПН такой PPTPD + PPP Но есть маленький нюанс, как я говорил, я юзаю Cake biling. В нем маленькая фича, при подключении пользователя, допустим у него айпи 192.168.0.7, к ВПН-серверу ему присваивается айпи 192.168.2.4, хотя в конфигах пул 192.168.0.100-249.

Плюс надо что бы у юзера появлялся инет, только тогда, когда он приконекчен по ВПНу. А с отключеным, был доступен только внутренний веб-сервер.

anonymous
()

Иди 11 классов для начала закончи, потом возвращайся и изучи основы стека TCP/IP, а также протоколы ICMP/UDP, маски и классы сетей, основы routing'a и работы ARP протокола, а также функционирование switch'ей и router'ов.

Иначе ВОН отсюда и из администрирования.

Из-за таких полудурков потом люди седеют.

anonymous
()
Ответ на: комментарий от anonymous

анонимус ты такой умный..давно школу то окончил?

anonymous
()
Ответ на: комментарий от bakagaijin

То что диапазоны перекрываются я знаю, но не могу понять плохо это или нет, поскольку до того, как я поставил биллинг у меня было всё именно так, и что главное работало. Теперь тоже работает, как бы. но меня настораживает, тот факт, что юзеры могут ломиться в интернет без подключеня к ВПН-серверу, т.е. в обход биллинговой системы. Когда же политики по умолчанию в таблице filter меняю на DROP и прописываю правила только для протокола GRE, то коннект пропадает. также открываю порт 1723 по протоколу TCP, но от этого ничего не меняется. Я в iptables не сильно шарю, мануалы написаны довольно сложно, а хороших шарящих знакомых нет, так что вот и не сплю ночами.

З.Ы. Если пост про школу и про ламерство адресован был мне, т.е. автору этой темы, то школу я закончил 4 года назад, а Линукс постигаю самостоятельно методом тыка, протоколы я знаю довольно таки хорошо, т.к. специальность у меня такая. А если мой уровень ВАМ кажеться низок, то вспомните себя в молодости, этак на втором месяце изучения Линукса! Если этот пост не мне, то прошу извенить!

З.З.Ы. Всем спасибо за содействие и помощь, хоть даже и ругательную!! ))

anonymous
()
Ответ на: комментарий от anonymous

Ни фига ты не знаешь если не можешь маршрутизацию настроить. Читай маны по используемым технологиям и настраивай так как тебе нужно.

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

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

anonymous
()
Ответ на: комментарий от INFOMAN

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

anonymous
()

можно ли создавать петли в ip сетях?
если по команде route -n
у двух сетевых интерфейсов одинаковые сети назначения, то по какому из интерфецсов следует направить пакет?

запусти wireshark или tcpdump на разных интерфейсах и посмотри, что происходит

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

Ломятся они у тебя потому, что в твоих правилах iptables нужно помимо адреса, который перекрывается, указать еще и интерфейс от vpn'а: т.е. -i ppp+ на вход и -o ppp+ на выход.

Форварды без интерфейса жить не должны в твоих правилах. И будет тебе относительное счастье даже на перекрывающихся диапазонах (хотя я бы на твоем месте их развел - внутренняя сетка пусть будет 192.168.0.0/255.255.255.0, а vpn'овская 192.168.1.0/255.255.255.0 - тебе же больше 254 адресов не нужно?).

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

Кстати, рекомендую прочитать man по iptables (на русском) и какую-нить доку, хоть на вики, про диапазоны и как работают маски.

По роутингу даже не знаю что посоветовать прочесть. В принципе любые доки, хоть по винде, хоть по линухам, пойдут.

Юзверям нужно будет прописать два роута (команды, насколько я помню, можно в скрипте vpn задавать): роут на внутреннюю сетку + роут по умолчанию на vpn'овскую. Шлюз - vpn'овский адрес твоего гейтвея.

На гейтвее, соответственно, как был у тебя роут по умолчанию на "интерфес с белым ip", так и должен оставаться.

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

:PREROUTING ACCEPT [867:79886] :INPUT ACCEPT [19:2312] :FORWARD ACCEPT [845:76887] :OUTPUT ACCEPT [17:6323] :POSTROUTING ACCEPT [862:83210] COMMIT # Completed on Wed Aug 20 19:20:23 2008 # Generated by iptables-save v1.3.8 on Wed Aug 20 19:20:23 2008 *nat :PREROUTING ACCEPT [495165:40955595] :POSTROUTING ACCEPT [566:87549] :OUTPUT ACCEPT [577:88249] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # Completed on Wed Aug 20 19:20:23 2008 # Generated by iptables-save v1.3.8 on Wed Aug 20 19:20:23 2008 *filter :FORWARD DROP [0:0] :INPUT DROP [0:0] :OUTPUT DROP [0:0] -A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT -A INPUT -s 192.168.2.0/255.255.255.0 -i eth1 -j ACCEPT -A INPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT -A FORWARD -i eth1 -o eth0 -j ACCEPT -A FORWARD -i eth0 -o eth1 -j ACCEPT -A OUTPUT -m state -d 192.168.0.0/255.255.255.0 -o eth1 --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -m state -d 192.168.2.0/255.255.255.0 -o eth1 --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp --dport 65051 -j ACCEPT COMMIT # Completed on Wed Aug 20 19:20:23 2008

Это мой конфиг. Что не так в цепочках? Ткните носом плз.

anonymous
()
Ответ на: комментарий от anonymous

:PREROUTING ACCEPT [867:79886] :INPUT ACCEPT [19:2312] :FORWARD ACCEPT [845:76887] :OUTPUT ACCEPT [17:6323] :POSTROUTING ACCEPT [862:83210] COMMIT # Completed on Wed Aug 20 19:20:23 2008 # Generated by iptables-save v1.3.8 on Wed Aug 20 19:20:23 2008 *nat :PREROUTING ACCEPT [495165:40955595] :POSTROUTING ACCEPT [566:87549] :OUTPUT ACCEPT [577:88249] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # Completed on Wed Aug 20 19:20:23 2008 # Generated by iptables-save v1.3.8 on Wed Aug 20 19:20:23 2008 *filter :FORWARD DROP [0:0] :INPUT DROP [0:0] :OUTPUT DROP [0:0] -A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT -A INPUT -s 192.168.2.0/255.255.255.0 -i eth1 -j ACCEPT -A INPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT -A FORWARD -i eth1 -o eth0 -j ACCEPT -A FORWARD -i eth0 -o eth1 -j ACCEPT -A OUTPUT -m state -d 192.168.0.0/255.255.255.0 -o eth1 --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -m state -d 192.168.2.0/255.255.255.0 -o eth1 --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp --dport 65051 -j ACCEPT COMMIT # Completed on Wed Aug 20 19:20:23 2008 Это мой конфиг. Что не так в цепочках? Ткните носом плз.

anonymous
()
Ответ на: комментарий от anonymous

У меня такой вопрос, на freeBsd поднят ipfw , вот конфиг

${fwcmd} -f flush

${fwcmd} add check-state

${fwcmd} add allow ip from any to any via lo0

${fwcmd} add deny ip from any to 127.0.0.0/8

${fwcmd} add deny ip from 127.0.0.0/8 to any

# Stop spoofing

# ${fwcmd} add deny all from ${inet}:${imask} to any in via ${oif}

# ${fwcmd} add deny all from ${onet}:${omask} to any in via ${iif}

# Stop RFC1918 nets on the outside interface

${fwcmd} add deny ip from any to 10.0.0.0/8 in via ${oif}

${fwcmd} add deny ip from any to 172.16.0.0/12 in via ${oif}

${fwcmd} add deny ip from any to 192.168.0.0/16 in via ${oif}

${fwcmd} add deny ip from any to 0.0.0.0/8 in via ${oif}

${fwcmd} add deny ip from any to 169.254.0.0/16 in via ${oif}

${fwcmd} add deny ip from any to 240.0.0.0/4 in via ${oif}

${fwcmd} add deny icmp from any to any frag

${fwcmd} add deny log icmp from any to 255.255.255.255 in via ${oif}

${fwcmd} add deny log icmp from any to 255.255.255.255 out via ${oif}

#*********************MAIN RULES******************************************************** #****************************************************************************** * ******* # NAT

${fwcmd} add divert natd ip from ${cbank0} to any out via ${oif}

${fwcmd} add divert natd ip from ${cbank1} to any out via ${oif}

${fwcmd} add divert natd ip from ${aftn} to any 80 out via ${oif}

${fwcmd} add divert natd ip from any to ${oip} in via ${oif}

#****************************************************************************** * ******* ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${netin} to any 80,443 via ${oif}

${fwcmd} add divert natd ip from ${inet}/${imask} to any out via ${oif}

#****************************************************************************** * *******

# Stop RFC1918 nets on the outside interface

${fwcmd} add deny ip from 10.0.0.0/8 to any out via ${oif}

${fwcmd} add deny ip from 172.16.0.0/12 to any out via ${oif}

${fwcmd} add deny ip from 192.168.0.0/16 to any out via ${oif}

${fwcmd} add deny ip from 0.0.0.0/8 to any out via ${oif}

${fwcmd} add deny ip from 169.254.0.0/16 to any out via ${oif}

${fwcmd} add deny ip from 192.0.2.0/24 to any out via ${oif}

${fwcmd} add deny ip from 224.0.0.0/4 to any out via ${oif}

# Allow TCP through if setup succeeded !!!all connect!!!nado

${fwcmd} add allow tcp from any to any established

# Allow IP fragments to pass through

${fwcmd} add pass all from any to any frag

#server in inet - GO

${fwcmd} add allow ip from ${oip} to any out xmit ${oif}

# Allow setup of incoming email

# ${fwcmd} add pass tcp from any to ${oip} 25 setup

# Allow access to our DNS

${fwcmd} add allow udp from any 53 to any via ${oif} # for in lan!!!

# ${fwcmd} add fwd 127.0.0.1 tcp from 192.168.1.39/32 to any via ${oif}

# Squid # ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${netin} to any via ${oif}

#${fwcmd} add fwd 192.168.1.39 tcp from ${netin} to any

# PING ${fwcmd} add allow icmp from any to any icmptypes 0,8,11

# OPEN PORTS # ${fwcmd} add allow all from any to any 3128,21,22,25,110,139,445,80 via ${iif}

${fwcmd} add allow udp from any to any via ${iif}

${fwcmd} add allow tcp from any to any via ${iif}

# ${fwcmd} add allow all from 192.168.1.39 to not 192.168.1.0/24 in via ${iif} setup

# ъбртеф ипдйфш нйнп улчйдб ${fwcmd} add deny all from ${netin} to any via ${oif}

# ${fwcmd} add allow all from 192.168.1.39 to not 192.168.1.0/24 in via ${iif} setup

#****** ALL FACKE OFF******************************************************** ${fwcmd} add deny ip from any to any #****************************************************************************** * *****

# ${fwcmd} add pass udp from any to ${oip} 53

# ${fwcmd} add pass udp from ${oip} 53 to any

# Allow access to our WWW

# ${fwcmd} add pass tcp from any to ${oip} 80 setup

# ${fwcmd} add pass tcp from any to any 80 setup

# Reject&Log all setup of incoming connections from the outside

# ${fwcmd} add deny log tcp from any to any in via ${oif} setup

# Allow setup of any other TCP connection

# ${fwcmd} add pass tcp from any to any setup

# Allow DNS queries out in the world

# ${fwcmd} add pass udp from ${oip} to any 53 keep-state

# Allow NTP queries out in the world

# ${fwcmd} add pass udp from ${oip} to any 123 keep-state

Как мне это реалезовать например в CenTose? Ну или просто скажите к каким цепочкам относятся эти правила в IPTABLES?

CheGev80
()
Ответ на: комментарий от anonymous

Практически все.

Вот тут у нас маскарад на любые соединения:
-A POSTROUTING -o eth0 -j MASQUERADE

Вот здесь у нас проброс форвардинга на любые интерфейсы, порты и протоколы с любых машин (т.е. политика DROP у тебя не будет задействована никогда):
-A FORWARD -i eth1 -o eth0 -j ACCEPT
(интересно, зачем внутренний форвардить?)
-A FORWARD -i eth0 -o eth1 -j ACCEPT

Я вообще обычно выкидываю на хрен iptables-save и restore и пишу нормальный скрипт, ибо удобнее.

Для примера. Допустим, хотим мы пробросить tcp и udp (обойдутся без пингов:) )на любые порты на машинки с VPN (если тарификации по байтам нет, на адрес можно забить). Для начала форвардим все, что идет у нас на интерфейсы от VPN и с них:

INT_NET=172.16.128.0/24

$IPTABLES -A FORWARD -p tcp -i ppp+ -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i ppp+ -j ACCEPT
$IPTABLES -A FORWARD -p udp -o ppp+ -j ACCEPT
$IPTABLES -A FORWARD -p udp -o ppp+ -j ACCEPT

А теперь заворачиваем все это хозяйство в цепочку POSTROUTING.

Вариант 1. Мы же прокидываем в FORWARD только ppp+, значит можно просто указать сеть:

$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 \
-j SNAT --to-source белый_айпишник

Вариант 2. Прокидываем каждого клиента отдельно (192.168.1.1):

$IPTABLES -t nat -A POSTROUTING -s 192.168.1.1 \
-j SNAT --to-source белый_айпишник

Если я верно помню, то такое правило тоже сработает:

$IPTABLES -t nat -A POSTROUTING -i ppp+ \
-j SNAT --to-source белый_айпишник

Можно прокидывать все эти интерфейсы в инет. А время использования определять возможностью того или иного логина подключаться к VPN.

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

>У меня такой вопрос, на freeBsd поднят ipfw , вот конфиг

Придется все переписывать заново, т.к. iptables работает несколько иначе, чем ipfw.

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

Спасибо огромное! Реально помогло, есть нюансы, но они решаемые. А я чёто до такого и недодумался....

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.