网络代理 3-简单代理实战(nc+iptables)

通过几个简单的工具进行下实战, 模拟下代理的访问路径,环境如下

测试环境

目标服务器: 4.ipw.cn
代理机器: lflish.cloud(云机器)

通过本机请求4.ipw.cn,显示当前出口IP是 111.198.1.1

#本机->4.ipw.cn
C:\Users\Administrator>curl 4.ipw.cn
111.198.1.1

通过代理服务器请求4.ipw.cn,显示当前出口IP是101.43.194.10

#代理服务器->4.ipw.cn
[root@centos]$ curl 4.ipw.cn
101.43.194.10

ncat实战

nc号称网络界的瑞士军刀,平时测试网络问题很常用,接下来测试通过nc进行转发客户端请求,实现以下路径

本机->flish.cloud->4.ipw.cn

代理服务器配置如下:

###监听本机7000端口,将数据转发到 4.ipw.cn的80端口
ncat --sh-exec "ncat 4.ipw.cn 80" -l 7000  --keep-open

通过curl访问

C:\Users\Administrator>curl lflish.cloud:7000
101.43.194.10

这里直接访问代理服务器的7000端口,然后代理服务器会转发数据到目标机,并返回数据,为了方便区别特意用了不同的端口。
如果本机配置了hosts,并且代理服务器是使用80端口,那么结果会如下

C:\Users\Administrator>curl 4.ipw.cn
101.43.194.10

这里nc只是单纯的数据转发,达到了隐藏源IP的目的,也即是骇客口中的跳板机, 但是这里客户端->到代理服务器数据未进行加解,抓包7000端口与80端口,发现数据完全一样。

在这里插入图片描述

iptables实战

linux通过iptables命令下发规则到内核层,当前使用的是CentOS 7.9做测试,以下配置命令总结成了脚本,方便后续使用,有需求的同学,直接修改本机IP函数参数即可开箱即用,好多公司也采用的类似解决方案,曾经给客户(国际专线)也提供过类似脚本。

## 下边代码尚未进行测试,后续会更新(因为这次使用了80端口测试,抓包发现运营商拦截了请求,网站目前正在备案中)
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -F

#本机IP地址
LOCAL=10.0.24.7

#基于端口进行转发
function add_dnat_dip()
{
    PORT=$1
    DIP=$2

    iptables -t nat -I PREROUTING  --dst ${LOCAL} -p tcp --dport ${PORT} -j DNAT --to-destination ${DIP}
    iptables -t nat -I POSTROUTING -p tcp --dport ${PORT} -j SNAT --to-source ${LOCAL}
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${PORT} -j ACCEPT
}

#基于Ip+port进行转发
function add_dnat_dst()
{
    PORT=$1
    DIP=$2
    DPORT=$3

    iptables -t nat -I PREROUTING  --dst ${LOCAL} -p tcp --dport ${PORT} -j DNAT --to-destination ${DIP}:${DPORT}
    iptables -t nat -I POSTROUTING -p tcp --dport ${DPORT} -j SNAT --to-source ${LOCAL}
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${PORT} -j ACCEPT
}

 
#add_port_2_dip 80 114.132.191.12
add_dnat_dst 7000 114.132.191.12 80

显示结果,应该是跟NC一样的,这里总结下nc与iptables区别。

总结:

chatGPT: 当涉及到端口转发时,iptables 和 nc(netcat)是两种不同的实现方式,各自有其特点和用途。

iptables 端口转发:

  • iptables 是一个在 Linux 上用于配置防火墙规则的工具,它可以进行网络地址转换(NAT)以及端口转发等功能。
  • 通过 iptables 进行端口转发是在系统级别进行的,可以影响整个系统的网络流量控制。
  • iptables 可以实现四层(传输层)的端口转发,可以基于源地址、目标地址、源端口、目标端口等信息进行转发规则的配置。

nc 端口转发:

  • nc(netcat)是一个网络工具,用于在网络上读写数据,包括建立连接、传输数据等功能。
  • 通过 nc 进行端口转发是在应用层进行的,通常用于临时性的、针对特定应用的端口转发需求。
  • nc 端口转发是在命令行中执行的,只会影响 nc 所启动的端口转发过程,不会影响系统的其他网络流量。

使用场景

  • iptables 适用于系统级别的网络流量控制,而 nc 更适用于临时性的、应用层的端口转发需求。
  • iptables 实现的端口转发作用于整个系统的网络流量,而 nc 只会影响 nc 命令所启动的端口转发过程。
  • iptables 可以实现四层的端口转发,而 nc 更多地是应用层的端口转发工具。
  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值