Автор Тема: Nat и машина под ХР с dc++  (Прочетена 1693 пъти)

eNcLaVe

  • Напреднали
  • *****
  • Публикации: 88
    • Профил
Nat и машина под ХР с dc++
« -: Sep 27, 2006, 00:14 »
Здрасти на всички ! Ще се опитам да бъда максимално точен и кратък: познатата ситуация... две машини (работна и рутираща), и ДиСи клиент на работната, опитвам се да пусна активния режим на дисито, разбрах че трябва да позволя на рутиращата да препраща пакетите през поне 2 порта. На рутиращата съм със slackware 10.2, написал съм скрипт, като същността му e:

$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i eth2 -o eth0 -j ACCEPT
$IPTABLES -A FORWARD -j LOG
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$IPTABLES -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
$IPTABLES -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP

Това е, външния интерфейс е 0, вътрешния - 2

Та въпроса ми е, какъв е точния синтаксис на редовете, които явно трябва да добавя в същия скрипт, за да позволя препращане на пакетите през тези два порта (без значение точно кои).

Опитах с търсачката, но ми излезе точно един резултат със ситуация доста подобна на мойта, само дето няма никакъв отговор по темата..... и наистина нямам толкова време за да чета целия manual на айпитейбълс само за да проработи дисито ми, така че ако може някой който го е правил това да ми каже директно решението какво е.... предварително благодаря !

[edit] Всъщност пишлеметата пишат в хелп-а на диси++ че не трябват два, а достатъчен е един порт, който да бъде отворен в двете посоки рутер->работна, работна->рутер и рутер->гейтуей, гейтуей->рутер, на двата протокола TCP и UDP, метода който бе споменат е nat port mapping, та логиката ми е ясна, синтаксиса ми е проблема.... '<img'>

[edit2] Казаха ми да добавя тези редове:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 30555 -j DNAT --to 192.168.0.2:30555

iptables -t nat -A PREROUTING -p udp -i eth0 --dport 30555 -j DNAT --to 192.168.0.2:30555

като 30555 е порта който съм си избрал и който указвам в настройките на ДиСи-то, 192.168.0.2 е айпи-то на работната машина, т.е машината на която се опитвам да подкарам дисито в активен режим, а eth0 е интернетския интерфейс, лан картата на рутъра която е вързана към нета.

Опитах така и пак не става '<img'>



Активен

Schranz and gabba rule the world !

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
Nat и машина под ХР с dc++
« Отговор #1 -: Sep 27, 2006, 12:41 »
-SNAT ...
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Nat и машина под ХР с dc++
« Отговор #2 -: Sep 27, 2006, 14:02 »
Цитат
-SNAT ...


Глупости.

Правилото за маскиране ще свърши работата на SNAT-а, освен това се пише "-j SNAT", не "-SNAT".


По въпроса конкретно не мога да помогна. Правилата с DNAT, които са ти казали, ми изглеждат верни, нямам идея от какво може да е. С tcpdump може да пробваш да слушаш нещо да гледаш...

Иначе за FORWARD веригата малко криво ми изглежда как е направено. Първо пускаш само ESTABLISHED и RELATED пакети, веднага след това пускаш всички останали. Така и така политиката в FORWARD ти е ACCEPT, можеш да ги разкараш тия двете правила, макар че по-културно би било да ги оправиш де, ама ти си знаеш. :)
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Nat и машина под ХР с dc++
« Отговор #3 -: Sep 27, 2006, 17:33 »
Ахм...почти си успял '<img'>
Пробвай така '<img'>

съдържание на скрипта:
Цитат

#!/bin/bash
IPTABLES=/sbin/iptables
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -A FORWARD -i eth2 -o eth0 -j ACCEPT
$IPTABLES -A FORWARD -j LOG
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$IPTABLES -A INPUT -i eth0 -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -i eth0 -m state --state INVALID -j DROP
$IPTABLES -t nat -A PREROUTING -p tcp -i eth0 --dport 30555 -j DNAT --to 192.168.0.2:30555
$IPTABLES -t nat -A PREROUTING -p udp -i eth0 --dport 30555 -j DNAT --to 192.168.0.2:30555


Проблемът идва оттам че режеш всякакви пакети, които установяват връзка от външен хост към хост от мрежата (а ти това целиш с тези две ДНАТ правила).
Активен

