服务器内网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 https://github.com/nineaiyu/rinetd/archive/refs/tags/v1.0.tar.gz
- tar -xvf v1.0.tar.gz && cd rinetd-1.0 && 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 root@47.175.68.30 -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