2013-01-05 13 views
6

Ramki odebrane przez kartę sieciową będą obsługiwane przez sterownik, a następnie przekazywane do wyższej warstwy stosu protokołów przez jądro Linux.Jak zapobiec przekazywaniu pakietów przez jądro do warstwy sieci?

Czy istnieje prosty sposób, aby zapobiec przekazywaniu pakietów przez jądro do warstwy sieciowej? Aby móc odbierać ramki z warstwy łącza danych i obsłużyć wszystkie pakiety samodzielnie (być może programy warstwy aplikacji byłyby przepisywane)?

Myślę, że konieczna jest ponowna kompilacja jądra, czy należy to zrobić, modyfikując kod w softirq lub funkcje takie jak netif_rx czy kolejki list na procesora?

W rzeczywistości niektórzy koledzy z klasy i ja próbujemy wdrożyć uproszczoną wersję stosu protokołów TCP/IP w przestrzeni użytkownika dla ćwiczeń, i właśnie zaczęliśmy. Czytam książki takie jak UNP, APUE2, TCP/IP ilustrowane v1, v2, architektura sieciowa Linuksa, kod źródłowy Linux i tak dalej. Mam inne problemy, czy muszę zadać kolejne pytanie?

+0

Co chcesz zrobić? Zmiana jądra może nie być taka prosta. – prehistoricpenguin

+0

Naprawdę powinieneś opisać problem, który próbujesz rozwiązać. Jedna z poniższych odpowiedzi sugeruje filtr netfiltra. Inną opcją może być użycie biblioteki pcap do bezpośredniego uzyskania pakietów surowych. Nie będziemy wiedzieli, jaka jest właściwa odpowiedź, dopóki nie dowiemy się, jaki problem próbujesz rozwiązać. – chetan

+0

Edytowałem moje pytanie i naprawdę oczekuję dalszych sugestii. –

Odpowiedz

2

Jeśli chcesz samodzielnie obsłużyć pakiet, możesz użyć modułu jądra netfilter i zaimplementować niektóre zaczepy. Możesz łatwo znaleźć przykład kodu.

W różnych hakach możesz wybrać przetwarzanie pakietu i oddanie go do jądra lub upuszczenie go. To tylko kod powrotu do zmiany.

Artykuł które dają jakiś kod i wyjaśnienia przedmiotu: http://www.linuxjournal.com/article/7184

Rozwiązanie to będzie działać, a nie zbyt trudne do wdrożenia, ale nie jestem pewien, że jest to naturalny sposób na Resolv problemu.

+0

Tak, to działa. To trochę różni się od tego, co chciałem, ale prostsze do wdrożenia. być może potrzebuję znaleźć zaporę ogniową, która może upuścić pakiety Arp tak, aby wszystkie pakiety były pod kontrolą –

Powiązane problemy