Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Archer в Mar 10, 2005, 15:15



Титла: LinuxRouter
Публикувано от: Archer в Mar 10, 2005, 15:15
Здравейте, имам въпрос относно iptables. В една статия прочетох принципа на работа с iptables, но никъде не срещнах името на файла, в който се задават правилата.
Извинявам се ако въпроса ми е глупав или ако причината е в мен(можеби не съм чел достатъчно), но бих искал ако може да ми кажете името на файла. Ако има някой хубав сайт по въпроса(Линукс рутиране) ще се радвам ако ми го кажете.
Ползвам Slackware v10 Kernel2.4.28


Титла: LinuxRouter
Публикувано от: VladSun в Mar 10, 2005, 15:17
Файл?!?
Няма такова нещо - всичко е команди.

Пример:

/usr/sbin/iptables -P INPUT ACCEPT

http://lartc.org/


Титла: LinuxRouter
Публикувано от: Archer в Mar 10, 2005, 16:16
Цитат
Няма такова нещо - всичко е команди.
Пример:
/usr/sbin/iptables -P INPUT ACCEPT

Съгласен съм, но как мога да видя какви правила съм задал на различните интерфейси?


Титла: LinuxRouter
Публикувано от: toxigen в Mar 10, 2005, 16:37
Правилата можеш да видиш най-лесно (според мен) така:

iptables -L -nvx       (-nvx дава по-ясен израз за нещата ;))

а за nat примерно:

iptables -L -t nat -nvx

iptables -F трие всичко (идва от flush)

Виж man iptables за по-точно обяснение на опциите.


Титла: LinuxRouter
Публикувано от: astronom в Mar 10, 2005, 17:15
Можеш да запазиш правилата във файл и след това да ги зареждаш от него . Провери man страницата на iptables за подробности.


Титла: LinuxRouter
Публикувано от: buboleck в Mar 10, 2005, 17:21
Slack-a си има фаил за тези неща в /etc/rc.d/rc.modules ако не се лъжа. Там се указват модулите които да се зареждат и съответно командите към iptables.  Има си и опътване кое за какво е  :)


Титла: LinuxRouter
Публикувано от: Archer в Mar 10, 2005, 18:23
Благодаря на всички, който ми отговориха. Информацията е ценна.


Титла: LinuxRouter
Публикувано от: VladSun в Mar 10, 2005, 23:17
Цитат (astronom @ Март 10 2005,17:15)
Можеш да запазиш правилата във файл и след това да ги зареждаш от него . Провери man страницата на iptables за подробности.

По точно виж "See also" секцията


Титла: LinuxRouter
Публикувано от: VladSun в Mar 10, 2005, 23:21
Цитат (toxigen @ Март 10 2005,16:37)
iptables -F трие всичко (идва от flush)

Това ми е било винаги чудно - даже и в "професионалните" скриптове за защитни стени давани в Интернет, се опитват така да изчистят ВСИЧКИ правила. Само, че за да почне скрипта от нулата, трябва:

Примерен код

iptables -X
iptables -t nat -X
iptables -t mangle -X

iptables -F
iptables -t nat -F
iptables -t mangle -F


Всъщност "iptables -F" е равносилно на "iptables -t filter -F"
(таблицата filter е по подразбиране)

Надявам се да съм бил полезен - поне на мен ми беше :)


Титла: LinuxRouter
Публикувано от: toxigen в Mar 11, 2005, 10:32
Реших да си го спестя понеже човека е начинаещ пък и в man-а пише всичко.

Все пак благодаря за корекцията VladSun.


Титла: LinuxRouter
Публикувано от: в Mar 11, 2005, 12:28
Цитат (VladSun @ Март 11 2005,00:21)
Това ми е било винаги чудно - даже и в "професионалните" скриптове за защитни стени давани в Интернет, се опитват така да изчистят ВСИЧКИ правила. Само, че за да почне скрипта от нулата, трябва:

Примерен код

