CentOS 7 PPTP服务器双网卡内外网流量分流

/ 0评 / 2

原理

在公司网络中搭建了一个CentOS服务器,同时接入了内网和外网并配置了PPTP服务端,在外部拨号进入CentOS当中后,通过配置iptables和ip rule策略路由实现PPTP当中的内网流量走内网网卡,外网流量走外网网卡。

拓扑

file

实现

- 环境配置

CentOS:

本示例中,ens192为外网网卡,连接到路由器通过NAT可以访问外网,ens160为纯内网网卡,由内网交换机引出,ppp0为PPTP拨号后生成的客户端连接网卡,IP池为10.0.0.2/28,按照拨号先后顺序自动分配。

- 路由方向

ens160: 承载来自于ppp0网卡,且目的地为10.0.0.0/8,172.16.0.0/12,192.168.32.0/28(192.168.32.1~192.168.63.254)这三个网段

ens192: 承载来自于ppp0网卡,且目的地址不为上述内网地址的其他所有地址。

在路由的配置当中,由于ens192本身是通过NAT联通外网的,所以它自己只有一个内网地址,所有外网流量将会以它为网关接入。而ens160本身也是内网当中的一个普通地址,所有内网流量将会以它为网关接入。
比较特殊的是,内网网卡ens160必须承载除了10.0.0.0/8即它本身之外的两个内网网段,172.16.0.0/12,192.168.32.0/28,因为内网当中这两个网段一个为防火墙使用,一个为DMZ区域使用,所以同样需要走ens160访问,而ens192本身属于192.168.0.1/24这个网段,和ens160所需要路由的192网段有所冲突,所以在ens160当中仅仅路由了192.168.32.0/28这一段地址,前后的地址都走默认路由,即ens192。

- 配置原理

IP rule & IP route

  1. 所有来自于PPTP的流量,即来自于10.0.10.2/28的流量,默认路由到ens192外网网卡
  2. 所有来自于PPTP的流量,目的地址为10.0.0.0/8的,路由到ens160
  3. 所有来自于PPTP的流量,目的地址为172.16.0.0/12的,路由到ens160
  4. 所有来自于PPTP的流量,目的地址为192.168.32.0/19的,路由到ens160

iptables

  1. 路由到ens160的流量,不在iptables当中做任何配置,由ens160自行路由至内网即可
  2. 所有来自于PPTP的流量,出向网卡为ens192的,由iptables做SNAT,通过ens192的地址上外网

上述1-4配置使用ip rule和ip route配合即可完成
上述5-6配置,使用iptables做SNAT转换即可完成

- 配置命令

Step1. 首先配置策略路由(上节1-4)

####下列所有命令序号对应上节配置原理序号####

0. ip rule add from 10.0.10.2/28 table inside
#所有来自于10.0.10.2/28(pptp)的流量,查询名为inside的路由表
1. ip route add default via 192.168.0.186 table inside
#所有来自于PPTP的流量,即来自于10.0.10.2/28的流量,默认路由到ens192外网网卡
2. ip route add 10.0.0.0/8 via 10.0.0.1 table inside
#所有来自于PPTP的流量,目的地址为10.0.0.0/8的,路由到ens160
3. ip route add 172.16.0.0/12 via 10.0.0.1 table inside
#所有来自于PPTP的流量,目的地址为172.16.0.0/12的,路由到ens160
4. ip route add 192.168.32.0/19 via 10.0.0.1 table inside
#所有来自于PPTP的流量,目的地址为192.168.32.0/19的,路由到ens160

Step2. 配置SNAT(上节5-6)

5. 无需配置
6. iptables -t nat -I POSTROUTING -s 10.0.10.2/28 -o ens192 -j SNAT --to-source 192.168.0.186
#所有来自于PPTP的流量,出向网卡为ens192的,由iptables做SNAT,通过ens192的地址上外网

需注意的地方

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据