Portál AbcLinuxu, 11. května 2025 23:57
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 " }' | shA 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.