透明地代理虚拟机

本演练说明了如何使用mitmproxy设置透明代理。在本示例中,我们将VirtualBox VM与Ubuntu代理计算机一起使用,但是常规Internet <–> Proxy VM <–>(虚拟)内部网络设置可以应用于其他设置。

1.配置代理虚拟机

首先,我们必须找出Ubuntu用哪个名称映射了我们的网络接口。您可以通过以下方式找到此信息:

ip link

通常在Ubuntu和Virtualbox中,将eth0或enp0s3(Ubuntu 15.10及更高版本)连接到Internet,将eth1 或enp0s8(Ubuntu 15.10及更高版本)连接到内部网络,该网络将被代理并配置为使用静态ip(192.168。 3.1)。如果名称不同,请使用从ip link命令获得的名称。

VirtualBox配置

VirtualBox配置 VirtualBox配置

VM网络配置

VM网络配置

2.配置DHCP和DNS

我们使用dnsmasq在内部网络中提供DHCP和DNS。Dnsmasq是一种轻量级服务器,旨在为小型网络提供DNS(以及可选的DHCP和TFTP)服务。在此之前,我们需要修复一些Ubuntu怪癖:默认情况下,Ubuntu> 12.04运行一个内部dnsmasq实例(仅侦听环回) [1]。对于我们的用例,需要通过在 /etc/NetworkManager/NetworkManager.conf中将其更改dns=dnsmasq为禁用,并且如果在Ubuntu 16.04或更高版本上运行,请禁用此功能:#dns=dnsmasq

sudo systemctl restart NetworkManager

如果在Ubuntu 12.04或14.04上运行:

sudo restart network-manager

然后。

现在,可以安装和配置dnsmasq:

sudo apt-get install dnsmasq

将/etc/dnsmasq.conf替换为以下配置:

# Listen for DNS requests on the internal network
interface=eth1
bind-interfaces
# Act as a DHCP server, assign IP addresses to clients
dhcp-range=192.168.3.10,192.168.3.100,96h
# Broadcast gateway and dns server information
dhcp-option=option:router,192.168.3.1
dhcp-option=option:dns-server,192.168.3.1

应用更改:

如果在Ubuntu 16.04或更高版本上:

sudo systemctl restart dnsmasq

如果在Ubuntu 12.04或14.04上:

sudo service dnsmasq restart

你代理的机器内部虚拟网络中现在应该收到通过DHCP获取IP地址:

配置DHCP和DNS

3.将流量重定向到mitmproxy

要将流量重定向到mitmproxy,我们需要启用IP转发并添加两个iptables规则:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 8080

4.运行mitmproxy

最后,我们可以在透明模式下运行mitmproxy

mitmproxy --mode transparent

被代理的计算机无法泄漏HTTP或DNS请求之外的任何数据。如果需要,您现在可以在代理计算机上安装mitmproxy证书