Ubuntu(Debian)下使用rinetd进行端口转发

先说一下我的网络环境吧,应该有些人和我一样的:
Internet接入(非内网,有公共IP)<==>Ubuntu服务器(双网卡)<==>集线器<==>Mac或者其他的电脑

Ubuntu的服务器负责宽带拨号网络接入和文件共享,然后我的其他电脑需要使用到外网的端口。iptables的NAT转发比较麻烦,由于是非固定IP所以每次都要自己手动输入命令,实在是没效率。
rinetd就很好的解决了这个问题,而且配置起来也非常简单,只需要内网IP(一般都是固定的),不需要外网IP也不用网卡编号。

首先安装:sudo apt-get install rinetd
开启ip foward(不过好像不是必须):echo "1" >/proc/sys/net/ipv4/ip_foward
然后配置文件:sudo vim /etc/rinetd.conf
然后根据以下格式按实际情况更改:
[绑定地址] [绑定端口] [内网IP] [内网端口]
比如说我想让所有从外网访问我机器的82端口的是访问内网的某台服务器的http也就是80端口的就是:
0.0.0.0 82 192.168.1.101 80
当然也可以根据需要设置allow和deny的IP,不过很少用上就是了..

保存之后还没生效,需要先sudo pkill rinetd一次,再执行rinetd -c /etc/rinetd.conf就能正常执行了。
当然也可以添加为开机启动,sudo vim /etc/rc.local然后写入sudo rinetd -c /etc/rinetd.conf即可。

于是TCP和UDP的应该都能像普通路由器那样进行端口转发,但是uPnP好像就不行了。所以Share EX2还是会提示内网而无法下载。

后记:此方法主要针对新手,对于linux高手来说直接修改iptables映射就好。