Zauważyłem trend ostatnio. Zamiast wymieniać router, gdy dosłownie przestaje działać, musiałem działać wcześniej-swapping w nowym sprzęcie, ponieważ stary router nie mógł już nadążyć z rosnącymi prędkościami Internetu dostępnego w okolicy. (Uwaga, jestem należycie wdzięczny za ten problem.) Jako ostatni przykład, cała masa routerów Netgear ProSafe 318G nie udało mi się po raz ostatni, jak małe firmy zostały uaktualnione z 1.5-9mbps tradycyjnych połączeń T1 do 50mbps koncentryczne (kabel).
Tak, koncentryczne-nie włókna. Nawet coax okazał się zbyt dużym obciążeniem dla starej serii ProSafe. Urządzenia te nie tylko nie nadążały, ale wręcz padały na twarz. Często, stare routery spadały w testach prędkości z 9mbps przy starym połączeniu do 3mbps lub mniej przy połączeniu 50mbps. Oczywiście, że nie latać.
These dni, odpowiedź coraz bardziej wydaje się być routery bezprzewodowe. Te mają tendencję do być długo na slick-looking plastiku i jaskrawo kolorowe interfejsy sieciowe, ale krótki na funkcje techniczne i niezawodność. Co ma zrobić najemny sysadmin? Cóż, w swojej istocie, wszystko z dwoma fizycznymi interfejsami sieciowymi może być routerem. I dziś, istnieje wiele i wiele stosunkowo szybkie, niedrogie, i (super ważne!) w pełni półprzewodnikowe pudełka tam.
Więc, czas wreszcie nadszedł. W obliczu starzenia się sprzętu i nowych ofert konsumenckich, które nie spełniają moich potrzeb, postanowiłem zbudować swój własny router. I jeśli dzisiejszy zmieniający się krajobraz łączności stawia Was w podobnej sytuacji, okazuje się, że zarówno budowanie, jak i konstruowanie jest całkiem szybkie.
Po co robić to w trudny sposób
Wielu z Was pewnie mruczy: „no tak, pfSense, jasne”. Niektórzy z was mogą się nawet zastanawiać nad smoothwall lub untangle NG. Grałem z większością firewalli, ale zdecydowałem się na coś bardziej podstawowego, bardziej oldschoolowego: zwykła instalacja Ubuntu Server tylko przez CLI i kilka reguł iptables.
Przyznaję, że to prawdopodobnie nie jest najbardziej praktyczne podejście dla każdego czytelnika, ale dla mnie miało to sens. Mam spore doświadczenie w dostosowywaniu iptables i samego jądra Linuksa do wysokiej przepustowości w skali Internetu, a im mniej błyszczących funkcji, grafik i klikalnych rzeczy, które są umieszczone między mną a tablicą firewalla, tym mniej bzdur muszę usunąć z drogi i tym mniej nowych, nie mających zastosowania w reszcie mojej pracy rzeczy muszę się nauczyć. Każda reguła, którą już wiem jak utworzyć w iptables, aby zarządzać dostępem do moich serwerów, wiem także jak zastosować ją w mojej zaporze – jeśli moja zapora działa na tym samym distro co moje serwery.
Pracuję także dość intensywnie z OpenVPN, i chcę być w stanie kontynuować konfigurowanie zarówno serwerów jak i klientów w sposób, na którym już polegam. Niektóre firewalle mają wbudowaną obsługę OpenVPN, a niektóre nie, ale nawet te z wbudowaną obsługą oczekują, że wszystko będzie działać inaczej niż ja. Ponownie, więcej system pozostaje z mojej drogi, tym szczęśliwszy będę.
Jako dodatkowy bonus, wiem, że mogę bardzo łatwo utrzymać wszystko całkowicie aktualny na moim nowym i całkowicie wanilia Ubuntu routera. To wszystko jest obsługiwane bezpośrednio przez Canonical, i to może (i robi) wszystkie mają automatyczne aktualizacje włączone. Dodaj okazjonalne zadanie cron do ponownego uruchomienia routera (aby uzyskać nowe jądra), i jestem golden.
Hardware, hardware, hardware
Przejdziemy przez how-to w przyszłym kawałku, ale dziś ważne jest, aby ustalić, dlaczego router DIY-build może być najlepszym rozwiązaniem. Aby to zrobić, trzeba najpierw zrozumieć dzisiejszy ogólny krajobraz.
W świecie konsumentów, routery głównie mają itty-bitty małe procesory MIPS pod maską bez całego dużo pamięci RAM (delikatnie mówiąc). Te routery w dużej mierze różnią się od siebie na podstawie interfejsu: Jak błyszczące jest to? Jak wiele funkcji technicznych ma? Czy użytkownicy mogą go rozgryźć łatwo?
Na wyższym końcu rynku SOHO, zaczynasz widząc niektóre smartphone-grade procesory ARM i dużo więcej pamięci RAM. Te routery- Nightgear Nighthawk serii, z których jeden będzie młotkiem na później-feature wiele rdzeni, wyższe prędkości zegara, i całe mnóstwo więcej pamięci RAM. Są one również wyposażone w znacznie wyższe ceny tagów niż tańsze konkurencji. Wziąłem Linksys EA2750 za $89, ale Netgear Nighthawk X6, który dostałem wraz z nim był prawie trzy razy droższy (nawet na wakacyjnej wyprzedaży!) za $249.
Wciąż, chciałem pójść inną drogą. Ostatnio na rynku pojawiło się wiele interesujących i niedrogich małych bezwentylatorowych maszyn x86-64. Sztuczka do budowy routera jest znalezienie jednego z wielu NIC. Można znaleźć kilka dość bezpiecznych zakładów na Amazon, ale są one starsze procesory oparte na Atom, a ja chciałem nowszy Celeron. Po kilku dobrych staromodnych wyszukiwania Internetu i dithering, w końcu wziąłem Alibaba zanurzenia i zamówił sobie nowy Partaker Mini PC z Shenzhen Inctel Technology Company. Po 240 dolarów za sam router i kolejne 48 dolarów za 120 GB dysk SSD firmy Kingston z Newegg, wydałem około 40 dolarów więcej na Homebrew Special niż na Nighthawk. Czy warto było?
Wyzwanie pojawia się
Zanim zaczniemy testy, rzućmy okiem na konkurentów.
Ten Nighthawk jest, w porównaniu z innymi, OGROMNY i imponujący (nawet bardziej niż wydaje się to na zdjęciu). W rzeczywistości jest znacznie większy od mojego Homebrew Special, który jest w pełni funkcjonalnym komputerem ogólnego przeznaczenia, którego można używać jako doskonałego, kompetentnego desktopa. To tak jakby DC Comics poprosiło H.R. Gigera o pomoc w zaprojektowaniu bezprzewodowego routera dla Batmana.
Sam Homebrew Special jest uroczy. Ma jeden niebieski i jeden czerwony LED wewnątrz obudowy, a w nocy, światło z obu wylewa się z jego otworów wentylacyjnych pośrednio, dając stos sieciowy świąteczny wygląd imprezy. Jeśli nie było żadnych fanów, aby spowodować migotanie doprowadziłoby mnie to do szaleństwa, ale ponieważ jest to stały stan miękkiej poświaty, faktycznie lubię to.
The Linksys i Buffalo, z drugiej strony, wyglądają dokładnie to, co są one – tanie routery. Jednak warto zauważyć, stylizacja na Linksys jest duża poprawa w stosunku do przeszłości marki. To wygląda bardziej jak coś profesjonalnego, a mniej jak zabawka dla dzieci. (Ale dość o stylizacji – nadszedł czas, aby umieścić te biedne routery przez rękawicę.)
Oczywiste pierwsze wyzwanie jest prosty test przepustowości. Umieszczasz jeden komputer na stronie LAN i jeden komputer na stronie WAN, i uruchomić nifty małe narzędzie o nazwie iperf przez środek. Proste, prawda?
Well, that would make for a short, boring article. Sieć sama mierzy gigabit, trzy gigabitowe routery mierzą gigabit, a 100 megabitowy router mierzy 100 megabit.
W rzeczywistości, test tak prosty nawet nie zaczyna opowiadać historii. Jedynym powodem, aby to zrobić może być, aby pokazać, jak bezcelowe jest. Producenci routerów są coraz bardziej świadomi, że ludzie rzeczywiście testują swoje produkty, a żaden producent nie chce, aby jego produkt był wszędzie, ale na szczycie czegoś takiego jak wykres routerów Smallnetbuilder. W świetle, producenci są aktywnie goni stats te days.
Problemem jest to, że statystyki są tylko statystyki. Będąc w stanie trafić wysoki numer na czystej przepustowości testu jest lepsze niż nic, ale to daleko od całej historii. Nauczyłem się tej lekcji ciężko podczas pracy dla dostawcy T-1 na początku 2000 roku. Ich niezwykle drogie modemy Adtran mogły poradzić sobie z normalnym użytkowaniem Internetu przez 50 do 100 osób, ale pojedynczy użytkownik korzystający z Limewire lub innego klienta P2P sprowadziłby wszystko na ziemię w mgnieniu oka. (Wtedy rozwiązanie: umieścić niedrogi, ale świetny router Netopia za 150$ przed drogim modemem Adtran. Problem rozwiązany.)
Nawet dla stosunkowo prostego routingu – bez głębokiej inspekcji pakietów, bez strumieniowego skanowania złośliwego oprogramowania lub wykrywania włamań, bez kształtowania – procesor i pamięć RAM dostępne dla routera są ważne znacznie powyżej i poza zdolność do nasycenia łącza internetowego. Peer-to-peer wymiana plików jest o najbardziej brutalnej działalności sieci będzie zobaczyć, te dni (czy jest to bittorrent, jeden z wariantów Gnutella lub eDonkey, lub firmy gry peer-to-peer system pobierania). W momencie wprowadzenia przez Blizzarda systemu dystrybucji P2P ja już nie grałem w WoW, ale mój ówczesny współlokator jeszcze nie. W dniu premiery nowy system pobierania WoW w trybie peer-to-peer był domyślnie ustawiony na brak jakiegokolwiek throttlingu. Próbował radośnie znaleźć i utrzymać połączenie z dosłownie tysiącami klientów jednocześnie, a moja sieć domowa padła jak Gilbert Godfried atakowany przez Terry’ego Tate’a. Mój współlokator i ja mieliśmy słowa.
W oparciu o takie doświadczenia z przeszłości, nie chcę tylko minimalnie „przetestować” moich challengerów i nazwać to dniem, chcę naprawdę sprawić, by się pocili. Więc aby to zrobić, zamierzam uderzyć ich z obciążeniami, które podkreślają trzy obszary problemowe: nasycenie łącza sieciowego, tworzenie i zrywanie pojedynczych połączeń TCP/IP naprawdę szybko, oraz utrzymywanie ogromnej liczby pojedynczych połączeń TCP/IP otwartych w tym samym czasie.
Mam botnet w kieszeni i jestem gotowy, by go rozkręcić
Przez chwilę rozważałem skonfigurowanie jakiegoś ohydnego, napędzanego Dockerem monstrum z dziesiątkami tysięcy linuksowych kontenerów z indywidualnymi adresami IP, wszystkie zabiegające o połączenia i/lub serwujące strony internetowe. Potem oprzytomniałem. Jeśli chodzi o routery, to nie ma różnicy pomiędzy utrzymywaniem połączeń do tysięcy indywidualnych adresów IP lub po prostu do tysięcy portów na tym samym adresie IP. Spędziłem trochę czasu zamieniając ulubiony serwer WWW Lee Hutchinsona nginx w śmiesznego potwora Lovecrafta z 10 000 głów i apetytem na zniszczenie.
Dla każdego routera użyłem ApacheBench do przetestowania pobierania jpeg z trzema różnymi rozmiarami plików (10K, 100K, i 1M) przy czterech różnych poziomach współbieżności (10, 100, 1 000, i 10 000 jednoczesnych klientów). To daje nam 12 testów w sumie, nie licząc naszego początkowego testu iperf, i warto zobaczyć je wszystkie jako rodzaj spektrum.
W większości aspektów, ten plik 10K jest większym wyzwaniem. Mały rozmiar pliku oznacza, że można dostarczyć o wiele więcej poszczególnych plików w każdej sekundzie, zanim nasyci się interfejs, co oznacza tworzenie i zrywanie o wiele więcej połączeń TCP, co jest obciążające dla procesora routera. Z drugiej strony, plik 1M oznacza, że masz gwarancję utrzymywania większej ilości połączeń otwartych na wyższych poziomach współbieżności. Warto zobaczyć, jak routery obsługiwać całe spektrum, ponieważ każdy poziom robi całkiem przyzwoitą pracę modelowania dość powszechne wyzwanie router może trzeba obsługiwać (pobieranie lub wysyłanie dużej liczby e-maili, obsługa peer-to-peer udostępnianie plików, lub ogólne przeglądanie stron internetowych z wielu użytkowników), jeśli podjęte do ekstremalnego poziomu.
Ultimately, skończyło się nie tylko trzeba dostroić nginx, ale jądro Linux sam, aby niezawodnie dostarczyć rodzaj przepustowości szukałem. Routery same w sobie są „stockowe” – nawet mój Homebrew Special nie był dostrajany – ale serwery testowe, Menhir i Monolith (każdy z 8-rdzeniowym procesorem AMD FX-8320, 32GB DDR3 RAM i Ubuntu Trusty OS załatanym na bieżąco) potrzebowały dość poważnego masażu, aby poradzić sobie z takim obciążeniem.
Przy takiej ilości szaleństwa chcesz się upewnić, do czego są zdolne twoje rzeczywiste serwery i sieć, zanim wyciągniesz jakiekolwiek wnioski na temat routerów, które umieścisz między nimi. Aby zacząć, najpierw przetestowałem Menhir sam na interfejsie localhost (bez żadnej sieci), a następnie przeprowadziłem testy między serwerami przez mój przełącznik sieciowy (Netgear ProSafe 16-portowy gigabitowy, w razie gdybyś się zastanawiał).
Wyniki z localhost nie mogły być lepsze – daleko, daleko wyższa przepustowość niż gigabitowa w każdym teście. W rzeczywistości musiałem ręcznie ograniczyć skalę osi Y wykresu, bo inaczej trudno byłoby w ogóle zobaczyć rzeczywiste testy. Bezpośredni test sieciowy nie był zły, ale ewidentnie zaczynamy osiągać pewne limity w górnej części. Nie jestem pewien, czy problemem jest sam przełącznik, czy też wbudowane interfejsy sieciowe w obu serwerach, ale coś nie do końca jest na rzeczy. Jest jednak wystarczająco dobry, aby z nim pracować. Czas wreszcie zaangażować routery.
Przygotujmy się do łomotu!
Byłem trochę zdenerwowany. Już czułem się bardzo przywiązany do mojego małego, domowego urządzenia – w końcu sam je zbudowałem. Wiedziałem, że z łatwością zdominuje starszego Buffalo, którego wygrzebałem z szuflady i Linksysa, który był dosłownie najtańszą rzeczą w Staples z gigabitowym interfejsem. Ale czy mógłby pokonać ten laserowo naprowadzany atomowy młot parowy Nighthawk? Myślałem, że tak, ale nie byłem pewien.
Kiedy testy pobierania zostały zakończone, nie było więcej pytań o Homebrew Special. Tak, może on pokonać Nighthawka… i odejść od niego ziewając po wszystkim. Z wyjątkiem jednego małego dip na 10K rozmiar pliku/10 równoczesnych połączeń (co stanowi wyzwanie dla procesora z absolutnym najbardziej made-and-broken połączeń), to wykonane niemal identycznie do bezpośredniego połączenia sieciowego sam.
The Nighthawk, nawiasem mówiąc, naprawdę jest wielki SOHO router mam wdrożone dość dużo. Jednakże, to spadł prawie natychmiast. Dla megabajtów pobierania 10 na raz, to było szyi i szyi. Z każdym więcej z wyzwaniem, wydajność zaczęła spadać gwałtownie.
The Linksys, nie jest zaskoczeniem, nie działa dobrze w ogóle. Nawet tak proste zadanie jak pobieranie 10 plików jednocześnie zmniejszyło jego przepustowość do prawie połowy tego, co pokazał naiwny test iperf. Od tego momentu było już tylko gorzej i nie udało się nawet ukończyć kilku testów. Na plus, Linksys robi dobrą robotę pokazując, że router naprawdę ma znaczenie.
Wreszcie, dzielny mały Buffalo zasługuje na jakieś shout-out. Pomimo, że kosztował mniej niż Linksys, gdy był nowy (osiem lat temu) i przeleżał w szufladzie biurka pięć lat, zszedł z przysłowiowego stołka barowego i pokonał Linksysa w połowie testów. Buffalo odniósł ten sukces pomimo interfejsu sieciowego, który był oceniany na jedną dziesiątą prędkości. To jest dopiero odwaga. Następnym razem, gdy ktoś weźmie tani szturchaniec na świeże-off-the-boat chińskich produktów, będę krzyczeć „Remember the Buffalo!”
Przed dojściem do jakichkolwiek wniosków, jednak, prędkości wysyłania muszą być brane pod uwagę.
Na szczęście nic tak naprawdę nie zmieniło się tutaj w relacjach pomiędzy routerami. Homebrew nadal wygląda tak, jakby go nawet nie było, prawie całkowicie dopasowując się do bezpośredniego połączenia sieciowego. Nighthawk nadal całkowicie zdominować Linksys, a scrappy mały Buffalo jest nadal robi swoje przestarzałe najlepiej. W wartościach bezwzględnych można zauważyć, że zarówno Nighthawk jak i Linksys radzą sobie nieco lepiej przy wysyłaniu niż przy pobieraniu, ale nie ma co się rozpisywać. Ta dolna linia pozostaje taka sama: Homebrew Special nadąża za siecią (co dziwne, nawet robi lepiej niż bezpośrednie połączenie w teście 10,000 połączeń/10K plików), Nighthawk jest wyraźnie wart swojej ceny w porównaniu do Linksysa, a Linksys jest, cóż, niedrogi.
Z tym ostatnim wykresem, mamy nowy zestaw wyników, chociaż – łososiowe paski, które są dość stabilne na nieco ponad 200mbps na całym wykresie. To jest Homebrew Special napinający swoje kryptograficzne mięśnie. Ma on uruchomiony serwer OpenVPN. Dla tego testu, serwer po stronie WAN, Menhir, jest podłączony do wbudowanego serwera OpenVPN routera. Ruch dla Homebrew Special po stronie LAN jest kierowany przez tunel VPN, więc Menhir trafia na adres IP Monolith (serwera po stronie LAN) za pomocą imponującego 2048-bitowego szyfrowania opartego na SSL. Biorąc pod uwagę, że w mojej okolicy nikt jeszcze nie oferuje połączeń internetowych powyżej 200mbps, sprawia to, że mój wewnętrzny krypto-nerd tańczy z radości. Mógłbym dosłownie zaszyfrować każdy pojedynczy bajt mojego ruchu internetowego, w obu kierunkach, bez kary za wydajność.
Jedno szybkie zastrzeżenie
Jak imponujący jest mój mały Homebrew Special, brakuje mu jednej rzeczy, którą oferują wszyscy trzej inni uczestnicy konkursu: dostępu bezprzewodowego. Mógłbym dodać kartę bezprzewodową do Homebrew i sprawić, że będzie obsługiwał sieć bezprzewodową, ale obecnie nie mam takich planów. Jestem aż za dobrze zaznajomiony z dostępnymi kartami bezprzewodowymi dla komputerów PC i wszystkie one śmierdzą jak lód. Nawet tanie urządzenia jak Linksys czy Buffalo dałyby czadu jeśli chodzi o zasięg i zasięg sieci bezprzewodowej, a Nighthawk nie jest nawet w tej samej lidze. To naprawdę jest laserowo prowadzony atomowy młot parowy, jeśli chodzi o zasięg sieci bezprzewodowej, zasięg i jednoczesną łączność. (Mam jeden z nich obejmujący 50+ użytkowników w obiekcie o powierzchni 53 000 stóp kwadratowych od rogu do rogu właśnie teraz.)
Z tym, że nic nie powstrzymuje Cię przed użyciem oddzielnego WAP (Wireless Access Point) ściśle do obsługi obowiązków Wi-Fi. W moim domu jest to para WAP-ów Ubiquiti „hockey puck”, po jednym na każde piętro domu. Są one nieco bardziej pracochłonne w zarządzaniu niż Nighthawk, ale ich para kosztuje o połowę mniej. Są to dość standardowe urządzenia linuksowe, do których można się bezpośrednio podłączyć przez SSH i które są zarządzane przez całkiem fajną, małą aplikację webową, którą można uruchomić… zgadłeś, bezpośrednio na Homebrew Special. (Migracja serwera Ubiquiti z mojej stacji roboczej do Homebrew Special będzie jednym z moich pierwszych zadań po tym artykule, a następnie będę promował go do aktywnego wykorzystania przed moją domową siecią biurową.)
W imię dokładności, powinniśmy zauważyć jedno wspólne ograniczenie, coś, co dotyczy wszystkich konsumenckich urządzeń sieciowych, którymi kiedykolwiek zarządzałem: chęć ponownego uruchomienia po prawie każdej zmianie. Niektóre z tych restartów trwa dobrze ponad minutę. Nie mam bladego pojęcia dlaczego, ale bez względu na przyczynę, Homebrew Special nie jest dotknięty tym przemysłowym standardem. Wprowadzasz zmianę, stosujesz ją i gotowe. A jeśli będziesz musiał zrestartować Speciala? Jest znowu gotowy w 12 sekund. (Zmierzyłem to licząc zrzucone pingi.)
Więc jeśli te liczby cię przekonały i chcesz zbudować swój własny Homebrew Special, wszystko czego potrzebujesz to komputer z dwoma fizycznymi interfejsami sieciowymi. Może to być specjalny mini PC, taki jak ten, którego użyłem tutaj, lub może to być dowolne stare pudełko, które masz w pobliżu i do którego możesz wcisnąć dwie karty sieciowe. Nie pozwól, aby pierwszy zrzut ekranu zastraszyć. Budowanie własnych naprawdę szybki router nie jest tak trudne, aby dostać się do powiedzenia. A jeśli jesteś clamoring dla mapy drogowej, w rzeczywistości, będziemy nakreślić proces całą drogę od „tutaj jest zwykły komputer” do „tutaj jest router, a tu jest, jak skonfigurować go” wkrótce.
Jim Salter (@jrssnet) jest autorem, mówca publiczny, właściciel małej firmy, najemnik sysadmin, i ojciec trzech-niekoniecznie w tej kolejności. Po raz pierwszy poznał smak open source poprzez uruchomienie Apache na swoim własnym serwerze FreeBSD 3.1 w 1999 roku i od tego czasu jest zagorzałym zwolennikiem FOSS. Stworzył również i utrzymuje http://freebsdwiki.net i http://ubuntuwiki.net.
.