"Knowledge is power" - France is Bacon

eNcLaVe

  • Напреднали
  • *****
  • Публикации: 88
    • Профил
Nat и машина под ХР с dc++
« Отговор #4 -: Sep 28, 2006, 23:29 »
Цитат (Hapkoc @ Сеп. 27 2006,15:02)
Иначе за FORWARD веригата малко криво ми изглежда как е направено. Първо пускаш само ESTABLISHED и RELATED пакети, веднага след това пускаш всички останали....

Hapkoc '<img'> Не е точно така.... правя друго, в първия ред позволявам пренасочване от интернетския интерфейс към работната машина само на заявени и установени пакети (-i eth0 -o eth2), а във втория позволявам пренасочване на абсолютно всякакви пакети и заявки от работната машина навън към интернет (-i eth2 -o eth0). '<img'> по-скоро може би след тези два реда няма смисъл от най-последните два, където дропвам всякакви ненужни външни пакети, ама като се замисля в думите на gat3way има смисъл доста, това ще го пробвам като се прибера... дано да свърши работа ! '<img'> Мерси много на всички !

[edit] Еми какво да кажа.... едно огромно благодаря на gat3way !!! '<img'> '<img'> '<img'> Значи наистина проблема е бил в това, че бях попрекалил със сигурността ':p' Сега след като си редактирах скрипта всичко е окей и си имам ДиСи връзка в активен режим !! Ся май има някъв друг досаден проблем, ама той е мисля от самия ми ДиСи клиент, а не от рутера, но активния режим работи идеално '<img'> Мерси отново '<img'>



Активен

Schranz and gabba rule the world !

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Nat и машина под ХР с dc++
« Отговор #5 -: Sep 29, 2006, 00:05 »
Прав си, тоя път не разгледах внимателно нещата и се изказах неподготвен... Сори :)
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Nat и машина под ХР с dc++
« Отговор #6 -: Sep 29, 2006, 01:14 »
Цитат (eNcLaVe @ Сеп. 27 2006,00:14)
$IPTABLES -A FORWARD -j LOG

Недей така '<img'>
Ще си скапеш харда '<img'>
Сложи поне един --limit в това правило



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

eNcLaVe

  • Напреднали
  • *****
  • Публикации: 88
    • Профил
Nat и машина под ХР с dc++
« Отговор #7 -: Sep 29, 2006, 01:52 »
Е то това ми логва трафика, който ще бъде пренасочен ама всеки път ли чете/пише харда, когато има трафик ? В смисъл не се ли кешира лога някъде в рам паметта и като се понапълни тази област тогава да мята на харда ? щото ако е всеки път да се гърчи харда с това, ще го махна направо този ред....
Активен

Schranz and gabba rule the world !

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Nat и машина под ХР с dc++
« Отговор #8 -: Sep 29, 2006, 02:25 »
Честно казано, не съм много сигурен на какъв интервал се записва в хард диска, но много добре си спомням какво стана, когато пуснах poptop - харда стържеше непрекъснато и работата на машината беше мноого зле. Оказа се, че pptpd логва всеки?!? пакет - описано е в http://tula.bofh.ru/articles/461.

Дали се буферира в паметта? Бих казал, че ако времето за запис от паметта в харда е по-голямо от времето, което си задал за "заспиване" на харда при липса на IO операции, то "скапването" е в доста силна степен (един от основните параметри на времето на живот на един хард диск е броят на старт-стоповите цикли).



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Nat и машина под ХР с dc++
« Отговор #9 -: Sep 29, 2006, 10:37 »
Не се буферира. Иначе има един междинен вариант като за хора дето им се занимава с глупости. Спираш klogd и си пишеш един скрипт (bash обаче няма да свърши работа), който чете от /proc/kmsg и редовете свързани с лог-ване на трафика ги добавяш към един масив. (всичко останало го пишеш в /dev/log). Така можеш да си реализираш собствено буфериране като  изписваш информацията от трафика от масива във файла когато решиш че е най-добре. За съжаление, скриптът трябва да работи като root. Иначе не би трябвало да има проблем. klogd дефакто не прави нещо различно, само дето няма "буфериращите" възможности които искаш '<img'>
Активен

"Knowledge is power" - France is Bacon