之前安装了mitmproxy、还有无线AP共享网络。现在需要将手机连接到树莓派WiFi,并且在开启代理时,可以实现透明代理
一、手机连接WiFi
保证设备接入网线,手机在连接WiFi后,是可以浏览网页。
出现问题:手机可以ping通8.8.8.8,但是域名无法ping通。在连接WiFi时,出现问题,经过排查,dns服务存在问题。不知道是什么原因将之前做的nginx代理的一部分注释掉,重启服务就可以将域名ping通。
sudo vim /etc/dnsmasq.conf
log-facility=/var/log/dnsmasq/dnsmasq.log
interface=wlan0
listen-address=192.168.60.1
bind-interfaces
server=8.8.8.8
#domain-needed
#bogus-priv
#address=/up8007.com/192.168.60.1
dhcp-range=192.168.60.100,192.168.60.200,24h
确保网络互通
二、防火墙配置
1.说明
在Ubuntu中,ufw是一个前端用于管理iptables的工具,它简化了防火墙的配置过程。本身并不直接支持端口转发功能。端口转发通常是通过iptables直接配置的。可以在使用ufw的同时,通过直接操作iptables来添加端口转发规则。
需要将之前的ufw设置的防火墙置为初始状态,“sudo ufw reset ”。
1.在使用过程中由于不清楚防火墙知识,使用了“iptables -F”的命令,——》之前存在的基础的命令失效,包括手机无法连接共享的WiFi,并且连接上不能上网等一系列的乌龙。
***要慎用此清除命令***
2. 查看系统是否启用了 IP 转发功能
sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
可重新加载:sudo sysctl -p
2.防火墙相关操作
注意:由于之前我使用iptables -F清除了基本命令,所以在这里的前三行命令都是用来网络地址转换、数据转发。
后两行命令主要用来进行将80、443端口转发到8080
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080
设置完成后,开启mitmproxy代理。可看到打印
关闭代理,手机访问会提示加载失败,重新加载。
3.相关解释说明
#实现网络地址转换(NAT),具体来说是地址伪装(MASQUERADE),通常用于实现网络共享。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# -A POSTROUTING: 在 POSTROUTING 链中添加规则,这个链处理的是数据包离开本机前的情况。
# -o eth0: 规则作用于从 eth0 网卡接口发送出去的包。
# -j MASQUERADE: 将符合条件的数据包进行地址伪装,通常用于动态分配 IP 的情况下。
#允许从 eth0 接口进来的已经建立连接的数据包通过并转发到 wlan0 接口。这通常用于桥接两个网络接口,实现网络间的数据转发
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# -A FORWARD: 在 FORWARD 链中添加规则,这个链处理的是需要转发的数据包。
# -i eth0: 规则作用于从 eth0 网卡接口进来的包。
# -o wlan0: 规则作用于转发到 wlan0 网卡接口的包。
# -m state --state RELATED,ESTABLISHED: 使用 state 模块匹配状态,RELATED 表示与已建立连接相关的数据包,ESTABLISHED 表示已建立连接的数据包。
#允许从 wlan0 接口进来并转发到 eth0 接口的数据包
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
# -A :append——》追加在最后一条规则
# -i :insert——》插入规则第一条
sudo vim /etc/iptables/rules.v4
1.如果没有该文件,执行以下命令:
sudo apt-get update
sudo apt-get install iptables-persistent
2.保存当前规则
sudo netfilter-persistent save
或者
sudo iptables-save > /etc/iptables/rules.v4
如果使用中,加载规则出现以下情况
sudo modprobe ip_tables
sudo modprobe iptable_filter
sudo modprobe iptable_nat
sudo modprobe xt_tcpudp查看规则:lsmod | grep iptable
其实最后只需要在运行规则时,加上sudo 就可以完成。
总结:写的有点乱,但是这次还是有很大的收获,需要加强对防火墙的知识的学习和了解。其实有时候如果知道这些东西的基本原理话,搞起来很快,但是因为知识欠缺,导致了出现一个小问题 ,不知道如何下手,去哪里找问题,菜鸟一个,加强学习!!!