利用PHP和linux shell在ubuntu服务器实现自动端口转发

Ubuntu 端口转发配置【记录自用】 Ubuntu上连接两个不同的网络,网络A 和网络B, 实现网络A中一个设备通过ubuntu的一个端口转发数据到网络B中指定设备的端口上。在安装过程中,你会被要求确认是否将当前的iptables规则保存到文件中。选择"是",然后继续进行安装。安装完成后,iptables-persistent会自动加载保存的iptables规则文件。从Ubuntu 端口3389接收到的数据转发到 50.50.1.95:3389。iptables是 Linux 上用于配置防火墙的工具。查看ip_forward文件是否为1。 阅读详情


前言:

在用动态ip分配协议的网络环境下远程控制自己的主机最烦的就是ip会经常改变,而安装teamviewer这些软件又没有用rdp那么快速,所以经常开机后第一件事就是把ip地址记下来,然后再从其他机器远程进来。因为手头掌控着一台有固定ip地址的服务器,我想能不能通过这台服务器自动记录自己机器每次获得在ip,然后可以很方便地进行远程控制,只要机器是开着的。以前是在机器上写脚本在开机的时候上传ip地址到服务器的php网页,然后网页把ip存放在一个html文件里,要远程时再查看这个html文件来获取地址。最近我想能不能有更直接的方法,就是当自己机器把ip地址上传到服务器的时候,服务器就增加一条端口转发记录到iptables里,然后就可以通过服务器某个固定的端口来远程机器,这样子只要记住每台机器对应的端口就可以了。

网络结构:

具有固定ip地址的服务器一台,系统是ubuntu,以及同一局域网内通过dhcp获取地址的机器一台,系统为win7.

 

服务器端脚本

./iptables/iptables.sh:

 

#!/bin/bash
#This program will receive ipaddress and port and add to iptables
#receive to data: iptables.sh hostname destination
#hostname:name of the host
#destination: ipaddress,can add port at the end
#example:
#iptables.sh ddwrt:1.2.3.4:22
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#get hostname and destination
host=`echo $1 | cut -d":" -f1` #hostname of client
dest=`echo $1 | cut -d":" -f2` #ip of client
port=`echo $1 | cut -d":" -f3` #port of client
dest=$dest:$port

#add the new ip address to table.txt
awk '{if($1=="'$host'")$3="'$dest'";print $0}' table.txt > __tmp__
mv  ./iptables/__tmp__ ./iptables/table.txt

#scan table.txt and add the port to iptables
sudo iptables -t nat -F
while read line
do
 port=`echo $line | awk '{print $2}'`
 dest=`echo $line | awk '{print $3}'`
 ip=`echo $dest|cut -d":" -f1`
if [ "$port" != "port" ]; then
  sudo iptables -t nat -A PREROUTING -d 172.18.180.103 -p tcp -m tcp --dport $port -j DNAT --to-destination $dest
  sudo iptables -t nat -A POSTROUTING -p tcp -m tcp -d $ip -j SNAT --to-source 172.18.180.103
fi
done < ./iptables/table.txtdone < ./iptables/table.txt


在以上代码中,通过命令行参数传进两个参数,机器名字host和目的地址dest,其中host只是个代号,写在一个名字叫table.txt的文件中(下面会给出),而dest包括机器的ip地址和端口,如脚本说明里面的例子:

ddwrt是主机的名字,1.2.3.4:22就是目的地址了,这里是为一台ddwrt路由器做端口转发,以便通过22端口进行ssh。

赋值语句中的$1和$2分别表示命令行获取的第一个和第二个参数,如
./iptables.sh ddwrt 1.2.3.4:22

这里$1就是ddwrt,$2就是1.2.3.4:22

awk和mv两句是把名字叫host的一行记录的目的地址改成新上传的地址

while语句就是扫描/iptables/table.txt把里面的主机名对应的端口和目的地址加到iptables转发表中。

 

配置文件/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: http://edclub.xicp.net/test_shell.php?host=ddwrt:172.18.217.182:22
//ref: http://blog.youkuaiyun.com/houqd2012/article/details/8249124


