Iptables i specyficzne przekierowanie

Witajcie.

Muszę przekierować port na serwerze z publicznym IP na inny serwer - na konkretny port. Niby sprawa prosta, ale żadna z reguł nie działa.

Przekierowanie jakie chcę uzyskać to

serwer1:1250 > serwer2:21

Załóżmy że serwery mają IP:

serwer1: 1.1.1.1

serwer2: 2.2.2.2

Oba serwery są w całkiem różnych sieciach z publicznymi IP. Adres źródłowy może być dowolny.Wg mnie teoretycznie taka reguła powinna dać efekt:

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 1250 -j DNAT --to 2.2.2.2:21

a jednak ona nie działa. Gdzieś jest błąd? o czymś zapomniałem?

Z góry dzięki za pomoc

Spróbuj tak:

iptables -I FORWARD -p tcp -d 1.1.1.1 --dport 1250 -j ACCEPT

iptables -t nat -I PREROUTING -p tcp -d 1.1.1.1 --dport 1250 -j DNAT --to 2.2.2.2:21

Oczywiście reguły dodajesz w odpowiedniej kolejności w łańcuchu?

Pozdrawiam!

niestety to też nie daje efektu jaki bym chciał.

Reguły masz w odpowiedniej kolejności? Jak używasz jakiegoś skryptu to wklej go tutaj i podaj oprócz tego wynik polecenia:

iptables -L

Pozdrawiam!

co do kolejności to wydaje mi się że tak. specjalnie jeszcze jako główne polityki ustawiłem akceptowanie - żeby nie było wątpliwości że ma puszczać

Chain INPUT (policy ACCEPT)

target prot opt source destination         

fail2ban-ssh tcp -- anywhere anywhere tcp dpt:1234 

DROP tcp -- anywhere anywhere tcp dpt:686 


Chain FORWARD (policy ACCEPT)

target prot opt source destination         

ACCEPT tcp -- anywhere 1.1.1.1 tcp dpt:1250 


Chain OUTPUT (policy ACCEPT)

target prot opt source destination         

ISPCP_OUTPUT 0 -- anywhere anywhere            


Chain ISPCP_INPUT (0 references)

target prot opt source destination         

           tcp -- anywhere anywhere tcp dpt:imaps 

           tcp -- anywhere anywhere tcp dpt:pop3s 

           tcp -- anywhere anywhere tcp dpt:submission 

           tcp -- anywhere anywhere tcp dpt:smtp 

           tcp -- anywhere anywhere tcp dpt:imap2 

           tcp -- anywhere anywhere tcp dpt:pop3 

           tcp -- anywhere anywhere tcp dpt:https 

           tcp -- anywhere anywhere tcp dpt:www 

RETURN 0 -- anywhere anywhere            


Chain ISPCP_OUTPUT (1 references)

target prot opt source destination         

           tcp -- anywhere anywhere tcp spt:imaps 

           tcp -- anywhere anywhere tcp spt:pop3s 

           tcp -- anywhere anywhere tcp spt:submission 

           tcp -- anywhere anywhere tcp spt:smtp 

           tcp -- anywhere anywhere tcp spt:imap2 

           tcp -- anywhere anywhere tcp spt:pop3 

           tcp -- anywhere anywhere tcp spt:https 

           tcp -- anywhere anywhere tcp spt:www 

RETURN 0 -- anywhere anywhere            


Chain fail2ban-ssh (1 references)

target prot opt source destination         

RETURN 0 -- anywhere anywhere

Zamieniłem tylko adres serwera na omawiany tutaj przypadek (1.1.1.1)

Blokuje tylko port 686, natomiast 1234 to zmienione ssh

Wygląda, że wszystko jest dobrze. A włączyłeś w ogóle obsługę forwardingu przez jądro? :slight_smile:

echo 1 > /proc/sys/net/ipv4/ip_forward

Pozdrawiam!

Tak - teraz jest włączona, ale nie mam pewności czy działa normalnie - serwer stoi w ovh i działa z netbootu - jajko ładowane z sieci czy jakkolwiek oni mają tam to rozwiązane - tego nie wiem.

Co jednak nie zmienia faktu że mimo netboota powinno to działać.

Może spróbuj sklepać sobie taki skrypt do konfiguracji zapory:

#!/bin/sh


## Aktywacja forwardingu przez jądro


echo 1 > /proc/sys/net/ipv4/ip_forward


## Czyszczenie reguł firewalla


iptables -F

iptables -X

iptables -t nat -X

iptables -t nat -F 


## Polityka bezpieczeństwa


iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT


## Reguły firewalla

# Reguły łańcucha wejściowego


iptables -A INPUT -i lo -j ACCEPT

Tu podaj regułę dla SSH

iptables -A INPUT -p tcp --sport 686 -j DROP # lub podaj własną regułę blokowania portu, jeśli skonstruowałeś ją inaczej


# Reguły łańcucha przekierowań


iptables -A FORWARD -o lo -j ACCEPT

iptables -A FORWARD -p tcp -d 1.1.1.1 --dport 1250 -j ACCEPT


# Przekierowanie portów


iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 1250 -j DNAT --to 2.2.2.2:21

Pozdrawiam!