E-post: salg@linmag.no



7.2.2012 - 20:34
 • Nyheter
 • Om Linux
 • Linuxskolen
 • Spørrespalte
 • Vitsespalte
 • LINUXmagasinet
 • Spill
 • WEBSHOP
 • Diskusjonsforum
 • Linker
 • For annonsører
 • English
 • Om oss
developer.ez.no
www.online4u.no

0

Iptables NAT


Jeg har satt opp en Linux boks som en ruter mellom to nettverk og har et problem
vedrørende SNAT. Forøvrig fungerer alt perfekt. Nettet på innsiden (eth1: 192.168.1.1/24)
får kommunikasjon med nettet på utsiden(eth0), og fra utsiden kan jeg aksessere maskiner
på innsiden med PREROUTING. På innsiden har jeg en database, og når jeg aksesserer denne
fra utsiden på port 1521, initieres oppkoplingen ved at basen svarer tilbake.
Dette gjør den med sin egen ipadresse(192.168.1.13). Her er problemet. Ruteren som er satt
opp til å kjøre SNAT skulle maske denne internadressen bort når responsen sendes ut på
eth0 og istedet sette inn ruterens ipadresse som er 159.162.41.68

Av det jeg kan se, "source natter" ikke oppsettet mitt. Jeg har forsøkt både RedHat 8.0
9.0 og Fedora.

Oppsettet jeg kjører ser slik ut:

#!/bin/sh

# Load the nat module
/sbin/modprobe iptable_nat

# Ip forward enable
echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush all existing chains on the nat table
/sbin/iptables -t nat -F

# Set all of the Polisies on the filter table to ACCEPT
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT

# Ruter har fast ipadresse 159.162.41.68
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 159.162.41.68
# Denne er også forsøkt uten å gi resultat
#/sbin/iptables -A POSTROUTING -t nat -o eth0 -s 192.168.1.0/24 -d 0/0 -j MASQUERADE

/sbin/iptables -A FORWARD -t filter -i eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -t filter -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Routing tabeller:
#
# Ruter all trafikk paa port 1521 til maskin 192.168.1.13, Databaseserver
/sbin/iptables -t nat -A PREROUTING -p tcp -d 159.162.41.68 --dport 1521 -j DNAT --to 192.168.1.13

Håper dere kan hjelpe meg.
Vennlig hilsen Tom H.

Hei Tom,

Tja, i utgangspunktet skulle det være nok å si følgende (eth0 er mot internett, eth1 er mot lokalnettet):

# Standard Masquerading.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Videresend DB requests til intern server:
iptables -A PREROUTING -t nat -p tcp -d 159.162.41.68 --dport 1521 -j DNAT --to 192.168.1.13:1521
iptables -A FORWARD -p tcp -d 192.168.1.13 --dport 1521 -o eth1 -j ACCEPT

Om du opplever problem med iptables anbefaler jeg deg å slå på logging av alle reglene og følge med disse når forbindelsen din feiler. Om det er iptables som er satt opp feil, vil du kunne se hvilke regler som er for "grådige".
Se forøvring http://www.netfilter.org, og http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO.html http://www.tldp.org/HOWTO/Masquerading-Simple-HOWTO/index.html for mer informasjon om konfigurasjon av iptables og NAT.

Lykke til!


Kommentarliste

Det finnes ingen kommentarer

0







0 0