//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"];
 echo $cmd;
//excute the command
 exec($cmd,$output,$return);
?>


 

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

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

上传的格式为:

http://your_server/test_shell.php?dest=172.18.3.4:22&host=ddwrt

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

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

本地机器脚本:

 

以下是我在win7下写的一个用curl来上传ip地址的bat程序,当然该程序要跟软件curl放在同一文件夹下:

@echo off

rem get ip address of eth0 and store in varialbe ip
  ipconfig |find "IPv4 地址 . . . . . . . . . . . . : 172." >ip.txt
  set /p IP=<ip.txt>nul
  set IP=%IP:~37,16%

  set SERVER="172.18.180.103/test_shell.php?host=ddwrt:%IP%:22"

  echo -------------------------upload the new data-----------------------------
rem upload the new data
  C:\Users\zebra\Desktop\curl-7.17.0\curl  %SERVER%
  echo ..
  echo ---------------------------------end-------------------------------------
pause


其中pause是为了执行完不立即关闭窗口,可以方便调试。

在linux下获取eth0的ip可以用以下方法:

IP=`ifconfig eth0 |grep "inet addr" |cut -d: -f2 |cut -d" " -f1`


 

而上传什么的也类似,在此就不贴出来了。
Ubuntu 14.04 部署 Linux Dash:Apache+PHP+Git 轻量监控实战 Linux Dash 是一款基于 PHP 的轻量级服务器实时监控工具,其核心原理是通过 Shell 命令(如 df、free、uptime)动态采集系统指标并由 Apache Web 服务渲染展示。该方案技术价值在于零数据库依赖、无日志写入、部署极简,特别适合老旧服务器、边缘设备及最小化系统环境。典型应用场景包括 VPS 健康巡检、物理服务器现场运维、无容器基础设施的快速可观测性建设。本文聚焦 Ubuntu 14.04 这一关键兼容版本,深入解析 Apache 模块配置、PHP 5.5 运行时适配及 Git 阅读详情

相关推荐

Linux Dash轻量监控部署指南:Ubuntu 14.04+Apache+PHP实战

Linux Dash 是一种面向资源受限环境的轻量级服务器监控方案,其核心原理是通过 PHP 直接调用系统命令(如 df、free、ps)实时采集指标,并以 JSON 格式交付前端渲染,全程无数据库、无后台服务、不写磁盘日志。这种‘零中间件’架构赋予它极低内存占用(3–5MB)和强兼容性,特别适用于老旧系统运维场景。在 Ubuntu 14.04 等已终止支持但仍在工控、教育、嵌入式设备中广泛运行的 LTS 发行版上,Linux Dash 可基于原生 Apache 2.4.7 与 PHP 5.5.9 快速部署

z466459262的专栏 428

[Ubuntu][网络][教程]端口转发以及端口管理

Armv7。

qq_38844263的博客 6253

CTF中nc工具:从漏洞利用到稳定Shell获取的实战指南

在网络安全和渗透测试领域,理解进程间通信与网络套接字重定向是掌握远程控制技术的基础。通过文件描述符重定向原理,可以将一个进程的标准输入输出绑定到网络连接,实现远程命令执行。这项技术在渗透测试中具有重要价值,能够帮助安全研究人员验证漏洞危害性。在CTF竞赛和实战渗透场景中,常需在漏洞利用后获取稳定可交互的Shell环境。本文聚焦于利用nc(Netcat)工具实现反向Shell和正向Shell的技巧,涵盖二进制漏洞利用后的稳定控制方法,并深入解析其中涉及的进程衍生、网络套接字绑定等核心机制。通过具体示例展示如何

weixin_34248705的博客 360

php做端口转发,利用PHP和linux shell在ubuntu服务器实现自动端口转发

