Pakiety TCP/IP, przesyłanie przez "brame"

0

Witam!

Muszę napisać program który uruchomiony na danym komputerze(A) bedzie kierował cały ruch TCP/IP przez inny komputer(B) w sieci.

Chodzi o to że komputer A nie ma dostępu do sieci w której pracuje komputer B, ale nawzajem się "widzą".
Chcę uruchomić program na komuterze A który będzie wysyłał te różne pakiety do komputera B, który zaś wyśle je w sieć. Program na komputerze B będzie musiał modyfikować adres odbiorcy, ale to takie szczegóły.

I tu mam pytanie, jak przechwycić te pakiety z komputera A i zablokować je przed wysłaniem do sieci do której jest podłączony?

Jak wysyłać pakiety i je przechwytywać(to będzie potrzebne w przypadku komputera B).

Chcę uzyskać efekt, gdy uruchomie przegladarke, program pocztowy, komunikator(komp A) - wszystkie te dane będą wysyłane do głównej sieci poprzez komputer B.

Systemy na komputerach to Windows XP(chodź planuje zmienić system na serwerze B na linuxa).

0

Nie wiem jak na Windozie.
Na Linuksie rozwiązaniem obu problemów są odpowiednio użyte iptables, ale pojęcia nie mam jaki jest sens blokowania pakietów wysyłanych z kompa A.

0
Programik napisał(a)

Muszę napisać program

Współczuję ;) Pisanie czegoś takiego mija się z celem. Musisz nie tylko obsłużyć pakiety wychodzące ale i te wracające. Oprócz tego będziesz musiał także routować protokół UDP, z którym jest totalna sieczka, bo nie wiadomo czy gniazdo z Twojej sieci lokalnej się już zamknęło czy nie. Poza tym dochodzą protokoły typu ICMP itd.

Najlepiej jest skorzystać z gotowych rozwiązań. Jak napisał mój przedmówca iptables albo jakikolwiek program do routowania (pod windowsem też jest taka opcja) lub lokalny serwer proxy.

0

Wymyśliłem takie coś:

[Komunikacja z komputera A do sieci)
Program(A) będzie wychwytywał pakiety wychodzące z tego komputera, następnie wsadzi to w paczke i wyśle to wszystko do programu(B), który zamieni adresy odbiorcy i wypuści te pakiety w sieć.

[Komunikacja z sieci do komputera A]
Jak wiadomo program B zamienił adresy odbiorcy na własny adres więc pakiety będą trafiać do tego komputera B. Program przechwyci pakiety, zmieni adresy odbiorcy na "orginalny" czyli adres komputera A, wsadzi to w paczke i wyśle do programu na komputerze A.
Program(A) zaś odczyta te pakiety i wpuści je w ten sposób jakby trafiły z sieci.

coobba napisał(a)

nie mam jaki jest sens blokowania pakietów wysyłanych z kompa A.

Chyba już wystarczająco wyjaśniłem :-P

Komputer A i komputer B podłączone są do internetu, dodatkowo komputer B podłączony jest do sieci do której komputer A chce uzyskać dostęp.

Protokoły UDP, ICMP i zapytania arp są zbędne do tej komunikacji, wystarczy mi TCP/IP.
Coś wykombinuje tylko potrzebuje odpowiedzi na pytania:
Jak przechwycić pakiet?
Jak wysłać pakiet(także do komputera z którego ten pakiet jest wysyłany)?
Jak zablokować pakiet przed wysłaniem go w sieć?
[Zmodyfikować jakąś biblioteke odpowiedzialną za wysyłanie, czy co?]

Oczywiście system windows xp.
Z linuxem może bym sobie poradził bo podobne programy pisałem.

0
Programik napisał(a)

Protokoły UDP, ICMP i zapytania arp są zbędne do tej komunikacji, wystarczy mi TCP/IP.
Jeżeli nie będą Ci potrzebne zapytania DNS to rzeczywiście się obejdzie. ARP jest nierutowalny ;) Tak czy owak dlaczego nie możesz zastosować gotowych rozwiązań :>

0
CyberKid napisał(a)
Programik napisał(a)

Protokoły UDP, ICMP i zapytania arp są zbędne do tej komunikacji, wystarczy mi TCP/IP.
Tak czy owak dlaczego nie możesz zastosować gotowych rozwiązań :>

Lubie wszystko kontrolować i dlatego zwykle zasiadam przed assemblerem(czasem i c) pisząc programy :-|
Chcę się także dowiedzieć jak to wszystko działa, a nie ściągnąć jakieś magiczne programy i dziwić się jakich zaklęć program używa.

P.S Czemu nie skorzystaliście z gotowych forum typu phpBB ;-P

0
Programik napisał(a)

P.S Czemu nie skorzystaliście z gotowych forum typu phpBB ;-P

Zajrzyj do stopki ;)

Copyright © 2000-2006, a wciąż beta ;)

Jeżeli chodzi o główny temat wątku, to jeżeli chcesz pisać coś takiego dla własnej satysfakcji, to nie ma sprawy ale z Twoich wypowiedzi wnioskuję, że potrzebujesz zrobić po prostu routing przez jedną maszynę w sieci. W takim wypadku lepiej skorzystać z gotowych i sprawdzonych rozwiązań ;)
Nie wyważa się otwartych drzwi

0

Pod windows jest winpcap, pod reszte systemow pcap.

http://winpcap.mirror.ethereal.com/301a/docs/group__wpcap__tut4.html <-- odbieranie pakietow
http://winpcap.mirror.ethereal.com/301a/docs/group__wpcap__tut8.html <--- wysylanie pakietow

Hth.
A teraz sobie sam znajdz jak wyglada IPhdr, i TCPhdr.
Chcesz pisac ambitne projekty, to szukaj sam, a nie oczekuj az Ci sie poda na tacy.

Pozdrawiam.

0

do trasowania pakietow nie sluzy iptables a ni jakikolwiek firewall, tylko route.

route !!! taki standardowy programik do zmiany tablic routingu, ktore sa w KAZDYM systemie o ile tylko obsluguje protokoły rutowalne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1