2024. április 23., kedd

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

DIY x86 router – szabadulj fel!

A routerem története: mikor jutott először eszembe, miért, hogy és miből, hogyan valósítottam meg.

[ ÚJ TESZT ]

A szörny: IPTABLES

Frissítve: 2018.01.06

!!Ha PPPoE WAN kapcsolatunk van, akkor innentől mindenhol a WAN interfész valós, fizikai neve helyett a ppp0 virtuális interfészt használjuk!!

Az iptables a legelterjedtebb tűzfal, de nem az egyetlen. A legtöbb kommersz router és router disztró is ezt használja.

Miért kell?
Az iptables nem csak szűri a forgalmat, így véd, hanem össze is köti a WAN és LAN interfészeket, azaz valódi routerré válik a gépünk, hiszen jelen állapotban csak egy gép, ami lóg a szubneten és az interneten is. De az internethez nem férnek hozzá a kliensgépek és fordítva sem.

Ez megint az a téma, ami külön megérne egy teljesértékű cikket, és talán lesz is, de épp ezért most csak a bare minimumot taglalom. Valós védelmet nem fog ellátni, viszont NAT-ol és forwardol. Azaz lesz net és a szolgáltatások működni fognak, tudunk szervert futtatni, stb.

Konfiguráció
Menjünk az iptables konfig helyére, és nullázuk a konfigot:
cd /etc/iptables
iptables-restore < empty.rules

Majd szerkesszük meg a saját konfigunkat. Most fontos (!!) a név (!!):
nano iptables.rules

A !! .. !!-ot értelemszerűen el kell hagyni és a helyes infót megadni. Pl. !!WAN!! helyett eno1

Ha PPPoE WAN-unk van, akkor kelleni fog az mss-pmtu clamp, különben sajnos tapasztalataim szerint teljesen megbízhatatlan fragmentáció lesz. Ezt megelőzendő:

*mangle
:PREROUTING ACCEPT [341:238707]
:INPUT ACCEPT [337:238444]
:FORWARD ACCEPT [4:263]
:OUTPUT ACCEPT [348:235698]
:POSTROUTING ACCEPT [352:235961]

# clamp mss to pmtu – necessary for pppoe fix
-A FORWARD -o !!WAN!! -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT

Ellenkező esetben (DHCP WAN) ezt kihagyhatjuk.

Ami mindenképp kelleni fog, az a MASQUERADE szabály, amely segítségével NAT-oljuk a bejövő kapcsolatot és a szubnetünket:

*nat
:PREROUTING ACCEPT [42:4541]
:INPUT ACCEPT [21:1310]
:OUTPUT ACCEPT [1084:75113]
:POSTROUTING ACCEPT [104:6978]

# nat / masquerade
-A POSTROUTING -o !!WAN!! -j MASQUERADE
COMMIT

Kelleni fog még 2 FORWARD rule, mellyel engedélyezzük a meglévő és related kapcsolatokat, illetve a kimenő forgalmat irányítjuk:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [7539:1099311]

# LANról jöhet minden
-A INPUT -i lan1 -j ACCEPT

# alap accept ruleok - ICMP, loopback, traceroute, established
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT

# traceroute rejections
-A INPUT -p udp -m udp --dport 33434:33523 -j REJECT --reject-with icmp-port-unreachable

# related,established forward rule
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# LAN -> WAN
-A FORWARD -i !!LAN!! -o !!WAN!! -j ACCEPT

Elvileg kész. Mentés és:
systemctl enable iptables
iptables-restore < iptables.rules

Ha minden jól ment, akkor most bármilyen csatlakoztatott kliensgépen már pingelni kell tudnunk:
ping 8.8.8.8
ping google.com

Óvatosan megpróbálhatjuk a böngészőt is, működnie kell.

Port forwarding
Ha szeretnénk szervernek is használni a router gépet, akkor szükségünk lehet a portok forwardolására. Ezt a NAT tábla PREROUTING chainjében tehetjük meg, kiegészítve az előző fájlban a NAT táblát és másik gépre forwardolás esetén a filter táblát is:

*nat
:PREROUTING ACCEPT [42:4541]
:INPUT ACCEPT [21:1310]
:OUTPUT ACCEPT [1084:75113]
:POSTROUTING ACCEPT [104:6978]

# sima forward erre a gepre
-A PREROUTING -p tcp -i !!WAN!! --dport 80 -j DNAT --to 10.0.0.1
# NAT loopback erre a gepre (lanrol is hasznalhatok a publik cimet/domaint)
-A PREROUTING -p tcp -d !!WAN IP/DOMAIN!! --dport 80 -j DNAT --to 10.0.0.1
# forward egy masik gepre
-A PREROUTING -p tcp -i !!WAN!! --dport !!PORT!! -j DNAT --to 10.0.0.!!LOCAL IP!!:!!PORT!!

# nat / masquerade
-A POSTROUTING -o !!WAN!! -j MASQUERADE
COMMIT


*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7539:1099311]

# nat forward + keep connection
-A FORWARD -p tcp -d !!LOCAL IP!! --dport !!PORT!! -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i !!LAN!! -o !!WAN!! -j ACCEPT
COMMIT

Elvileg készen vagyunk és a port át lett irányítva a megfelelő helyre.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

  • TP-Link WR741ND újraélesztése

    Avagy hogyan kell a különböző firmware-ek csereberéjével téglásított routert visszahozni az életbe?

  • Mercusys MW325R router

    A könnyű használhatóság és a szerény költségvetés miatt esett a választásom erre a filléres Wi-Fi routerre.

  • DIY x86 gateway v2

    Két évvel ezelőtt íródott bejegyzésem folytatása, melyben lényegében ugyanazt a felépítést (router, tűzfal, gateway, VPN-szerver stb.) próbálom bemutatni egy más absztrakciós szintről.

Előzmények

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.