透明代理学习
2016-05-20 16:05
267 查看
对透明代理,需要使用几个功能,首先IP_TRANSPARENT,内核2.6.28就已经支持, centos6.3及以上是肯定支持的。
它的作用是,如果某个ip在本机不存在,监听0.0.0.0一样可以收到数据,而发送的时候,可以bind任意一个不存在的ip(当然这个bind你使用netstat是看不见的),这样你就可以伪造任意客户端的报文。
代码也很简单
监听增加
当然如果想收到报文,还是需要做一些操作的,比如我们收到路由器转发的80端口的请求。
然后
可是我发现能收到数据,握手成功,但是服务器像真正的源站发送的握手又被交换机给转发回来了。
因为对于交换机来说,客户端发的握手和服务器发的握手在ip层面都一模一样,源地址和目的地址都相同。
这里需要对交换机做一个限制,对于服务器mac地址的包,走默认路由。
如下是路由器配置
10.0.30.100是客户端
10.0.3.15是服务器
它的作用是,如果某个ip在本机不存在,监听0.0.0.0一样可以收到数据,而发送的时候,可以bind任意一个不存在的ip(当然这个bind你使用netstat是看不见的),这样你就可以伪造任意客户端的报文。
代码也很简单
监听增加
setsockopt(fd, SOL_IP, IP_TRANSPARENT, &value, sizeof(value))发送增加
setsockopt(fd, SOL_IP, IP_TRANSPARENT, &value, sizeof(value)) if(getsockname( s->client_sock , (struct sockaddr *)&server_addr, &addrlen ) ) { http_close_stream(s,"adns_transparent_client"); return; }这里获取真正的服务器地址,写入server_addr
if (bind(s->server_sock, (struct sockaddr*)&s->client_addr, addrlen ) == -1) { http_close_stream(s, "adns_transparent_bind"); return; }绑定客户端地址(虽然本机没有这个ip)
r = connect_nonb(sock, (struct sockaddr *)&server_addr);连接真正的服务器地址。
当然如果想收到报文,还是需要做一些操作的,比如我们收到路由器转发的80端口的请求。
然后
iptables -t mangle -N DIVERT iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT iptables -t mangle -A DIVERT -j MARK --set-mark 1 iptables -t mangle -A DIVERT -j ACCEPT ip rule add fwmark 1 lookup 100 ip route add local 0.0.0.0/0 dev lo table 100 iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 81注意你的服务器的监听端口改成非80,比如81端口,这样就能收到数据了。
可是我发现能收到数据,握手成功,但是服务器像真正的源站发送的握手又被交换机给转发回来了。
因为对于交换机来说,客户端发的握手和服务器发的握手在ip层面都一模一样,源地址和目的地址都相同。
这里需要对交换机做一个限制,对于服务器mac地址的包,走默认路由。
如下是路由器配置
10.0.30.100是客户端
10.0.3.15是服务器
ip access-list extended ppc permit tcp host 10.0.30.100 any eq www ip access-list extended ppc-15 permit tcp any eq www host 10.0.30.100 route-map ppc-15 permit 10 match ip address ppc-15 set ip next-hop 10.0.3.15 ! route-map ppc permit 10 match ip address ppc set ip next-hop 10.0.3.15 ! route-map ppc permit 20 interface Vlan300 ip address 10.0.30.1 255.255.255.0 ip policy route-map ppc interface GigabitEthernet0/24 no switchport ip address 10.0.0.2 255.255.255.252 no ip proxy-arp ip policy route-map ppc-15
相关文章推荐
- 房产界已上市和IPO路上的难兄难弟:房天下与房多多
- 雷军是谁,他为什么而奋斗?小米上市和雷军的英雄主义
- IP网络路由技术
- 如何利用“IP地址欺骗”
- 新手看招:避免网络 IP 地址被非法修改
- 网络管理之IP地址篇
- ip地址基础知识
- 脚本之家因服务器资源紧张 换了ip并升级了带宽
- IP地址组成与类型
- 计算机名DNS网关IP(大家可以用来学习)
- Windows2003下批量添加和导出所有ip BAT脚本
- 一个能对访问者进行编号、记录访问次数、IP、时间的统计制作实例
- 用vbscript脚本实现返回 IP 配置数据的代码
- 用vbs针对一个 IP 地址范围运行脚本
- asp实现检查ip地址是否为内网或者私有ip地址的代码分享
- 根据IP跳转到用户所在城市的实现步骤
- vbs版IP地理位置查询小偷
- bat脚本显示本机IP地址的两种方法(内网ip)
- PHP判断IP并转跳到相应城市分站的方法