这里记录一下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时表示解除指定服务器发来的请求