Przekierowanie ssh

Piotr Pawełek ppawelek w onet.pl
Wto, 9 Sty 2007, 15:36:24 CET


Sytuacja wygląda tak:
                         [PLD]
   LAN <-- 10.1.1.1(eth0)     (eth1)83.12.213.26 <-- [internet]
    |
    |
10.1.1.254
(tu ssh nasłuchuje na porcie 22)

Nie jestem biegły w iptablesach, więc proszę o ewentualną radę,
bo nijak nie mogę zmusić routerka PLD by forwardował ssh na porcie 22
do lokalnej maszyny 10.0.0.254:22.
Dodam, że na PLD jest również uruchomiona usługa ssh, ale na porcie
2222 i działa jak należy z sieci lokalnej i z zewnątrz.
Z maszyny PLD mogę się bez problemu zalogować po ssh (port 22)
na 10.1.1.254, ale już z zewnątrz sieci lipa.
Inne usługi są przekierowywane i działają, a ssh niestety leży
Forwardig w kernelu ustawiony. Nie widzę już, gdzie może tkwić błąd ?
Wydaje mi się, że polityka łańcuchów jest prawidłowa
dla takiego połączenia, czyli łańcuch FORWAD ma ACCEPT,
w łańcuchu INPUT dozwolone nawiązywanie połączeń na 22
(jak wspomniełem do PLD po porcie 2222 jest OK),
odp. reguła przekierowująca jest
     iptables -t nat -I PREROUTING -p tcp -i ${UPLINK} --dport 22 \
-j DNAT --to 10.1.1.254:22
a mimo to nie bangla.
Jak to zdiagnozować, czy czegoś nie brakuje ?
Wydaje mi się, że wszystkiego w skrypcie juz próbowałem ...

=================
A to mój rc.firewall

#!/bin/bash
     UPLINK="eth1"
     ROUTER="yes"
     NAT="83.12.213.26"
     INTERFACES="lo eth0 eth1"
     SERVICES="domain http https ftp smtp rsync 22 2222 63389"
#
     if [ "$1" = "start" ]; then
     echo "Startowanie Firewall..."
     iptables -P INPUT DROP
# Dopuszczenie interfejsow lokalnych
     iptables -A INPUT -i ! ${UPLINK} -j ACCEPT
# Utrzymanie zestawionych poł±czeń
     iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Akceptujemy pakiety ICMP Echo (ping) wchodzace i wychodzace
# Akceptacja odpowiedzi jest realizowana przez modul state RELATED
     iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# dopuszcza do wybranych serwisów
     for x in ${SERVICES}
	do
	iptables -A INPUT -p tcp --dport ${x} -m state --state NEW \
	-j ACCEPT
	done
     iptables -A INPUT -p tcp -i ${UPLINK} -j REJECT --reject-with \
	tcp-reset
     iptables -A INPUT -p udp -i ${UPLINK} -j REJECT --reject-with \
	icmp-port-unreachable
# Ustawienie prawidlowego mtu
     iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS \		 
--clamp-mss-to-pmtu
# wył±czenie ECN (o ile jest)
     if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then
	echo 0 > /proc/sys/net/ipv4/tcp_ecn
     fi
# wył±czenie spoofowania na wszystkich interfejsach
     for x in ${INTERFACES}
	do
	echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter
	done
     if [ "$ROUTER" = "yes"  ]; then
# je¶li jeste¶ ruterem wł±cz IP forwarding
	echo 1 > /proc/sys/net/ipv4/ip_forward
# Załadowanie modułu ¶ledzenia połaczenia ftp
     modprobe ip_conntrack_ftp
# Przekierowanie z sieci wewnętrzej(http) na wewnętrzny IP, bo
# po ustawienu DNAT adres zródłowy(zwenetrzny) pozostaje i pakiety
# nie s± kierowane do lokalnego hosta 10.1.1.50, a na adres zewnętrzny
     iptables -t nat -A POSTROUTING -o ${UPLINK} -s 10.1.1.0/24 \
	-d 83.12.213.26 -p tcp --dport 80 -j SNAT --to 10.1.1.50
# Przekierowanie http
     iptables -t nat -A PREROUTING -i ${UPLINK} -p tcp --dport 80 \
	-j DNAT --to 10.1.1.50:80
# Przekierowanie na Windows 2003 Server  - zdalny pulpit
     iptables -t nat -I PREROUTING -p tcp -i ${UPLINK} --dport 63389 \
	-j DNAT --to 10.1.1.50:3389
# Przekierowanie ssh na portach 22 do 10.1.1.254
     iptables -t nat -I PREROUTING -p tcp -i ${UPLINK} --dport 22 \
	-j DNAT --to 10.1.1.254:22
#
     if [ "$NAT" = "dynamic"  ]; then
# dynamiczny IP, użycie maskarady
	echo "Wł±czenie maskarady(dynamiczny IP)..."
	iptables -t nat -A POSTROUTING -o ${UPLINK} -j MASQUERADE
     elif [ "$NAT" != ""  ]; then
# ststyczny IP używa SNAT
	echo "Wł±czanie SNAT (statyczny IP)..."
	iptables -t nat -A POSTROUTING -o ${UPLINK} -j SNAT --to ${NAT}
#	
     fi
     fi
     elif [ "$1" = "stop" ]; then
	echo "Zatrzymanie Firewalla..."
         iptables -F INPUT
         iptables -P INPUT ACCEPT
# wył±czenie NAT/maskarady je¶li jest
	iptables -t nat -F POSTROUTING
	iptables -t nat -F PREROUTING
	iptables -F FORWARD
     fi
# KONIEC =======================

Z góry dzięki za wszelkie podpowiedzi

-- 
Piotr Pawełek :: ppawelek.SKASUJ (at) USUŃ.onet (dot) pl ::


Więcej informacji o liście dyskusyjnej pld-users-pl