Portál AbcLinuxu, 3. prosince 2025 21:44
#!/bin/sh WAN='10.222.1.17' WIFI='192.168.1.1' VOIP='192.168.0.2' NETTOP='192.168.0.3' IPBOX='192.168.0.4' HDBOX='192.168.0.5' IPT='/sbin/iptables' $IPT -N DOWNLOAD $IPT -A INPUT -j DOWNLOAD $IPT -N UPLOAD $IPT -A OUTPUT -j UPLOAD #WAN-Server $IPT -A DOWNLOAD -d $WAN $IPT -A UPLOAD -s $WAN #WIFI-Server $IPT -A DOWNLOAD -d $WIFI $IPT -A UPLOAD -s $WIFI #LAN-Server $IPT -A DOWNLOAD -d $LAN $IPT -A UPLOAD -s $LAN #VOIP $IPT -A DOWNLOAD -d $VOIP $IPT -A UPLOAD -s $VOIP #NETTOP $IPT -A DOWNLOAD -d $NETTOP $IPT -A UPLOAD -s $NETTOP #IPBOX $IPT -A DOWNLOAD -d $IPBOX $IPT -A UPLOAD -s $IPBOX #HDBOX $IPT -A DOWNLOAD -d $HDBOX $IPT -A UPLOAD -s $HDBOX
iptables -nvL <retezec>. Takže pokud chcete počítat data pro každou IP adresu zvlášť, použijte něco na tento způsob:
iptables -N IP1_accounting iptables -N IP2_accounting iptables -A FORWARD -s 192.168.1.2 -j IP1_accounting iptables -A FORWARD -d 192.168.1.2 -j IP1_accounting iptables -A FORWARD -s 192.168.1.3 -j IP2_accounting iptables -A FORWARD -d 192.168.1.3 -j IP2_accounting …
-A použít -I a odbočku do účtovacích řetězců začlenit na vhodné místo.
iptables -nvL
Chain INPUT (policy DROP 309 packets, 98126 bytes)
pkts bytes target prot opt in out source destination
1 29 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
21 3990 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0
21 3990 ACCEPT all -- ath0 * 0.0.0.0/0 0.0.0.0/0
70 10688 ACCEPT udp -- eth1 * 0.0.0.0/0 10.222.1.17 udp spt:53 dpts:1025:65535
162 11592 ACCEPT tcp -- eth1 * 0.0.0.0/0 10.222.1.17 tcp dpt:22000
0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 10.222.1.17 tcp dpt:8088
0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 10.222.1.17 tcp dpt:8080
0 0 ACCEPT icmp -- eth1 * 0.0.0.0/0 0.0.0.0/0 icmp !type 8
77 7692 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:0
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:0
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:0
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:0
33 4622 all -- * * 0.0.0.0/0 0.0.0.0/0 account: network/netmask: 10.222.1.17/255.255.255.255 name: WAN short-listing
0 0 all -- * * 0.0.0.0/0 0.0.0.0/0 account: network/netmask: 192.168.0.0/255.255.255.0 name: LAN short-listing
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- ath0 eth0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ath0 eth1 0.0.0.0/0 0.0.0.0/0
555 94133 ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 ath0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth1 ath0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
545 32965 ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 180 ACCEPT tcp -- eth1 * 0.0.0.0/0 192.168.0.4 tcp dpt:80
0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 192.168.0.4 tcp dpt:8080
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:0
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:0
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:0
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:0
0 0 all -- * * 0.0.0.0/0 0.0.0.0/0 account: network/netmask: 10.222.1.17/255.255.255.255 name: WAN short-listing
0 0 all -- * * 0.0.0.0/0 0.0.0.0/0 account: network/netmask: 192.168.0.0/255.255.255.0 name: LAN short-listing
Chain OUTPUT (policy ACCEPT 304 packets, 71293 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:0
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:0
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:0
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:0
254 62520 all -- * * 0.0.0.0/0 0.0.0.0/0 account: network/netmask: 10.222.1.17/255.255.255.255 name: WAN short-listing
21 3990 all -- * * 0.0.0.0/0 0.0.0.0/0 account: network/netmask: 192.168.0.0/255.255.255.0 name: LAN short-listing
iptables -A použijete iptables -I <pořadí>.
#! /bin/sh
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
WAN_IP="10.222.1.17"
IPTABLES="/sbin/iptables"
LAN="eth0"
WIFI="ath0"
WAN="eth1"
set -e
case "$1" in
start)
echo -n "Nahravam pravidla pro iptables (firewall,masquerade)"
# =============================================================
# Paranoia zakladni politka
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# rp_filter na zamezeni IP spoofovani
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f; done
# Ochrana pred Dos utokem
echo 1 >/proc/sys/net/ipv4/tcp_syncookies
# Flush all old
$IPTABLES -F
$IPTABLES -t nat -F
# =============================================================
# Loopback a interni interface
# =============================================================
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i $LAN -j ACCEPT
$IPTABLES -A INPUT -i $WIFI -j ACCEPT
# =============================================================
# Povoleni portu na WAN
# =============================================================
$IPTABLES -A INPUT -i $WAN -p UDP -s 0/0 --sport 53 -d $WAN_IP --dport 1025: -j ACCEPT #DNS
$IPTABLES -A INPUT -i $WAN -p TCP -s 0/0 -d $WAN_IP --dport 22000 -j ACCEPT #SSH
# =============================================================
# Presmerovavani portu
# =============================================================
#Provede presmerovani portu 80 na port 8088
$IPTABLES -A INPUT -i $WAN -p TCP -s 0/0 -d $WAN_IP --dport 8088 -j ACCEPT #WWW IPBOX
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 8088 -j DNAT --to 192.168.0.4:80 #WWW IPBOX Nastaveni presmerovani
$IPTABLES -A FORWARD -p tcp -i $WAN -d 192.168.0.4 --dport 80 -j ACCEPT #WWW IPBOX Povoleni presmerovani
#Provede presmerovani portu 8080 na port 8088
$IPTABLES -A INPUT -i $WAN -p TCP -s 0/0 -d $WAN_IP --dport 8080 -j ACCEPT #WWW IPBOX NewCS
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 8080 -j DNAT --to 192.168.0.4:8080 #WWW IPBOX NewCS Nastaveni presmerovani
$IPTABLES -A FORWARD -p tcp -i $WAN -d 192.168.0.4 --dport 8080 -j ACCEPT #WWW IPBOX NewCS Povoleni presmerovani
# =============================================================
# Konec presmerovavani portu
# =============================================================
# ICMP (Povoleni PINGu typ 8 echo , typ 11 time exeeded , typ 0 echo reply , typ destination unreacheble )
$IPTABLES -A INPUT -i $WAN -p ICMP -s 0/0 ! --icmp-type 8 -j ACCEPT
#$IPTABLES -A INPUT -i $WAN -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
# All packets that do not request a connection can pass
$IPTABLES -A INPUT -i $WAN -p TCP ! --syn -j ACCEPT # tcp flags:!0x17/0x02
# Extremni paranoia
$IPTABLES -A INPUT -p TCP --dport 0 -j DROP
$IPTABLES -A INPUT -p UDP --dport 0 -j DROP
$IPTABLES -A INPUT -p TCP --sport 0 -j DROP
$IPTABLES -A INPUT -p UDP --sport 0 -j DROP
$IPTABLES -A FORWARD -p TCP --dport 0 -j DROP
$IPTABLES -A FORWARD -p UDP --dport 0 -j DROP
$IPTABLES -A FORWARD -p TCP --sport 0 -j DROP
$IPTABLES -A FORWARD -p UDP --sport 0 -j DROP
$IPTABLES -A OUTPUT -p TCP --dport 0 -j DROP
$IPTABLES -A OUTPUT -p UDP --dport 0 -j DROP
$IPTABLES -A OUTPUT -p TCP --sport 0 -j DROP
$IPTABLES -A OUTPUT -p UDP --sport 0 -j DROP
# ================================================================
# Maskarada
# ================================================================
# Moduly pro ftp prenosy
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Zavedeme moduly pro nestandardni cile
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
# Presmerovani mezi sitovkama
$IPTABLES -I FORWARD -i $WAN -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT # mezi inetem a siti
$IPTABLES -I FORWARD -i $WAN -o $WIFI -m state --state ESTABLISHED,RELATED -j ACCEPT # mezi inetem a wifi
$IPTABLES -I FORWARD -i $LAN -o $WIFI -m state --state ESTABLISHED,RELATED -j ACCEPT # mezi siti a wifi
$IPTABLES -I FORWARD -i $LAN -o $WAN -j ACCEPT
$IPTABLES -I FORWARD -i $WIFI -o $WAN -j ACCEPT
$IPTABLES -I FORWARD -i $WIFI -o $LAN -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE
# Forwarding on
echo "1" > /proc/sys/net/ipv4/ip_forward
# ================================================================
echo "."
;;
stop)
echo -n "Vyprazdneni iptables"
# ================================================================
# Forwarding off
#echo "0" > /proc/sys/net/ipv4/ip_forward
# Povoleni vseho
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
# Vynulovani pravidel
$IPTABLES -F
$IPTABLES -t nat -F
# ================================================================
echo "."
;;
esac
exit 0
# iptables -A FORWARD -m account --aaddr 10.222.1.17/24 --aname WAN --ashort # iptables -A INPUT -m account --aaddr 10.222.1.17/24 --aname WAN --ashort # iptables -A OUTPUT -m account --aaddr 10.222.1.17/24 --aname WAN --ashortale jak jsem uz psal , data tecou i jinudy .Predchozi politika firewallu .
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.