利用PHP和Linux shell在Ubuntu服务器实现自动端口转发(2)

配置文件/iptables/table.txt

name port destination
zebra 2001 172.18.217.192:3389
connatation 2002 172.18.217.3:3389
ddwrt 2004 8.2.3.4:22
raspberry_pi 2005 172.18.214.5:22

上图中就是用文本作为脚本的配置文件,该文件必须存在,否则脚本运行会有问题

访文件分三个字段,第一行是每个字段的说明,分别表示机器名字,机器在服务器上对应的端口,机器的ip地址和要转发到的端口

下面四行就是四条记录,其中名字为zebra和connatation的两机器是win7,转发到3389进行远程桌面,另外两台机器分别是路由器和树莓派,转发到22进行ssh。

服务器商php脚本./test_shell.php:

<?
//file:test_shell.php
//author:XieShundao
//date:2013.10.17
//descript:excute shell with user in root previlage,
//        make port transport from the server to dynamic ip client.
//        need the follow data in get methord:
//        dest: ip address of the client,can include port in the end
//        host: hostname of the client
//example: ?dest=172.18.217.182:22&host=ddwrt
//ref:


//add port transport to iptables
//$cmd="sudo iptables -t nat -A PREROUTING -d 222.200.180.103 -p tcp -m tcp --dport ".$_GET["port"]." -j DNAT --to-destination ".$_GET["ip"].":3389";

$cmd="/usr/bin/sudo /var/www/iptables/iptables.sh ".$_GET["host"]." ".$_GET["dest"];
 echo $cmd;
//excute the command
 exec($cmd,$output,$return);
?>

这里说明一个文件结构,该文件是放在/var/www文件夹即Ubuntu默认的网站根目录下,而前面的table.txt和iptables.sh是放在该文件来下一个叫做iptables的文件夹下,并且在php里用root权限运行脚本,参考了:

然后在各个机器下写脚本程序通过get方式把自己的ip和机器名字上传上来就可以了。不过有一点要注意:如果有使上传的ip写进iptables里,该机器名字必须要在table.txt里。

上传的格式为:

?dest=172.18.3.4:22&host=ddwrt

其中your_server为你服务器的ip或域名

对照table.txt可知ddwrt对应的端口为2004,所以以后要ssh该机器可以直接通过ssh你服务器的2004端口进行操作。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/6c559e45d55e1f3cf474a33839638c6d.html