Portál AbcLinuxu, 10. května 2025 09:34
#!/bin/sh iptables -X iptables --flush iptables -t nat --flush iptables -t mangle --flush iptables -A POSTROUTING -t nat -o eth0 -s 192.168.201.0/24 -j MASQUERADE iptables -A FORWARD -i eth1 -s 192.168.201.0/24 -j ACCEPT iptables -A POSTROUTING -t nat -o eth0 -s 192.168.202.0/24 -j MASQUERADE iptables -A FORWARD -i eth2 -s 192.168.202.0/24 -j ACCEPT iptables -A POSTROUTING -t nat -o eth0 -s 192.168.203.0/24 -j MASQUERADE iptables -A FORWARD -i eth3 -s 192.168.203.0/24 -j ACCEPT
Řešení dotazu:
cat /proc/sys/net/ipv4/ip_forward
pripadne ho nastav na 1 napr. pomoci sysctl. V souboru
/etc/sysctl.conf nastav
net.ipv4.ip_forward = 1
a nacti konfiguraci pomoci
sysctl -p
Tedka k firewallu:
K maskarade do Internetu ti staci:
iptables -A FORWARD -o eth0 -j ACCEPT # co jde na net, je vsechno povoleno
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # co uz je ve stavu navazano, je povoleno. Inicializace musela jit z vnitrnich siti
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE # co jde na net, je masqueradovano
Pristup z venku na webovy server, ktery lezi nekde ve vnitrni siti, je pomoci:
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d INTERNI_IP_WEB_SERVERU -j ACCEPT # povoli forwarding k web.serveru
iptables -t nat PREROUTING -i eth0 -p tcp --dport 80 -d VEREJNA_ADRESA_ROUTERU -j DNAT --to INTERNI_IP_WEB_SERVERU # jeste pred routingem ohne pakety spravnym smerem
Pokud chces mit povoleny provoz mezi vnitrnimi sitemi
iptables -A FORWARD -i ! eth0 -o ! eth0 -j ACCEPT # nejsem si jisty, jestli bude fungovat, jinak povol vsechny kombinace internich interface
Taky se hodi mit pravidla pro to, aby jsi se jeste nekdy dostal na ten router :)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # povoleni ssh odevsud
iptables -A OUTPUT -j ACCEPT # vse odchozi je povoleno - pozor neplest s FORWARDEM
Na konec je dobre zakazat INPUT a FORWARD:
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
Nebo pomoci defaultnich pravidel
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Napsal jsem to v rychlosti, ale snad by to mohlo pomoct. Hlavne pamatuj i na INPUT pravidla - to co prichazi primo pro dany router.
iptables -A INPUT -j DROP iptables -A FORWARD -j DROPinternet mi prestane fungovat... v pripade zadania na zaciatok scriptu mi odstrihne aj ssh, ak nakoniec, ssh funguje, no internet nie...
nejdrive zapni routovani mezi sitovkama. net.ipv4.ip_forward=1, ale v Debianu nevim kde se to zadava nahraj defaul politiky, pro tebe nejjednodusi zakazat vsechno v venci, zevnitr ven vsechno povolit. iptables -P INPUT DROP iptables -I FORWARD DROP iptables -P OUTPUT ACCEPT povol vsechno z lokalnich siti na server iptables -A INPUT -p ALL ! -i eth0 -j ACCEPT povol si routing ven, i taky treba i mezi sitema, ale na to uz prijdes jak iptables -A FORWARD -o eth0 -j ACCEPT je dobre povolit i navazane spojeni iptables -A FORWARD -i eth0 -m state ESTABLISHED, RELATED -j ACCEPT a smer ven maskuj iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE povol z venci pouze WWW iptables - A INPUT -i eth0 -p TCP --dport 80 -j ACCEPT a povol navazane spojeni iptables -A IPNUT -i eth0 -m state ESTABLISHED, RELATED -j ACCEPT melo by to vyhovovat tomu co jsi zadal, ale je to porad odrene na kost
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.