服务器内网ip为192.168.195.128,10.1.41.111
客户端ip 10.1.41.3
远程服务端为 192.168.195.132
通过端口转发,实现访问服务器的10.1.41.111 的63497端口,然后转发到192.168.195.132的3389端口,实现远程桌面的登录
操作如下:
yum install gcc gcc-c++ -y
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz && cd rinetd && mkdir /usr/man/man8 -pv && make && make install
编辑配置文件
vim /etc/rinetd.conf
10.1.41.111 63497 192.168.195.132 3389
启动程序
rinetd -c /etc/rinetd.conf
远程连接测试
写成服务如下
#!/bin/bash
# chkconfig: 2345 88 12
# description: rinetd
RINETD=/usr/sbin/rinetd
RINETDCONF=/etc/rinetd.conf
PID=`ps aux | grep rinetd | grep -v "grep" | awk -F" " '/\/sbin\/rinetd/{print $2}'`
if [ -e $RINETDCONF ]; then
echo "ok" &> /dev/null
else
echo "Configuration file not found"
exit 1
fi
case "$1" in
start)
echo -n "Starting rinetd..."
$RINETD -c $RINETDCONF &>/dev/null
echo " done."
;;
stop)
echo -n "Stopping rinetd..."
kill -9 $PID &>/dev/null
echo " done."
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
;;
esac
exit 0
授执行权限并加入开机启动
chmod a+x /etc/init.d/rinetd
chkconfig --add rinetd
chkconfig rinetd on
在 转发服务器配置如下
echo 1 > /proc/sys/net/ipv4/ip_forward #临时开启
iptables -t nat -A PREROUTING -d 10.1.41.131/32 -p tcp -m tcp --dport 40080 -j DNAT --to-destination 192.168.153.130:80
iptables -t nat -A POSTROUTING -d 192.168.153.130/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.153.128
编辑NGINX配置文件,默认配置为/etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
http{
....
}
stream {
upstream web1ssh {
hash $remote_addr consistent;
server 10.42.1.200:65534 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 36325;
proxy_pass web1ssh ;
}
}
启动NGINX,即可将远端的端口转发到server监听的端口
SSH转发对于传输使用未加密协议,访问地理限制内容或绕过中间防火墙的服务的网络数据非常有用。 基本上,您可以转发任何TCP端口并通过安全的SSH连接隧道传输流量。
SSH 端口转发有三种类型:
本地端口转发。 - 将连接从客户端主机转发到 SSH 服务器主机,然后转发到目标主机端口。
远程端口转发。 - 将端口从服务器主机转发到客户端主机,然后转发到目标主机端口。
动态端口转发。 - 创建 SOCKS 代理服务器,允许跨一系列端口进行通信。
本地端口转发
语法: ssh -L [local_bind_addr:]local_port:remote:remote_port middle_host
ssh -L 127.0.0.1:26379:127.0.0.1:6379 [email protected] -p22299 -N -f -i ./siyao
# 意思就是 把远端的 127.0.0.1:6379 映射到本地的 127.0.0.1:26379 端口
# -f 就是放后台运行
# -i 指定私钥
其中"-L"选项表示本地端口转发,监听本地端口 ,其工作方式为:在本地指定一个由ssh监听的转发端口(26379),
将远程主机的端口(127.0.0.1:6379 )映射为本地端口(26379),当有主机连接本地映射端口(26379)时,本地ssh就将此端口的数据包转发给中间主机(或者远端主机)
远端端口转发
语法: ssh -R [bind_addr:]remote1_port:host:port remote1
参考博客:SSH隧道:端口转发功能详解 - 骏马金龙 - 博客园