前言:在用动态ip分配协议的网络环境下远程控制自己的主机最烦的就是ip会经常改变,而安装teamviewer这些软件又没有用rdp那么快速,所以经常开机后第一件事就是把ip地址记下来,然后再从其他机器远程进来。因为手头掌控着一台有固定ip地址的服务器,我想能不能通过这台服务器自动记录自己机器每次获得在ip,然后可以很方便地进行远程控制,只要机器是开着的。以前是在机器上写脚本在开机的时候上传ip地址...

weixin_42294495的博客 693

Ubuntu服务器安全防护:Linux Malware Detect (Maldet) 部署与实战指南

在服务器安全领域,恶意软件检测是保障系统完整性的核心环节。其基本原理是通过特征码匹配和行为分析,识别已知威胁与异常活动。对于Linux服务器,尤其是Ubuntu系统,虽然其内核安全性较高,但面向公网的应用服务(如Web、数据库)常成为攻击目标,因此部署专用的威胁检测工具具有重要技术价值。这类工具能有效防范Web Shell、勒索软件等应用层攻击,适用于各类生产环境与开发服务器。本文将聚焦Linux Malware Detect(Maldet),这是一款轻量高效的文件扫描器,专门针对PHP、Perl等脚本中的

cuxiong8996的博客 481

Ubuntu 18.04 多版本 PHP 共存实战:PHP-FPM + Apache 精准路由

PHP多版本共存是企业级Web运维的基础能力,源于老旧系统(如CodeIgniter 2.x)与现代框架(如Symfony、Laravel)对PHP解释器的版本冲突。其技术原理在于解耦Web服务器与PHP执行层——通过PHP-FPM作为独立进程管理器,结合Unix socket或TCP端口实现进程隔离,再依托Apache的ProxyPassMatch按路径/域名精准分发请求。该方案规避了mod_php的全局锁定缺陷,支持热更新、安全加固与资源隔离,广泛应用于Ubuntu、Debian等Linux生产环境,尤

agtvo48266的专栏 319

ubunttu-sh: 1: pause: not found

old code: //in ubuntu OS system("pause"); error discription: sh: 1: pause: not found right code in ubuntu: system("read -p 'Press Enter to continue...' var");// Re: 1.what-is-sh-1-...

weixin_30484739的博客 1713

从零搭建《我的世界》基岩版服务器:BDS与PocketMine-MP实战指南

在游戏服务器架构中,服务端核心是承载游戏逻辑与玩家交互的关键组件,其工作原理在于持续运行以维护游戏世界状态、处理数据包并协调多客户端同步。从技术价值看,自建服务器不仅解决了联机需求,更实现了对游戏环境、数据安全和扩展能力的完全掌控,尤其适用于需要高度自定义玩法的场景。通过端口转发等网络配置技术,可以将本地服务暴露到公网,从而构建稳定、私有的多人游戏环境。本文聚焦于《我的世界》基岩版,详细对比了官方BDS与第三方PocketMine-MP两种核心的部署流程,并深入解析了服务端配置、网络穿透及常见故障排查等工程

weixin_33853794的博客 346

Ubuntu/Linux SSH 端口转发

SSH, Secure Shell 是一种在网络上用于安全远程登录到另一台机器的工具。除了远程登录以外,ssh 的端口转发是它的另一项强大功能。通过 ssh 端口转发功能可以将一个端口的流量转发到另一个端口,实现端口间的数据转发。本文重点介绍本地端口转发(local port forwarding),其余两种(远程端口、动态端口)转发会在后续的时间进行补充说明。关于ssh命令的具体用法可以在命令行输入man ssh查阅官方手册。man ssh。

bluebird_shao的专栏 2770

反弹shell方法

假如ubuntu、CentOS为目标服务器系统 kali为攻击者的系统,ip为:192.168.0.4,开放7777端口且没被占用 最终是将ubuntu、CentOS的shell反弹到kali上 正向反弹shell ubuntu或者CentOS上面输入 nc -lvp 7777 -e /bin/bash kali上输入 nc ip 7777 正向反弹是目标机先执行nc命令,然后kali上再进行nc监听,即可反弹shell。 需要目标机安装nc。 反向反弹shell 方法1:bash反弹

