Skip to content
SgrAlpha edited this page Oct 3, 2019 · 19 revisions

如何使用 Ubuntu 搭建软路由透明代理服务器

目的

搭建透明代理服务器的目的,主要是希望用它作为跳板(jumpbox),为内网的机器提供代理服务,同时解决潜在的DNS污染问题,这样内网的机器无需任何配置即可实现访问真・外网。

原理

利用一台有两张网卡的机器,一张用于访问外网,一张用于内网,在上面假设DNS服务,并利用iptables将流量转发到外部代理上。

准备工作

  • 硬件
    • 光猫,主要用于PPPoE拨号访问外网,不是光纤的话普通的也可以。
    • 一台有两张网卡的机器,可以是小主机,也可以是其他闲置的旧电脑。笔者使用的是一台2011年的Mac Mini主机,Intel i5 2.3GHz + 8G 内存,其优点是性能其他路由,个头小,几乎可以放在任何地方,自带一个千兆网口和一个Thundbolt口,可以通过转接器扩展为两个千兆网口。
    • 内网交换机/有线路由器/无线路由,任意一个即可。
    • 内网主工作站,笔记本或者台式机一台。
    • 六类网线若干
  • 软件

网络拓扑

  • 跳板机用于访问外网的网口 -> 光猫的LAN口(注意区分百兆口和千兆口,优先使用千兆口)。
  • 跳板机用于内网的的网口 -> 内网交换机/有线路由器/无线路由的WAN口。

跳板机网络配置

这部分需要在跳板机的命令行里进行操作,后面以 Ubuntu Server 18.04 为例,低版本或者桌面版可能会有些许不同,但基本原理类似。

配置IP

运行 ifconfig -a 查看网卡信息,应该会看到三个或者以上的网卡,名称可能会不同,需要自行区分:

  • enp2s0f0,这是连接光猫的网卡,视为外网网卡
  • ens9,另一块网卡,视为内网网卡
  • lo,本地

在新的 Ubuntu Server 18.04 TLS 中,控制网络组件是一个叫做netplan的东西,与之前大家熟悉的直接编辑/etc/network/interfaces不太一样。其配置文件在 /etc/netplan/ 目录下,通常以数字开头,数字越大权重越大。全新安装的系统通常是有一个配置文件,可以使用:

sudo ls /etc/netplan/

列出所有的配置文件,找其中最大的一个编辑,我这里是50-cloud-init.yaml

sudo vi /etc/netplan/50-cloud-init.yaml

将其中的内容替换成:

network:
    ethernets:
        enp2s0f0:
            dhcp4: yes
        ens9:
            dhcp4: no
            addresses: [192.168.3.1/24, ]
    version: 2

其中对于外网网卡 enp2s0f0 我们使用了DHCP,接受由光猫动态分配的地址;而对于内网网卡 ens9 我们给他分配了一个静态的地址 192.168.3.1,这个地址将会成为内网机器的DHCP服务器地址、网关以及DNS服务器地址。保存之后运行下面的命令可以让配置马上生效:

sudo netplan apply

成功之后可以再运行 ifconfig -a 检查是否配置正确。

这时候连接到内网网卡的设备已经可以拿到自动分配的 IP 地址了,但暂时还上不了网。

配置透明代理

Clone this wiki locally