第二届SDN大赛--提高题1

1小题:代理访问

                                                                          -------------温州大学 12网工

一、 实验背景

代理(Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。

二、 实验目的

设有两台 PC 机(Host1,Host2) ,一台 Web 服务器(Server1)提供简单的静态网页访问服务,一台代理服务器(Proxy1)和 Web 服务器提供同样的服务,两台服务器所显示的网页大致相同,但要有显著差别,可以是不同的网页内容或者不同颜色,能够区分彼此即可,如图1.1所示。其中Web 服务器是Host1和Host2都可以访问的,而代理服务器是只有代理用户才可以使用。可以设置 Host1 或 Host2 为代理用户,可以直接从代理服务器访问到网页。

 

1.1:网络拓扑示意图

三、 实验环境搭建

SDN虚拟机的/home/ubuntu/mininet/custom/目录下创建proxy-access.py文件。proxy-access.py是自定义拓扑文件。我们在拓扑中定义了两台主机h1,h2,三台交换机s1,s2,s3,一台服务器server以及一台代理服务器。

 

 

四、 实验过程及结果

(一)mininet创建拓扑

创建的proxy-access.py文件内容如下:

"""Custom topology example

 

Two directly connected switches plus a host for each switch:

 

   host --- switch --- switch --- host

 

Adding the 'topos' dict with a key/value pair to generate our newly defined

topology enables one to pass in '--topo=mytopo' from the command line.

"""

 

from mininet.topo import Topo

 

class MyTopo( Topo ):

    "Simple topology example."

 

    def __init__( self ):

        "Create custom topo."

 

        # Initialize topology

        Topo.__init__( self )

 

        # Add hosts and switches

        Switch1 = self.addSwitch( 's1' )

        Switch2 = self.addSwitch( 's2' )

        Switch3 = self.addSwitch( 's3' )

        Host1=self.addHost('h1')

        Host2=self.addHost('h2')

        Server=self.addHost('server')

        Proxy=self.addHost('proxy')

 

        # Add links

        self.addLink( Switch1,Host1 )

        self.addLink( Switch1,Host2 )

        self.addLink( Switch1,Switch2 )

        self.addLink( Switch3,Switch2 )

        self.addLink( Switch2,Server )

        self.addLink( Switch3,Proxy )

 

topos = { 'mytopo': ( lambda: MyTopo() ) }

 

在终端中输入以下命令建立网络拓扑,并使用pingall命令测试连通性:

>>sudo mn --custom /home/ubuntu/mininet/custom/proxy-access.py --topo mytopo --switch ovsk --controller=remote,ip=192.168.181.129,port=6633

>>pingall

 

结果如图1.2,1.3所示。

 

1.2:建立网络拓扑

 

1.3floodlight网络拓扑

由于floodlight的web界面有bug,创建时多出三台主机。

(二)设置服务器并访问

在mininet中输入以下xterm命令,使h1,h2得到独立窗口:

>>xterm h1 h2

serverproxy分别开启web服务,如图1.4所示。

 

1.4serverproxy开启web服务

/ubuntu/home目录下创建两个文件:server.htmlproxy.html作为两个服务器的访问页面。页面内容如图1.5,1.6所示。

 

1.5serverweb页面

 

1.6proxyweb页面

node:h1node:h2分别访问serverproxy,结果如图1.71.8所示。

 

1.7h1访问serverproxy

 

 

 

1.8h2访问serverproxy

(三)添加流表使h1无法访问proxy

在终端中输入以下命令添加流表:

>>ovs-ofctl add-flow s3 priority=1,in_port=2,dl_src=9a:bc:c3:db:9b:30,actions=drop

其中9a:bc:c3:db:9b:30h1mac地址,如图1.9所示,流表添加成功。

 

1.9:添加的流表

 

在流表生效后,再次使流表访问proxy服务器,结果如图1.10所示。

 

 

 

1.10h1无法访问proxy服务器

如图1.9所示,h1无法访问proxy服务器,实现题目要求。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值