这里记录一下Ubuntu环境及Windows环境下端口转发的实现。主要适用业务为,将内网服务通过有公网IP的服务器对外提供相应端口的服务,或两个网段通过中间服务器相互提供对应端口的服务。
Ubuntu
安装:apt-get install rinetd
设置配置:vi /etc/rinetd.conf
0.0.0.0 33061 192.168.x.x 3306
将所有发往本地的33061端口的请求转发到192.168.x.x 上的3306端口,实现对192.168.x.x上3306端口的对外暴露。0.0.0.0 改为IP地址时表示只讲改IP发往本地的33061端口的请求进行转发。
加载配置:service rinetd reload
Windows
安装:windows下自带了netsh,无需另行安装
设置配置:
netsh interface portproxy add v4tov4 [listenaddress=172.19.x.x] listenport=33061 connectaddress=192.168.x.x connectport=3306
不设置listenaddress时:将所有发往本地的33061端口的请求转发到192.168.x.x 上的3306端口,实现对192.168.x.x上3306端口的对外暴露。设置listenaddress=172.19.x.x时:将172.19.x.x发往本地的33061端口的请求进行转发。
netsh interface portproxy show all 查看目前转发的所有端口列表
netsh interface portproxy delete v4tov4 [listenaddress=172.19.x.x] listenport=33061 解除对33061接口的监听(及转发),设置listenaddress时表示解除指定服务器发来的请求