Cwillchris的博客 768

记一次ubuntu利用iptables做端口转发的操作

同事从海外远程连接国内某云上的一台机器3389端口,发现因为运营商路由原因非常慢,找运营商修改路由又非常麻烦。于是曲线救国,找了国内一台到两边访问都较快的机器做为跳板,做一个端口转发,以加速云机器3389端口的访问。这里记录下思路和操作。 我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。 文章目录网络拓扑图iptables & ufwufw命令iptables命令实际操作一些坑 网络拓扑图 如下,图中ip均为虚构。 主要目的就是通过配置跳板机的防火墙转发规则,使得访问1.1.1.1:21521的流量自动转发到2.2.2

linux 命令:scp (pscp)、rz/sz、nc (netcat)、ncat、socat、ssh、端口转发(rinetd)

NC 全名 Netcat (网络刀),作者是 Hobbit && ChrisWysopal。因其功能十分强大,体积小巧而出名,被誉为网络安全界的 "瑞士军刀"。Netcat 使用 TCP 或 UDP 协议的网络连接去读写数据。Netcat 也是稳定的后门工具、功能强大的网络调试和探测工具。能够直接由其它程序和脚本轻松驱动。能够建立几乎所有类型的网络连接。在中国NC 的 WINDOWS版有两个版本,一个是原创者Chris Wysopal写的原版本,另一个是由 "红与黑" 编译后的新浓缩版。.........

freeking101的博客 3万+

二维“能量源”(电场、磁场、功率)入射边界设置方法

comsol光学仿真设计相关学习笔记和经验 1. 二维“能量源”(电场、磁场、功率)入射边界设置方法 2.边界条件设置薄膜材料

VJCP_90909Bu0的博客 5197

ubuntu linux打开sh,ubuntu shell 启动 软件 ubuntu 开机启动shell

linux ubuntu中如何打开shell在图形界面下按ctrl、alt、F2组合键进入,ctrl、alt、F7组合键退出字符界面。linux是多用户操作系统打开命令行系统会开启六个控制台,当其中一个崩溃是可直接切换到另一控制台而不必重启电脑。故,ctrl、alt、F7组合键退出字符界面。ubuntu开机如何 进入shell脚本 我应该如何禁止进入shell脚本 直接进入...等待从源下载安装w...

weixin_42365303的博客 1653

从图像处理到AI:手把手教你用Halcon DL Tool完成第一个缺陷检测项目

本文详细介绍了如何使用Halcon深度学习工具(DL Tool)完成金属表面缺陷检测项目。从环境准备、数据采集标注到模型训练与部署,手把手指导工程师快速构建AI质检系统,显著提升工业缺陷检测效率。特别针对金属反光等难点问题提供实用解决方案。

weixin_42531886的博客 291

Win10文件夹只读属性自动恢复?彻底解决方法解析

Win10文件夹只读属性自动恢复?彻底解决方法解析在Windows系统使用过程中,文件权限管理常会遇到棘手问题。最近多位用户反馈:取消文件夹只读属性后,系统却自动恢复该设置,导致无法正常复制或修改文件。本文将深入分析该现象的产生原因,并提供多种解决方案,帮助开发者彻底摆脱权限困扰。

mmoo_python的博客 7534

Netcat命令执行详解:从端口扫描到反向Shell实战

网络调试与安全测试中,端口扫描和远程命令执行是核心基础技术。端口扫描通过TCP/UDP协议探测目标主机开放的服务端口,是评估网络暴露面的第一步。其技术价值在于快速识别潜在的攻击面和服务可用性,广泛应用于运维监控、渗透测试和应急响应。远程命令执行则在此基础上更进一步,通过建立网络连接与系统Shell绑定,实现远程控制,在合法运维中可用于紧急管理,在渗透测试中则是关键的攻击载荷。本文以Netcat(nc)工具为例,深入解析其实现端口扫描和建立反向Shell的机制,涵盖Linux与Windows环境下的实战命令,

weixin_30315723的博客 333

ArcGIS基础实战:面数据拓扑创建和错误修改全流程