iptables -X
iptables -t nat -X
iptables -t mangle -X

iptables -F
iptables -t nat -F
iptables -t mangle -F


Надявам се да съм бил полезен - поне на мен ми беше :)

Което всъщност НЕ Е вярно:
--- cut man iptables ---
-X, --delete-chain [chain]
Delete the optional user-defined chain specified.  There must  be  no  refer-
ences  to  the chain.  If there are, you must delete or replace the referring
rules before the chain can be deleted.  If no  argument  is  given,  it  will
attempt to delete every non-builtin chain in the table.
--- END cut ---
Превод на български: за да се изтрие user-defined chain трябва да се изтрият всички сочещи към нея правила [от buil-in chains] а това става с iptables -D [chain] [rulenum] или iptables -F [chain] т.е. пак стигаме до:
Примерен код

iptables [table] -F [chain]
iptables [table] -X [chain]

За невярващите ето пуснете си този прост скрипт и експериментирайте:
Примерен код

#!/bin/bash

iptables -N test1
iptables -A INPUT -i eth0 -j test1
iptables -A test1 -s 127.0.0.1 -j DROP
iptables-save

# Here comes the test
iptables -X
iptables -F

iptables-save



Айде със здраве


Титла: LinuxRouter
Публикувано от: VladSun в Mar 11, 2005, 14:03
Така де, обърнал съм реда :) Акцентът ми беше върху изпълнението на тези команди върху ВСИЧКИ таблици.

Благодаря за корекцията ;)


Титла: LinuxRouter
Публикувано от: Archer в Mar 13, 2005, 15:04
Искам да Ви задам още един въпрос  относно рутирането. При мен свързването е "КЛАСИЧЕСКО" тоест имам Интернет доставчик, който ми осигурява статично реално IP(83.228.x.x). Сложил съм си допълнителна LAN карта за към вътрешната мрежа(192.168.1.2 на моето PC)-->(192.168.1.3 на PC-то на което желая да пусна и-нет с DefaultGateway:192.168.1.2). Въпроса: На кой от двата IP адреса(83.228.x.x или на 192.168.1.2) трябва да задавам правилата за да пусна интернет? Ако може малко да ме насочите(можеби с пример), ще ви бъда благодарен.


Титла: LinuxRouter
Публикувано от: в Mar 13, 2005, 16:59
iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
Това е горе принципа и се задава вътрешната лан карта :)


Титла: LinuxRouter
Публикувано от: VladSun в Mar 14, 2005, 01:27
Както и трябва да си сигурен,че FORWARD веригата ти приема пакети от/за твоята ЛАН мрежа (или определени ИП-та от нея).


Титла: LinuxRouter
Публикувано от: Archer в Mar 14, 2005, 08:32
Цитат
Искам да Ви задам още един въпрос  относно рутирането. При мен свързването е "КЛАСИЧЕСКО" тоест имам Интернет доставчик, който ми осигурява статично реално IP(83.228.x.x). Сложил съм си допълнителна LAN карта за към вътрешната мрежа(192.168.1.2 на моето PC)-->(192.168.1.3 на PC-то на което желая да пусна и-нет с DefaultGateway:192.168.1.2). Въпроса: На кой от двата IP адреса(83.228.x.x или на 192.168.1.2) трябва да задавам правилата за да пусна интернет? Ако може малко да ме насочите(можеби с пример), ще ви бъда благодарен.


Това, което успях да измисля(разбира се не работи) е:

За eth0(83.228.x.x на който получавам и-нет):

#iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.1.2-192.168.1.3//тези и-фейси са 192.168.1.2 на рутера, а другия на машината, на която искам да пусна и-нет

За eth1(192.168.1.2-това е от страната на рутера):

#iptables -t  nat -A POSTROUTING -o eth1 -s 192.168.1.2 -j SNAT --to 83.228.113.50

Mоля ако някой от вас има някакви идеи да ги сподели.
Благодаря ви предварително


