Portál AbcLinuxu, 10. května 2025 05:51
klient (předem neznámá IP) -> server_A (70.70.70.70) -> cilovy_server_B (90.90.90.90) server_A - eth0: 70.70.70.70 server_A - eth1: 80.80.80.80 --- PREROUTING klientska_IP -> 70.70.70.70 DNAT klientska_IP -> 90.90.90.90 eth0 FORWARD POSTROUTING klientska_IP -> 90.90.90.90 SNAT 80.80.80.80 -> 90.90.90.90 eth1 --- PREROUTING 90.90.90.90 -> 80.80.80.80 DNAT 90.90.90.90 -> klientska_IP eth1 FORWARD POSTROUTING 90.90.90.90 -> klientska_IP SNAT 70.70.70.70 -> klientska_IP eth0 ---Mám nástřel řešení, ale není to správně:
iptables -t nat -A PREROUTING -i eth0 -d 70.70.70.70 -p tcp --dport 4444 -j DNAT --to-destination 90.90.90.90:3389 iptables -A FORWARD -i eth0 -p tcp --dport 3389 -o eth1 -d 90.90.90.90 -j ACCEPT iptables -t nat -A POSTROUTING -o eth1 -d 90.90.90.90 -j MASQUERADEAž po toto místo si myslím, že by to mohlo fungovat. Otázkou je, jak zajistit, aby se správně namapovala původní adresa klienta.
# iptables -t nat -A PREROUTING -i eth1 -p tcp -s 90.90.90.90 j MASQUERADE # tímto krokem si nejsem jistý, tady potřebuju dostat zpět adresu klienta iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -SNAT --to-destination 70.70.70.70Můžete mi s tím pomoct? Díky.
Řešení dotazu:
Skrytí za natPozor, pokud je to z důvodu bezpečnosti nebo anonymity, NAT ti nepomůže, Linux bude vesele přeposílat pakety z jedné strany na druhou. V takovém případě je NAT zbytečný (pokud současně neřešíš, že ti došly IP adresy) a chceš použít firewall. Navíc je potřeba udělat echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore aby to neleakovalo adresy zevnitř které mají zůstat skryté a možná některá další nastavení, o kterých nevím.
aby to neleakovalo adresy zevnitř které mají zůstat skryté
Tohle už by skoro šlo kvalifikovat jako "šíření poplašné zprávy". Co takhle aspoň napsat, že se to týká výhradně adres toho samotného počítače, který dělá ten NAT (tj. ne až tak moc "zevnitř")?
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 3389 -j DNAT --to 90.90.90.90:3389 iptables -A FORWARD -i eth0 -p tcp --dport 3389 -d 90.90.90.90 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Vzhledem k tomu, že mám všechno dropSi zkus zvenku ten arping, nezkoušel jsem to, ale čekal bych, že to pojede o vrstvu pod tím. Btw. jestli je tohle kompletní politika, tak nic moc, určitě chceš povolit třeba ICMP na tom venkovním interface.
Co takhle aspoň napsat, že se to týká výhradně adres toho samotného počítače, který dělá ten NAT (tj. ne až tak moc "zevnitř")?Psal jsem jako jaký důvod jsem to vyhodnotil a z toho jsem odvodil, že nechce, aby se vědělo ani o tom, že tam vůbec nějaká další síť je. Pokud neplatí podmínka uvozená slovem "pokud", není třeba se čertit…
sysctl -w net.ipv4.ip_forward=1 # nebo : echo 1 > /proc/sys/net/ipv4/ip_forwarda pro trvalé uložení :
/etc/sysctl.conf net.ipv4.ip_forward = 11. varianta : nastavení NAT 1:1
iptables -t nat -A PREROUTING -i eth0 -d 70.70.70.70 -j DNAT --to-destination 90.90.90.90 iptables -t nat -A POSTROUTING -o eth0 -s 90.90.90.90 -j SNAT --to-source 70.70.70.702. varianta : nastavení NAT + port forwarde portu 80 a 443 :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 90.90.90.90:80 iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j DNAT --to 90.90.90.90:443
iptables -t nat -A POSTROUTING -o eth1 -d 90.90.90.90 -j MASQUERADEKdyž už chceš specifikovat adresu klienta a natovat jen tu, tak (uvádíš odchozí iface - ten vystrčený do netu):
iptables -t nat -A POSTROUTING -o eth0 -s 90.90.90.90 -j MASQUERADEZdar Max
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.