在实际的生产环境中, 我们为了安全性, 会将一些重要的服务 (数据库服务) 不开放外网访问, 但是当我们某个时刻由于一些特殊需求, 需要进行外网访问的时候, 我们可以通过端口转发来实现. 通过一台和与服务可以互相访问的主机, 通过该主机进行端口转发.
Windows 端口转发
Linux 端口转发
一, Windows 端口转发
Windows 主要是通过 netsh 进行端口转发.
- listenaddress # 本地监听的 ip
- listenport # 本地监听的端口
- connectaddress # 转发请求接收的主机 ip
- connectport # 转发请求接收的主机的端口
- # 执行命令
- netsh interface portproxy add v4tov4 listenaddress=localip listenport=localport connectaddress=remoteip connectport=remoteport
- # 查看现有的配置
- netsh interface portproxy show all
- # 删除原有的端口转发
- netsh interface portproxy delete v4tov4 listenaddress=localip listenport=localport
示例
设置将请求到 本地 IP 192.168.15.89 的端口请求 2222 转发到 192.168.15.35 端口 22.
注意: 下面的命令需要用管理员执行.
- netsh interface portproxy add v4tov4 listenaddress=192.168.15.89 listenport=2222 connectaddress=192.168.15.35 connectport=22
- PS C:\Windows\system32> netsh interface portproxy show all
侦听 ipv4: 连接到 ipv4:
地址 端口 地址 端口
- --------------- ---------- --------------- ----------
- 192.168.15.89 2222 192.168.15.35 22
二, Linux 端口转发
1,rinetd
简介
官方文档 : https://boutell.com/rinetd/
下载 https://boutell.com/rinetd/http/rinetd.tar.gz
rinetd 可以将 TCP 连接从一个 IP 地址和端口重定向到另外一个 IP 地址和端口. rinetd 是一个单进程服务(非阻塞 IO 进程), 它可以处理配置文件 / etc/rinetd.conf 中指定的地址和端口中任意数量的连接. rinetd 不能重定向 FTP, 因为 FTP 需要多个 socket. rinetd 可以在 Linux 平台上运行, 也可以在 Windows 95/98/NT 平台上运行.
安装:
- wget https://boutell.com/rinetd/http/rinetd.tar.gz
- tar -xzf rinetd.tar.gz
- yum install gcc -y
- cd rinetd
- # (修改端口范围)
- sed -i 's/65536/65535/g' rinetd.c
- # 创建目录
- mkdir /usr/man
- # 解压安装
- make && make install
配置文件
配置转发
配置文件的转发书写规则, 可以配置多个转发.
bindaddress bindport connectaddress connectport
示例:
- 0.0.0.0 2222 192.168.15.89 22
- 0.0.0.0 3333 192.168.15.89 80
配置过滤规则
rinetd 可以使用过滤规则, 来设定可以访问的主机.(只能使用 ip, 不能使用主机名)
注意: 填写的位置应该位于文件的开头.
- allow #设置允许访问的主机
- deny #设置拒绝访问的主机
示例: 拒绝 192.168.15 整个网段的请求.
deny 192.168.15.*
配置日志文件
默认情况下, rinetd 不会生成日志文件. 要激活日志记录, 请将以下行添加到配置文件中:
logfile log-file-location
示例: 注意 logfile 与后面路径只有一个空格哦.
logfile /var/log/rinetd.log
配置文件示例:
- deny 192.168.15.*
- 0.0.0.0 2222 192.168.15.89 22
- 0.0.0.0 3333 192.168.15.89 80
- logfile /var/log/rinetd.log
写入配置文件
- echo <<EOF>/etc/rinetd.conf
- deny 192.168.15.*
- 0.0.0.0 2222 192.168.15.89 22
- 0.0.0.0 3333 192.168.15.89 80
- logfile /var/log/rinetd.log
- EOF
运行和管理
- # 启动 rinetd
- rinetd
- # 设置开机自启
- echo rinetd>>/etc/rc.local
- # 暂停 , 通过 kill pid
- kill `cat /var/run/rinetd.pid`
- # 使用其他配置文件
- rinetd -c /opt/rinetd.conf
我们在上面使用的端口, 记得在防火墙添加放行规则.
iptables 和 Firewalld 进行端口转发的话我们后面进行补充.
来源: https://www.cnblogs.com/operationhome/p/11284559.html