Титла: LinuxRouter
Публикувано от: в Mar 14, 2005, 10:33
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.1.2-192.168.1.3

ne taka pi4!
Taka se pravi:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 82.xx.xx.xx


Титла: LinuxRouter
Публикувано от: Archer в Mar 14, 2005, 10:47
Това значи ли, че трябва да изтрия PREROUTING правилото?


Титла: LinuxRouter
Публикувано от: toxigen в Mar 14, 2005, 14:59
Изтрий всичко (както казаха хората по-горе) и сложи само това, което пише Popravka:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 82.xx.xxx.xx

Така трябва да тръгне


Титла: LinuxRouter
Публикувано от: Uvigii в Mar 14, 2005, 17:36
Цитат (buboleck @ Март 10 2005,18:21)
Slack-a си има фаил за тези неща в /etc/rc.d/rc.modules ако не се лъжа. Там се указват модулите които да се зареждат и съответно командите към iptables.  Има си и опътване кое за какво е  :)

/etc/rc.d/rc.firewall
btw. какво общо имат модулите които се зареждат и firewall?!?


Титла: LinuxRouter
Публикувано от: temsata в Mar 14, 2005, 17:49
Абе хора, понеже виждам някой много добри отговори тука реших да ви помоля за една информация и аз. Ще съм благодарен ако ми кажете коя е любимата ви литература точно за това (ип таблиците). Считайте, че имам понятие от рутирането и ми трябва ръководство за линукс-рутиране по-специално.


Титла: LinuxRouter
Публикувано от: Uvigii в Mar 14, 2005, 17:51
Цитат (Guest @ Март 11 2005,13:28)

Което всъщност НЕ Е вярно:

Айде със здраве


Цитат

root@laptop:/# iptables -V
iptables v1.2.11
root@laptop:/# iptables -t nat -N TEST
root@laptop:/# iptables -F
root@laptop:/# iptables -X
root@laptop:/# iptables -X
root@laptop:/# iptables -F
root@laptop:/# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain TEST (0 references)
 pkts bytes target     prot opt in     out     source               destination

Което всъщност е идеята:
Цитат
Всъщност "iptables -F" е равносилно на "iptables -t filter -F"
(таблицата filter е по подразбиране)


Титла: LinuxRouter
Публикувано от: VladSun в Mar 14, 2005, 22:10
ако все още не "тръгва" дай:

iptables -P FORWARD ACCEPT

и виж дали е ок. Ако е ок, оправи си правилата за по-частно използване на FORWARD веригата


Титла: LinuxRouter
Публикувано от: Archer в Mar 15, 2005, 09:07
Не успях, ще пробвам и това което ми предложихте като краен вариант.
Искам да попитам и още нещо, защо всеки път когато влезна в LINUX ми се налага да задавам настройките на новата(добавената след инсталация) мрежова карта?Иначе интерфейса е UP, а Linux без проблем си я детектва.


Титла: LinuxRouter
Публикувано от: toxigen в Mar 15, 2005, 09:47
Отвори /etc/rc.d/rc.inet1.conf и вътре опиши настройките на интерфейса, за да се настройва при стартиране. След това пак пробвай горните неща, защото може от това да не иска. Ако искаш за настройките може да ползваш и netconfig.

ПП. Забравих, след като настроиш интерфейса в конфига рестартирай rc.ip_forward и rc.inet1 или направо рестарт на компа.


Титла: LinuxRouter
Публикувано от: Archer в Mar 15, 2005, 10:03
Благодаря ти. Пак ще пробвам, но ще стане вечерта, защото сега съм на работа.


Титла: LinuxRouter
Публикувано от: VladSun в Mar 15, 2005, 11:44
Мдам, toxigen се сети много навреме:

echo 1 > /proc/sys/net/ipv4/ip_forward

е задължително !

Също така е добре да се пусне и:

echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter


