一、实验目标
二、实验过程
1、实验条件
(1)、电脑两台:一台装有Linux系统(ubuntu),双网卡;一台windows 7操作系统,单网卡
(2)、路由器一个:支持DHCP、pppoe以及静态方式上网
(3)、手机一台,装有IxChariot Endpoint,wifi无线连接公司网络,作为PC2使用。
设备拓扑结构:
2、pc实现pppoe服务,供下联设备拨号获取地址
(1)、安装PPPoe服务器软件
sudo apt-get install pppoe
//命令pppoe-server -h 查看软件版本
(2)、配置pppoe服务器
在/etc/ppp目录下编辑文件(options、chap-secrets、pppoe-server-options):
cd /etc/ppp
sudo vi options
找到#ms-dns去掉改行注释,改为实际可用的DNS服务器地址,如114.114.114.114或者8.8.8.8等通用DNS;
sudo vi chap-secrets
增加如下代码:
zhangyahai * 123456 *
//表示用户名zhangyahai,服务器为任意*,密码为123456,ip为任意的*
sudo pppoe-server-options
//此文件不存在就创建该文件,增加以下内容
require-chap
logfile /var/log/pppd.log
(3)、设置IP策略
开启IP转发功能
pppoe协议接入控制的主要方式就是通过对IP数据包的封装在转发,所以需要配置PPPoE服务器必须要开启IP转发功能。
打开/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1所在行,取消该行的注释,随后运行
sudo sysctl –p
即可打开IP转发功能。 sudo vi /etc/sysctl.conf
(4)、配置iptables的IP策略
该步骤需要在超级用户权限下进行:
进入root:
sudo -s -H
运行:
iptables -A POSTROUTING -t nat -s 10.10.10.0/24 -o enp3s0 -j MASQUERADE
//其中10.10.10.0/24是自己想分配的网络号,根据自己的实际需要填写即可;-o enp3s0表示的是服务器连接外网的网卡名字。
(5)、运行PPPoE服务器
sudo pppoe-server -I enp5s0 -L 10.10.10.49 -R 10.10.10.50 -N 50`
其中:-I参数为提供服务的网络端口名称,可以使用ifconfig命令查看当前工作的端口;
-L参数为一个PPP连接中,PPPoE服务器的IP地址,即当前ubuntu服务器地址;
-R参数为当有客户连接到服务器时,从哪个地址开始分配;
-N参数为最多可以有多少个客户同时连接到当前服务器上。
注:每次重启后,该服务会终断,需要从新运行此命令,可以将此命令作为开机脚本。
(6)进入路由器,进行pppoe拨号上网,结果如下图所示:
3、pc提供DHCP服务,供下联设备获取动态地址
(1)、安装udhcpd
sudo apt-get install udhcpd
(2)、为server的两个网卡配置静态ip地址
(3)、加一条默认路由(网关),才能上外网,,查看此时路由数据:
sudo ip route add default via 172.17.52.1
ip route
(4)、配置地址池、DHCP服务的接口、下级使用的DNS、租约时间等:
vi /etc/udhcpd.conf
作如下修改:
(5)开启ipv4 ipv6的转发功能:
这里使用 脚本运行sudo echo 1 > /proc/sys/net/ipv4/conf/all/forwarding:
或者,使用命令sudo vi /etc/sysctl.conf到指定文件中去修改
(6)配置NAT:
iptables -F -t nat;//清空NAT这个表中的所有链
sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o enp3s0 -j MASQUERADE
// 处理nat表,在链尾追加规则, POSTROUTING链(在包就要离开防火墙之前改变其源地址),将源地址为192.168.10.0/24,目的地址为WAN口的所有IP包发到MASQUERAE(即将这些地址换成 MASQUERADE动态伪装,它可以实现自动寻找到外网地址,而自动将其改为正确的外网地址)。MASQUERADE是被专门设计用于那些动态获取IP地址的连接比如,拨号上网、DHCP连接等。如果有固定的IP地址,用SNAT target。
(7)、启动DHCP服务:
sudo udhcpd –I 192.168.10.1 &
然后查看启动是否成功
sudo netstat –uap
注意启动DHCP服务时,使用root权限,不然有可能启动不起来。
查看此时路由器web,此时路由器WAN口状态,IP为192.168.10.98,在分配的地址池范围内,终断设备成功动态获取上联设备的分配的地址。
4、PC1能ping通PC2
用手机代替连接在公司网络上的PC2:
(1)、手机连接公司网络的无线网
(2)、打开IxChariot Endpoint,获取手机端的ip地址:172.18.42.110,显然此时手机的地址由公司网络分配。
在PC1上ping PC2,结果如下:
5、PC1能访问Internet
在PC1*问百度网站,或者在命令行下ping百度主页,结果如下:
6、抓包分析各种协议的过程
ping服务器外网入口ip,抓到的包如下所示:
在PC1和PC2之间打流,抓到的包如下所示:
7、PC1和PC2之间打流
PC1:本地计算机,ip—>172.16.10.164
PC2:手机,连接外网路由器,ip—>172.18.42.110
8、PC2访问route上的web
从逻辑上来说,是属于从外网访问内网,PC可以ping通服务器,但是从服务器到route上,需要用到地址转换NAT。
(1)、开启路由器的远程管理功能,开启此功能相当于在路由器端建立了一条iptables规则。
(2)、在服务器新增一条规则
sudo iptables -t nat -A PREROUTING -p tcp -d 172.17.52.164 -m multiport --dport 80,8080 -j DNAT --to 192.168.10.98:8181
192.168.10.98是路由器的wan口ip地址,8181是开启路由器的远程管理的端口;172.17.52.164是服务器外网入口ip地址。
PC2之所以能访问route上的web服务器,是因为在route上,当打开路由器的远程控制时,路由器自动也创建了一条iptables规则,将服务器发送过来的数据转到web服务器。