allen traffic von ip:port auf eine andere ip:port leiten

tassilo

Stammuser
moin moin

habe einen rechner hier stehen mit einer menge interfaces und auf jedem interface ist min 1 ip gebunden. mit einigen interfaces/ips steht der rechner auch im grossen weiten internet.
was ich nun tun will ist z.b. einen mailserver oder dns server dahinter zu betreiben.
gedanke alles was an EXTERNEIP:port geht wird an INTERNEIP:port geschickt und vice versa... (ähnlich der portweiterleitung auf einer fritzbox).
also z.b. vom eth4 (das ganze 6 ips hat (eth4, eth4:0, eth4.1…) das auf eth4:5 die 1.2.3.4 hat alles von port 25 auf die 10.10.10.1 zu schicken und alles was von der 10.10.10.10 auf port 25 kommt über die 1.2.3.4 port 25 zu verschicken. (der server ist über eth2 auch im 10.10.10.0/24 er netz und ist das defaultgw von der 10.10.10.10).

was ich versucht habe war folgendes

(auf der rechner der die 1.2.3.4 und die 10.10.10.1 hat)

iptables -t nat -A PREROUTING -p tcp —dport 25 -j DNAT —to-destination 10.10.10.10
iptables -t nat -A POSTROUTING -p tcp -d 10.10.10.10 —dport 25 -j SNAT —to-source 10.10.10.1

sachen wie net.ipv4.ip_forward=1 sind gesetzt und die rechner können sich sehen (pingen, ssh, alles jut).

problem ist wenn ich eine mail „von aussen“ schicke kommt gar nichts auf der 10.10.10.10 an. schreibe ich eine mail von der 10.10.10.10 wird die geblockt wegen dynamischer ip, was ja nicht sein sollte da er ja die 1.2.3.4 benutzen sollte…

hoffe ich hab mein problem gut erklären können.

über tipps wie man es richtig macht wäre ich sehr dankbar.

grüße

tassilo
 

bitmuncher

Senior-Nerd
Masquerading ist auch aktiviert?

Code:
iptables -t nat -A POSTROUTING -o <output-interface> -j MASQUERADE

Und nicht vergessen die FORWARDING-Chain auf ACCEPT zu setzen. Per Default dürfte die auf DROP stehen.

Code:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
 
Oben