通过下图的操作我们可以发现,图层的【Shape_Length】和【Shape_Area】字段的数值都发生了改变,表明两个图层重叠的那一部分图斑合并到另一个图班上,其面积会减小、长度会变大(自己重新计算一下也可以得到此验证结果的)。如图【拓扑实验结果】文件夹里右键,新建【文件地理数据库】,并进行命名为【xx拓扑检查】备注:养成良好的命名习惯。然后在【xx拓扑检查】下右键打开【新建要素数据集】,并对数据集进行命名为【XX拓扑】,然后进行下一步设置。在【KK拓扑】数据集上右键,新建【拓扑】。

yuanYW7556的博客 1万+

Linux下Shell 反弹总结

当拿到webshell的时候,因为webshell的环境是虚拟终端,不是交互型终端,很多命令是无法执行的,所以需要拿到交互式shell,就得反弹shell 工具准备 VPS(公网ip) python环境 nc(netcat) Ubuntu(宿主机) 反弹shell 步骤 首先在vps上使用netcat开启监听 nc -lvnp 8080 参数 -l:使用监听模式,监控传入的资料; -v:显...

AaronLuo 911

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f结构,实现精度与效率的同步提升

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

know_F0727的博客 204

小梅哥Xilinx FPGA学习笔记11——亚稳态

亚稳态就是D触发器输入信号在其数据窗口期内发生变化,导致D触发器的输出进入一段时间的不稳定状态,有可能发生振荡,并最终随机稳定在高电平或者低电平。

m0_51430584的博客 631

反弹shell的几种方法

目标服务器系统:Ubuntu、CentOS。 攻击者系统:Kali Linux,IP地址为 192.168.0.1,开放 4444 端口。 反弹Shell: 正向反弹Shell:目标机先执行 nc -lvp 4444 -e /bin/bash,然后攻击者使用 nc ip 4444 监听,可以实现Shell的反弹。 反向反弹Shell:有多种方法,包括使用 bash、python、nc 本身,以及 php 来实现。每种方法都需要在攻击者机器上先使用 nc -lvp 端口号 进行监听

星河梦瑾的博客 1642

Spring-AI 第 17 章 - 飞书机器人接入详解

✅ Stream 长连接(官方 SDK)✅ AI 对话(支持工具调用)✅ 消息接收与回复✅ 天气查询✅ 数据库查询✅ 数学计算✅ 事件去重Stream 长连接模式:使用官方 SDK 建立 WebSocket 长连接,服务器主动连接飞书,无需公网 IP消息处理流程:接收消息 → 解析内容 → AI 处理 → 回复用户AI 工具调用:接入 FunctionTools,支持天气、计算、日期、数据库查询等多种工具。

AppBlog.CN全栈架构 212

shell脚本实现部署lamp和lnmp

shell脚本实现部署lamp和lnmp1. 创建一个目录,用来存放脚本和安装包2.下载好需要部署服务的安装包3. 编写脚本文件4. 验证效果4.1 部署lamp4.2 部署lnmp 1. 创建一个目录,用来存放脚本和安装包 [root@localhost ~]# mkdir /scripts [root@localhost ~]# cd /scripts/ [root@localhost scripts]# tree . └── services ├── install.sh └── pa

巅峰产生虚伪的拥护,黄昏见证虞城的信徒。 591

倍福EL5101模块连接编码器

1、 EL5101模块简介:EL5101为单通道增量型编码器计数模块,一共有EL5101-0000、EL5101-0010、EL5101-0011、EL5101-0090(尚未供货)四种型号,其中EL5101-0000比较常用,本例使用EL5101-0000连接增量型编码器 2、 硬件外观和接线 在这里插入图片描述 3、 指示灯说明 4、和编码器连接的案例 ......

weixin_41883890的博客 6502

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: sysu宿舍网络路由器分享——IPv6篇
下一篇: 树莓派+无线网卡在DHCP网络环境下实现有线网向无线网的扩展
Dolf2014
博客等级 码龄16年 24粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值