Portál AbcLinuxu, 11. května 2024 04:15
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_forwardVš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 .
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.