Титла: LinuxRouter
Публикувано от: Archer в Mar 16, 2005, 19:24
Проблемът продължава да е налице. Незнам дали аз не правя нещо което да оплесква работите. Ще обясня:

1. Влезнах в конфигурационния файл на мрежовата карта, там заложих стат. IP адреза на eth1: 192.168.1.2(откъм рутера), така че вече не се налага след всяко влизане в машината да ги задавам.

2.След като се уверих, че няма зададени iptables правила въведох:
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 83.228.xx.xx(това е адреса на който ми пристига и-нет и  е на eth0, по късно опитах със същото правило на зададох DG на тази мрежа: 83.228.XXX.XXX пак не стана)
#iptables -P FORWARD ACCEPT(след като не стана само с горното прибавих и това)


Титла: LinuxRouter
Публикувано от: VladSun в Mar 16, 2005, 19:33
Дай резултатите от:

iptables -nL
iptables -t nat -nL
iptables -t mangle -nL
route -n
ifconfig
cat /proc/sys/net/ipv4/ip_forward
arp -n

PS:
Цитат
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 83.228.xx.xx

e по-добре да е:
Цитат
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 83.228.xx.xx


Титла: LinuxRouter
Публикувано от: Archer в Mar 16, 2005, 19:40
Ще ги дам малко по-късно, защото в момента съм на работа, а пък няма кой да ми пусне PC-то в къщи.


Титла: LinuxRouter
Публикувано от: Archer в Mar 20, 2005, 23:54
Пак не става. Мислех си, че можеби не съм задал в ядрото опцията да рутира , но не е от това(дори прекомпилирах ядрото). Това което написах е:
#echo 1>/proc/sys/net/ipv4/ip_forward
#echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 83.228.113.50(моят реален IP-вече съм отчаян предоставям всичко)

Резултати:
#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
83.228.112.0    0.0.0.0         255.255.252.0   U     0      0        0 eth0
127.0.0.0          0.0.0.0         255.0.0.0           U     0      0        0 lo
0.0.0.0         83.228.112.1    0.0.0.0               UG    1      0      0 eth0

# iptables -L -nvx
Chain INPUT (policy ACCEPT 2094 packets, 1550671 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1599 packets, 201129 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Много интересно тук се виждат някакви пакети но и-нет няма

Имам едно питане: трябва ли на 192.168.1.2, който е на рутера да дам DG:83.228.113.50(и-фейса на който получавам и-нет) ,при положение, че не е свързан директно?


Титла: LinuxRouter
Публикувано от: в Mar 21, 2005, 00:46
Imash li net na Router-a? Dal li si Default Gateway-a na komputrite zad router-a  IP-to mu 192.168.1.2? Vavel li si DNS serverite koito si polu4il ot dostavki4a si na NAT-natite kompove?Ako i tova ne e, se obarni kam nqkoi spec.


Титла: LinuxRouter
Публикувано от: Soulstealer в Mar 22, 2005, 16:36
Примерен код
#!/bin/bash
ifconfig eth1 192.168.1.1 netmask 255.255.255.0 up
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

Направи chmod +x на този скрипт и го изпълни.
След това сложи на машината клиент:
IP 192.168.1.X (на мястото на X можеш да сложиш, което си поискаш в интервала от 2 до 254 включително)
mask 255.255.255.0
GW 192.168.1.1
DNS - тук слагаш DNS-а, който са ти дали доставчиците (ако имаш BIND можеш да сложиш и 192.168.1.1)
Но все пак, за да си сигурен, че проблема не е от DNS-а пусни:
ping 194.145.63.12
от машината клиент, ако ти върне reply значи вече си готов. В противен случай имаш нещо неработещо в системата, а грешката не е в теб. Можеш също да провериш стойността на TTL-a (може доставчиците ти да се се "изхитрили") като пуснеш ping от машината router до някой работещ хост в интернет, ако ти върне TTL = 0 отивай в netfilter.org и потърси из форума как се patch-ва ядро за TTL target support :)

Успех! :)