Portál AbcLinuxu, 24. října 2025 13:02
INET_ADR=`ifconfig enp3s0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }'`
echo $INET_ADR
#enp3s0 - venkovni sit enx0050b608da65
#enp2s0 - vnitrni sit
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A POSTROUTING -t nat -o enp3s0 -j SNAT --to $INET_ADR
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A FORWARD -i tap0 -j ACCEPT
iptables -A POSTROUTING -t nat -o tap0 -j SNAT --to $INET_ADR
iptables -A INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i enp3s0 -p icmp -j ACCEPT
iptables -A INPUT -i enp2s0 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 65022 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 22 -j ACCEPT
#minecraft
iptables -A INPUT -i enp3s0 -p tcp --dport 25565 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 25560 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 25550 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 25555 -j ACCEPT
iptables -A INPUT -i enp3s0 -p tcp --dport 25500 -j ACCEPT
iptables -A FORWARD -i enp3s0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i enp2s0 -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
Vše mi funguje jak potřebuju, teď jsem ale narazil na nový požadavek ze strany manželky - blokovat určitá zařízení. Snažil jsem se to vyřešit pomocí řádku:
iptables -A INPUT -i enp2s0 -m mac --mac-source mac_adresa -j REJECTkterý jsem strčil před #minecraft. Bohužel po reloadu script se nic nestalo a zařízení si komunikuje vesele dál. Zkusil jsem na jiném stroji použít ufw, povolil jsem všem přístup na port 80 a pak zkusil zařízení s určitou mac přístup zakázat. Zase se nic nestalo
. Jde to vůbec řešit nějak operativně abych nemusel vždy reloadnout celý script pro firewall? Kdyby náhodou někdo něco stahoval, asi se mu stahování přeruší.
Do budoucna plánuji takto blokovat přístup pro určitá zařízení podle složitějších podmínek (denní doba, přístup jen v určitém časovém období atd.), proto bych potřeboval řešit nastavování pravidel bez restartu celého firewallu. Jde to? Jak? Možná jsem práci s iptables pochopil úplně blbě
, googloval jsem jako šílený, ale žádné příklady mi nefungovaly
.
.
. Do jiné sítě je dát mohu, ale tím nevyřeším zakazování přístupu jednotlivě a na určitou dobu. Nějak to s IP tables jít musí, jen nevím jak
.
. Určitě nejsem sám, kdo něco takového řešil, jen se googlu asi špatně ptám
.
Jak říkám pomocí MAC adres to nebude fungovat pokud tam kde to nastavuješ není i ta wifi - jak paket projde přes router/switch tak bude mít MAC toho routeru/switchu.
Citace ze včerejšího komentáře zazatele:
Na serveru běží DHCP server, který přiděluje IP adresy všem zařízením, včetně těch, která jsou na WiFi. Když si vypíšu z logu dhcp serveru přidělené adresy, vidím je včetně správných MAC adres daných zařízení.
Takže tam asi žádný router mezi nimi není (switch by MAC adresu nezměnil - pomineme-li, že některé firmy pro zmatení zákazníků routerům říkají "L3 switch").
INPUT i FORWARD, bych asi zkusil místo REJECT použít spíš DROP. Ono není moc jasné, jak přesně by se v tomhle případě (v kombinaci s podmínkou, která testuje linkovou hlavičku) ten REJECT vlastně měl chovat (to bych se musel podívat do zdrojáků a tolik času se mi nad tím trávit nechce).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.