Hali,
Adott egy szerver loopback-en figyelő mysql 1 db publikus ip.
A feladatom az lenne, hogy egy bizonyos ip-ről a publikus ip-re címzett 3306-ot forwardoljam a lo-ra. ip_forward bekapcsolva, de az eth0-ról csak nem mennek semerre a csomagok. Egyelőre ennyit tudtam összehozni.
$PORT=3306
$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport $PORT -j DNAT --to-destination 127.0.0.1:$PORT
$IPT -A FORWARD -p tcp -i eth0 -o lo --dport $PORT -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -i lo -o eth0 --sport $PORT -j ACCEPT
Köszi előre is.
- 1463 megtekintés
Hozzászólások
Helló!
Felejtsd el, dnat a loopback-re nem fog menni!
Biztosan van több megoldás is, nekem most ez jutott eszembe:
ssh -f -N -L $ETH0_IP:3306:localhost:3306 $ETH0_IP
és man ssh, ha ennyi nem elég :-)
Szabi
- A hozzászóláshoz be kell jelentkezni
Ez nem megy.
xxxx:/etc/ssh# ssh -p 2222 -l xxxx -f -N -L 3306:localhost:3306 111.222.333.444
Password:
channel_setup_fwd_listener: cannot listen to port: 3306
Could not request local forwarding.
Ez igen.
xxxx:/etc/ssh# ssh -p 2222 -l xxxx -f -N -L 3307:localhost:3306 111.222.333.444
De nem hozza a kívánt eredményt :(. Mert a külső ip 3307-re connection refused. A telnet localhost 3307-re persze megy :(.
- A hozzászóláshoz be kell jelentkezni
Ugyanoda akartad forwardolni, persze hogy nem megy.
No még egyszer...
ssh -f -N -L $ETH0_IP:3306:localhost:3306 $ETH0_IP
Szabi
- A hozzászóláshoz be kell jelentkezni
ssh -f -N -L 111.222.333.444:3306:localhost:3306 111.222.333.444
Bad forwarding specification '111.222.333.444:3306:localhost:3306'
Ezért írtam..
- A hozzászóláshoz be kell jelentkezni
Sajnos nem tudom, hogy mi ez a hiba.
No, hogy ne beszéljek hülyeséget, kipróbáltam az alábbiak szerint és _nálam_ működik:
ssh -f -N -L 192.168.0.217:3306:localhost:3306 192.168.0.217
de jó ez is:
ssh -f -N -L 192.168.0.217:3306:localhost:3306 localhost
utána:
netstat -talpn |grep 3306
tcp 0 0 192.168.0.217:3306 0.0.0.0:* LISTEN 12201/ssh
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 11808/mysqld
OS: Ubuntu Edgy
sshd: OpenSSH_4.3p2 Debian-5ubuntu1, OpenSSL 0.9.8b
Azt írtad, hogy csak egy IP-ről kell elérned kívülről. A távoli gépről is megpróbálhatod és akkor az ottani loopback-re irányítja a portot:
ssh -f -N -L 3306:localhost:3306 user@$MYSQL_SZERVER_IP vagy windows esetén putty-val.
Így ráadásul csak az ssh-t kell átengedned a tűzfalon, ssh-n keresztül megy a forgalom és nem kell a helyi gépen az ssh forward.
Szabi
- A hozzászóláshoz be kell jelentkezni
Közben putty-ból megoldottam. Kipróbálom amiket mondtál. Köszönöm.
- A hozzászóláshoz be kell jelentkezni
Nos a gép egy debian sarge, A ssh v2 engedélyezve, de mégsem megy az általad leírt formában :(
- A hozzászóláshoz be kell jelentkezni
Akkor nem csodálkozom, hogy nem működik, a Sarge-ban 3.8-as openssh van, a "bind address" meg a 4.0-ban jelent meg ->
http://www.openssh.org/txt/release-4.0
Changes since OpenSSH 3.9:
============================* ssh(1) now allows the optional specification of an address to bind to
in port forwarding connections (local, remote and dynamic). Please
refer to the documentation for the -L and -R options in the ssh(1)
manual page and the LocalForward and RemoteForward options in the
ssh_config(5) manpage. (Bugzilla #413)
De ettől még a távoli gépről kellene működnie úgy, ahogy már leírtam, meg amúgy is az a jobbik megoldás.
Szabi
- A hozzászóláshoz be kell jelentkezni