Portál AbcLinuxu, 22. prosince 2025 16:07
iptables -A INPUT -i eth0 -p TCP -s 0/0 -d 10.222.1.17 --dport 8088 -j ACCEPT iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8088 -j DNAT --to 192.168.0.4:80 iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.4 --dport 80 -j ACCEPTv cyklech bych to videl takhle
let a=0;
for serverport in ${seznamserverportu[@]} ; do
iptables -A INPUT -i eth0 -p TCP -s 0/0 -d 10.222.1.17 --dport $serverport -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport $serverport -j DNAT --to 192.168.0.4:80
iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.4 --dport 80 -j ACCEPT
let a=$a+1;
done;
dale mi pak zbyva vnitrni ip adresa IP a port na kterem mi sluzba bezi .
Da se v jednom cyklu zapsat tri promenne a ne jen jedna .
A jak by mel mel vypada txt zaznam serveru ve kterem budou tri promene .
Řešení dotazu:
cat seznam.txt | awk '{print "iptables -A INPUT -i " $2 " -p TCP -s 0/0 -d " $4 " --dport " $6 " -j ACCEPT " }' | sh
cat seznam.txt | awk '{print "iptables -t nat -A PREROUTING -i " $2 " -p TCP --dport " $6 " -j DNAT --to " $8 ":" $10 }' | sh
cat seznam.txt | awk '{print "iptables -A FORWARD -p TCP -i " $2 " -d " $8 " --dport " $10 " -j ACCEPT " }' | sh
A zde je formatovani seznamu , ktery se cte po radkach .
Vypis prvniho radku .
1 eth0 wan_ip 10.222.1.17 wan_port 8088 lan_ip 192.168.0.4 lan_portCele to funguje perfektne .
#!/bin/sh
( sed '
s/#.*$//
s/^ *//
s/ *$//
/^$/d' | while read host port; do
iptables ... $host ... $port ...
done ) <<END
# vnoreny konfiguracni soubor
# komentar
1.2.3.4 22
2.3.4.5 80
# dalsi komentar
192.168.0.0/24 8080
# konec
END
# pokracovani shell skriptu
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.