精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring Boot 實(shí)現(xiàn) SNMP 應(yīng)用、發(fā)送與解析

開發(fā) 前端
SNMP架構(gòu)主要由三個(gè)關(guān)鍵部分組成:網(wǎng)絡(luò)管理系統(tǒng)(Network Management System,NMS)、代理(Agent)以及管理信息庫(Management Information Base,MIB)。

前言

圖片圖片

隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大以及網(wǎng)絡(luò)設(shè)備數(shù)量的急劇增加,如何高效地監(jiān)控和管理這些設(shè)備成為了網(wǎng)絡(luò)管理員面臨的一大挑戰(zhàn)。簡單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management ProtocolSNMP)應(yīng)運(yùn)而生,它作為一種應(yīng)用層協(xié)議,為網(wǎng)絡(luò)管理提供了標(biāo)準(zhǔn)化的解決方案,極大地簡化了網(wǎng)絡(luò)管理的復(fù)雜性。

基礎(chǔ)概述

協(xié)議架構(gòu)

SNMP架構(gòu)主要由三個(gè)關(guān)鍵部分組成:網(wǎng)絡(luò)管理系統(tǒng)(Network Management SystemNMS)、代理(Agent)以及管理信息庫(Management Information BaseMIB)。NMS 在網(wǎng)絡(luò)管理中充當(dāng)管理者的角色,通常運(yùn)行在服務(wù)器上,負(fù)責(zé)向各個(gè)設(shè)備上的Agent發(fā)送管理請(qǐng)求,以查詢或修改設(shè)備的參數(shù)值。同時(shí),NMS也接收來自Agent主動(dòng)發(fā)送的Trap信息,從而及時(shí)了解被管理設(shè)備的狀態(tài)變化。Agent則是駐留在被管理設(shè)備中的代理進(jìn)程,其主要職責(zé)是維護(hù)設(shè)備的信息數(shù)據(jù),并對(duì)NMS發(fā)送的請(qǐng)求做出響應(yīng),將操作結(jié)果反饋給 NMS。當(dāng)設(shè)備發(fā)生故障或其他重要事件時(shí),Agent會(huì)主動(dòng)向NMS發(fā)送Trap信息。MIB則是網(wǎng)絡(luò)設(shè)備上被 SNMP 管理的參數(shù)集合,它采用層次化的結(jié)構(gòu),類似于文件系統(tǒng)的目錄結(jié)構(gòu),每個(gè)管理對(duì)象在MIB中都有其唯一的位置標(biāo)識(shí),即對(duì)象標(biāo)識(shí)符(Object IdentifierOID)。通過OIDNMSAgent能夠準(zhǔn)確地定位和操作特定的管理對(duì)象。

工作原理

SNMP基于請(qǐng)求/響應(yīng)模型進(jìn)行工作。NMS通過向Agent發(fā)送不同類型的請(qǐng)求報(bào)文來實(shí)現(xiàn)對(duì)設(shè)備的管理操作。常見的請(qǐng)求類型包括 Get 請(qǐng)求,用于從Agent獲取一個(gè)或多個(gè)參數(shù)值;Set請(qǐng)求,用于修改 Agent 上的一個(gè)或多個(gè)參數(shù)值;GetNext請(qǐng)求,通常用于遍歷 MIB 中的表結(jié)構(gòu),獲取下一個(gè)對(duì)象的值;GetBulk請(qǐng)求,適用于一次性獲取大量數(shù)據(jù),特別是在檢索表格信息時(shí)能顯著提高效率;Inform請(qǐng)求,Agent使用該請(qǐng)求向NMS發(fā)送通知,與Trap類似,但Inform請(qǐng)求需要NMS進(jìn)行確認(rèn)。Agent在接收到NMS的請(qǐng)求后,會(huì)根據(jù)請(qǐng)求類型在MIB中查找或修改相應(yīng)的管理對(duì)象,并將結(jié)果封裝在響應(yīng)報(bào)文中返回給 NMS。當(dāng)設(shè)備出現(xiàn)特定事件(如接口狀態(tài)改變、設(shè)備故障等)時(shí),Agent會(huì)主動(dòng)向NMS發(fā)送Trap報(bào)文,通知NMS設(shè)備端發(fā)生的情況。

版本演進(jìn)

SNMP經(jīng)歷了多個(gè)版本的發(fā)展,每個(gè)版本都在功能和安全性方面有所改進(jìn)。

  • SNMPv1:作為最早的版本,提供了基本的網(wǎng)絡(luò)管理功能。它采用簡單的團(tuán)體名(Community String)進(jìn)行認(rèn)證,安全性相對(duì)較低,但在早期的網(wǎng)絡(luò)環(huán)境中發(fā)揮了重要作用。
  • SNMPv2c:是SNMPv1的增強(qiáng)版,增加了改進(jìn)的錯(cuò)誤處理機(jī)制和批量數(shù)據(jù)檢索功能(如GetBulk操作),提高了數(shù)據(jù)獲取的效率。然而,它仍然使用團(tuán)體名進(jìn)行認(rèn)證,在安全性方面并沒有本質(zhì)的提升。
  • SNMPv3:在安全性方面做了顯著改進(jìn),支持用戶級(jí)別的認(rèn)證和加密。它提供了三種主要的安全功能:認(rèn)證,用于確保消息的發(fā)送者身份真實(shí)可靠;加密,保護(hù)數(shù)據(jù)在傳輸過程中的機(jī)密性,防止數(shù)據(jù)被竊取;消息完整性,保證消息在傳輸過程中未被篡改。通過這些安全特性,SNMPv3能夠更好地滿足現(xiàn)代網(wǎng)絡(luò)對(duì)安全性的要求,適用于對(duì)安全較為敏感的網(wǎng)絡(luò)環(huán)境。
SNMP 應(yīng)用場(chǎng)景

網(wǎng)絡(luò)設(shè)備監(jiān)控

SNMP廣泛應(yīng)用于對(duì)路由器、交換機(jī)、無線接入點(diǎn)等各類網(wǎng)絡(luò)設(shè)備的狀態(tài)和性能監(jiān)控。通過SNMP,網(wǎng)絡(luò)管理員可以實(shí)時(shí)獲取設(shè)備的系統(tǒng)信息,如設(shè)備類型、操作系統(tǒng)版本、IP地址等;監(jiān)控接口狀態(tài),包括接口的連接狀態(tài)、流量統(tǒng)計(jì)、帶寬利用率等;了解設(shè)備的CPU和內(nèi)存使用率等關(guān)鍵性能指標(biāo)。例如,通過持續(xù)監(jiān)測(cè)路由器接口的流量,管理員可以及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)擁塞的跡象,并采取相應(yīng)的措施進(jìn)行優(yōu)化,如調(diào)整路由策略或增加帶寬。

網(wǎng)絡(luò)性能管理

借助SNMP收集設(shè)備的流量統(tǒng)計(jì)和性能指標(biāo),管理員可以深入分析網(wǎng)絡(luò)流量的分布情況和變化趨勢(shì)。通過對(duì)網(wǎng)絡(luò)流量的分析,能夠識(shí)別出網(wǎng)絡(luò)中的瓶頸節(jié)點(diǎn),即那些在特定時(shí)間段內(nèi)由于負(fù)載過高而導(dǎo)致網(wǎng)絡(luò)性能下降的設(shè)備或鏈路。針對(duì)這些瓶頸,管理員可以采取針對(duì)性的優(yōu)化措施,如升級(jí)硬件設(shè)備、優(yōu)化網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)或調(diào)整網(wǎng)絡(luò)應(yīng)用的流量分配策略,從而提升整個(gè)網(wǎng)絡(luò)的性能和用戶體驗(yàn)。

故障檢測(cè)和告警

SNMPTrap功能在故障檢測(cè)和告警方面發(fā)揮著重要作用。當(dāng)網(wǎng)絡(luò)設(shè)備發(fā)生故障(如硬件故障、鏈路中斷、軟件錯(cuò)誤等)時(shí),設(shè)備上的Agent會(huì)立即向NMS發(fā)送Trap消息,通知管理員設(shè)備出現(xiàn)的異常情況。管理員可以根據(jù)接收到的Trap信息快速定位故障設(shè)備和故障類型,及時(shí)采取修復(fù)措施,減少故障對(duì)網(wǎng)絡(luò)運(yùn)行的影響。例如,當(dāng)交換機(jī)的某個(gè)端口出現(xiàn)鏈路故障時(shí),交換機(jī)的Agent會(huì)向NMS發(fā)送相應(yīng)的Trap告警,管理員可以迅速排查該端口的連接情況,確定故障原因并進(jìn)行修復(fù)。

設(shè)備配置管理

SNMP還可以用于遠(yuǎn)程配置設(shè)備參數(shù),實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)設(shè)備的集中管理。管理員可以通過NMSAgent發(fā)送Set請(qǐng)求,修改設(shè)備的配置參數(shù),如調(diào)整網(wǎng)絡(luò)設(shè)備的IP地址、子網(wǎng)掩碼、路由表項(xiàng)等;啟用或禁用設(shè)備的某些特性,如端口鏡像、QoS策略等。這種遠(yuǎn)程配置管理方式大大簡化了設(shè)備管理的流程,提高了管理效率,尤其適用于大規(guī)模網(wǎng)絡(luò)環(huán)境中對(duì)眾多設(shè)備的統(tǒng)一管理。

SNMP 集成

代碼案例

pom.xml中添加以下依賴:

<dependency>
    <groupId>org.snmp4j</groupId>
    <artifactId>snmp4j</artifactId>
    <version>2.8.4</version>
</dependency>

application.yml配置示例:

snmp:
  target:
    ip: 192.168.1.1
    port: 161
  version: v2c
  community: public
  timeout: 3000
  retries: 2
  trap:
    listener-port: 162
配置類實(shí)現(xiàn):
@Configuration
@ConfigurationProperties(prefix = "snmp")
public class SnmpConfig {
    private TargetConfig target;
    private String version;
    private String community;
    private int timeout;
    private int retries;
    private TrapConfig trap;

    // 內(nèi)部靜態(tài)類用于封裝目標(biāo)設(shè)備配置
    public static class TargetConfig {
        private String ip;
        private int port;
        // getters and setters
    }

    public static class TrapConfig {
        private int listenerPort;
        // getters and setters
    }

    // getters and setters
}
SNMP 客戶端初始化
@Configuration
public class SnmpClientConfig {

    @Autowired
    private SnmpConfig snmpConfig;

    @Bean
    public Snmp snmp() throws IOException {
        // 創(chuàng)建傳輸層對(duì)象(UDP協(xié)議)
        TransportMapping<?> transport = new DefaultUdpTransportMapping();
        Snmp snmp = new Snmp(transport);
        transport.listen(); // 啟動(dòng)監(jiān)聽(用于接收響應(yīng))
        return snmp;
    }

    @Bean
    public Target snmpTarget() {
        Address targetAddress = GenericAddress.parse(
            "udp:" + snmpConfig.getTarget().getIp() + "/" + snmpConfig.getTarget().getPort()
        );
        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString(snmpConfig.getCommunity()));
        target.setAddress(targetAddress);
        
        // 設(shè)置SNMP版本
        if ("v3".equals(snmpConfig.getVersion())) {
            target.setVersion(SnmpConstants.version3);
        } elseif ("v2c".equals(snmpConfig.getVersion())) {
            target.setVersion(SnmpConstants.version2c);
        } else {
            target.setVersion(SnmpConstants.version1);
        }
        
        target.setTimeout(snmpConfig.getTimeout()); // 超時(shí)時(shí)間(毫秒)
        target.setRetries(snmpConfig.getRetries()); // 重試次數(shù)
        return target;
    }
}
Get 請(qǐng)求實(shí)現(xiàn)

通過封裝SNMP4JAPI,實(shí)現(xiàn)基于Spring BootGet請(qǐng)求發(fā)送功能,用于獲取設(shè)備的指定MIB對(duì)象值。

@Service
public class SnmpService {

    @Autowired
    private Snmp snmp;

    @Autowired
    private Target target;

    /**
     * 發(fā)送Get請(qǐng)求獲取單個(gè)OID的值
     * @param oid 目標(biāo)對(duì)象標(biāo)識(shí)符
     * @return 解析后的結(jié)果值
     */
    public String get(String oid) throws IOException {
        // 創(chuàng)建Get請(qǐng)求PDU
        PDU pdu = new PDU();
        pdu.add(new VariableBinding(new OID(oid)));
        pdu.setType(PDU.GET);

        // 發(fā)送請(qǐng)求并獲取響應(yīng)
        ResponseEvent event = snmp.send(pdu, target);
        PDU response = event.getResponse();

        if (response == null) {
            throw new RuntimeException("未收到SNMP響應(yīng)");
        } elseif (response.getErrorStatus() != PDU.noError) {
            throw new RuntimeException(
                "SNMP錯(cuò)誤: " + response.getErrorStatusText() + 
                " (錯(cuò)誤狀態(tài)碼: " + response.getErrorStatus() + ")"
            );
        }

        // 解析響應(yīng)結(jié)果
        VariableBinding binding = response.get(0);
        return binding.getVariable().toString();
    }

    /**
     * 批量獲取多個(gè)OID的值
     * @param oids OID列表
     * @return 以Map形式返回OID與對(duì)應(yīng)值的映射
     */
    public Map<String, String> getBulk(List<String> oids) throws IOException {
        PDU pdu = new PDU();
        for (String oid : oids) {
            pdu.add(new VariableBinding(new OID(oid)));
        }
        pdu.setType(PDU.GETBULK);
        pdu.setMaxRepetitions(5); // 設(shè)置批量獲取的最大重復(fù)次數(shù)

        ResponseEvent event = snmp.send(pdu, target);
        PDU response = event.getResponse();
        // 響應(yīng)處理邏輯(省略,類似單個(gè)Get請(qǐng)求)
        
        Map<String, String> result = new HashMap<>();
        for (VariableBinding binding : response.getVariableBindings()) {
            result.put(binding.getOid().toString(), binding.getVariable().toString());
        }
        return result;
    }
}
Set 請(qǐng)求實(shí)現(xiàn)

Set請(qǐng)求用于修改設(shè)備的配置參數(shù),實(shí)現(xiàn)方式與Get請(qǐng)求類似,但需要指定修改后的值。

/**
 * 發(fā)送Set請(qǐng)求修改設(shè)備參數(shù)
 * @param oid 目標(biāo)OID
 * @param value 要設(shè)置的新值
 * @return 是否設(shè)置成功
 */
public boolean set(String oid, String value) throws IOException {
    PDU pdu = new PDU();
    Variable variable = new OctetString(value);
    pdu.add(new VariableBinding(new OID(oid), variable));
    pdu.setType(PDU.SET);

    ResponseEvent event = snmp.send(pdu, target);
    PDU response = event.getResponse();

    return response != null && response.getErrorStatus() == PDU.noError;
}
Trap 監(jiān)聽與處理

Trap是設(shè)備主動(dòng)向管理端發(fā)送的事件通知,Spring Boot應(yīng)用可通過監(jiān)聽指定端口接收并處理Trap消息。

@Slf4j
@Component
public class SnmpTrapReceiver implements ApplicationRunner, CommandResponder {

    @Override
    public void processPdu(CommandResponderEvent commandResponderEvent) {
        try{
            Map<String,Object> requestMap = new HashMap<>();
            if (commandResponderEvent.getPDU().getType() == PDU.TRAP || commandResponderEvent.getPDU().getType() == PDU.V1TRAP) {
                PDU pdu=commandResponderEvent.getPDU();
                if (pdu != null) {
                    Vector<? extends VariableBinding> resVBs = pdu.getVariableBindings();
                    for (int i = 0; i < resVBs.size(); i++) {
                        VariableBinding recVB = resVBs.elementAt(i);
                        String oid = recVB.getOid().toString();
                        Variable variable = recVB.getVariable();
                        String valueStr = "";
                        if(variable instanceof OctetString){
                            OctetString octetString = (OctetString) variable;
                            valueStr = StrUtil.utf8Str(octetString.getValue());
                        }elseif (variable instanceof Gauge32) {
                            Gauge32 gauge32 = (Gauge32) variable;
                            valueStr = String.valueOf(gauge32.getValue());
                        }elseif (variable instanceof Integer32) {
                            Integer32 integer32 = (Integer32) variable;
                            valueStr = String.valueOf(integer32.getValue());
                        }else {
                            valueStr = variable.toString();
                        }
                        log.info("oid:" + oid + " value:" + valueStr);
                    }
                }
            }
        }catch (Exception e){
            log.error("處理Trap信息異常,異常信息為:{}", e.getMessage());
        }
    }


    @Override
    public void run(ApplicationArguments args){
        try {
            ThreadPool threadPool = ThreadPool.create("snmptrap", 10);
            MultiThreadedMessageDispatcher dispatcher = new MultiThreadedMessageDispatcher(threadPool, new MessageDispatcherImpl());
            Address listenAddress = GenericAddress.parse(System.getProperty("snmp4j.listenAddress", "udp:192.168.1.1/162"));
            TransportMapping transport;
            // 對(duì)TCP與UDP協(xié)議進(jìn)行處理
            if (listenAddress instanceof UdpAddress) {
                transport = new DefaultUdpTransportMapping((UdpAddress) listenAddress);
                log.info("使用UDP協(xié)議");
            } else {
                transport = new DefaultTcpTransportMapping((TcpAddress) listenAddress);
                log.info("使用TCP協(xié)議");
            }
            Snmp snmp = new Snmp(dispatcher, transport);
            snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1());
            snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c());
            snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3());
            USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
            SecurityModels.getInstance().addSecurityModel(usm);
            snmp.listen();
            snmp.addCommandResponder(this);
            log.info("開始監(jiān)聽Trap信息");
        } catch (IOException e) {
            log.info("監(jiān)聽Trap信息異常,異常信息為:{}", e.getMessage());
        }
    }
}
安全配置(SNMPv3)

對(duì)于需要高安全性的場(chǎng)景,可配置SNMPv3的認(rèn)證與加密功能。

public Target createV3Target() {
    UserTarget target = new UserTarget();
    target.setAddress(GenericAddress.parse("udp:192.168.1.1/161"));
    target.setVersion(SnmpConstants.version3);
    target.setSecurityLevel(SecurityLevel.AUTH_PRIV); // 認(rèn)證并加密
    target.setSecurityName(new OctetString("admin")); // 用戶名
    return target;
}

// 初始化SNMPv3用戶
@Bean
public void initV3User() throws IOException {
    USM usm = new USM(SecurityProtocols.getInstance(), 
        new OctetString(MPv3.createLocalEngineID()), 0);
    SecurityModels.getInstance().addSecurityModel(usm);
    
    // 添加用戶(認(rèn)證密碼、加密密碼)
    snmp.getUSM().addUser(
        new OctetString("admin"),
        new UsmUser(
            new OctetString("admin"),
            AuthMD5.ID, new OctetString("authPass123"),
            PrivDES.ID, new OctetString("privPass123")
        )
    );
}


責(zé)任編輯:武曉燕 來源: 一安未來
相關(guān)推薦

2022-02-09 20:39:52

Actuator應(yīng)用監(jiān)控

2023-12-14 13:28:00

Spring流程Web

2017-09-20 09:46:38

Spring BootSpring Clou內(nèi)存

2023-10-15 22:40:25

插件JIB

2024-04-02 08:17:40

2020-08-05 08:30:25

Spring BootJavaSE代碼

2025-07-25 09:24:16

2021-07-09 06:48:29

Spring Boot應(yīng)用Keycloak

2025-02-13 07:45:26

APISpringHTTP

2010-06-29 16:53:08

2022-02-16 10:59:54

Spring端口郵件

2025-02-18 07:37:21

2024-09-30 11:51:07

2025-02-19 16:00:00

SpringBootDeepSeek智能

2016-10-14 14:16:28

Spring BootJava應(yīng)用

2018-10-22 15:34:31

Spring Boo監(jiān)控視化

2018-05-25 16:32:45

Spring BootJava開發(fā)

2024-03-25 08:45:18

郵件發(fā)送Spring應(yīng)用程序

2010-06-28 15:13:52

SNMP協(xié)議

2010-07-05 11:35:58

IPX協(xié)議SNMP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品99久久久久久久久久久久| 日韩女优毛片在线| 图片区小说区区亚洲五月| 中文字幕av在线免费观看| 午夜精品毛片| 精品国产乱码久久| 美女网站免费观看视频| 粗大黑人巨茎大战欧美成人| 国产91精品一区二区| 日本不卡免费高清视频| 久久99久久99精品免费看小说| 深夜激情久久| 91久久奴性调教| 2022中文字幕| 国产香蕉在线| 成人免费毛片高清视频| 国产精品第10页| 久久久久噜噜噜亚洲熟女综合| 欧美人与牛zoz0性行为| 日韩欧美123| 性chinese极品按摩| 97人人在线视频| 中文字幕亚洲欧美在线不卡| 精品免费日产一区一区三区免费| 一区二区三区黄| 老司机一区二区三区| 超碰精品一区二区三区乱码| 蜜桃精品一区二区| 超碰地址久久| 欧美电影一区二区三区| 久久九九国产视频| 色戒汤唯在线观看| 亚洲午夜电影在线观看| 先锋影音男人资源| 91青青在线视频| 久久综合九色综合97婷婷| 不卡视频一区二区三区| 99草在线视频| 精品一区二区影视| 国产精品一区二区三| 在线观看 亚洲| 亚洲伊人观看| 韩国三级电影久久久久久| 欧美激情图片小说| 亚洲91中文字幕无线码三区| 国产一区二区三区欧美| 偷拍女澡堂一区二区三区| 麻豆视频久久| 91精品婷婷国产综合久久性色| 嫩草av久久伊人妇女超级a| 日本不良网站在线观看| 性久久久久久久久| 成人av在线不卡| 黑人玩欧美人三根一起进| 亚洲男人的天堂在线aⅴ视频 | 一区二区视频免费观看| 免费日韩av片| 国产成人综合精品| 中文字幕在线网址| 久久99久国产精品黄毛片色诱| 国产精品香蕉国产| 国产视频手机在线观看| 国产一区二区三区视频在线播放| 亚洲a在线播放| 国产福利第一页| 国产成人精品一区二| 147欧美人体大胆444| www.色视频| 粉嫩久久99精品久久久久久夜| caoporen国产精品| 五月天婷婷社区| 久久一区二区三区四区| 日本在线视频不卡| 久久黄色美女电影| 亚洲精品菠萝久久久久久久| 日本中文字幕在线视频观看| 国产激情在线播放| 色域天天综合网| 亚洲一级免费在线观看| 欧美特黄不卡| 亚洲福利在线视频| 国产精品av久久久久久无| 久久免费大视频| 色综合久久天天综线观看| 国产一级在线播放| 久久精品123| 国产精品永久免费| 人妻一区二区三区| 国产色产综合色产在线视频| 中国一级大黄大黄大色毛片| 涩涩在线视频| 欧美区视频在线观看| 国产乱淫av片| 国产精品一区二区99| 久久国产精品影视| 97免费在线观看视频| 美腿丝袜在线亚洲一区| 91九色蝌蚪成人| 九色视频在线播放| 亚洲美女精品一区| 波多野结衣作品集| 国产精品久av福利在线观看| 国产亚洲美女久久| 久久久国产精品人人片| 丝袜美腿亚洲综合| 91手机在线播放| 国产中文在线| 亚洲妇熟xx妇色黄| 在线观看国产中文字幕| 日韩有码av| 精品国产一区二区三区久久久狼| 国产午夜视频在线| 九九精品视频在线看| 久久久婷婷一区二区三区不卡| 免费a级在线播放| 欧美性极品xxxx做受| 伊人免费视频二| 国产一区二区三区91| 欧美精品国产精品日韩精品| 一区二区三区午夜| 久久久精品日韩欧美| 黄色成人在线免费观看| 久久91视频| 亚洲欧美日韩一区在线| 日本少妇裸体做爰| 国产精品主播直播| 在线成人性视频| 性高爱久久久久久久久| 亚洲精品国精品久久99热| 国产suv一区二区三区| 开心九九激情九九欧美日韩精美视频电影 | xxxxxx国产| 国产一区二区调教| 午夜一区二区三区| 亚洲天堂资源| 亚洲国产精品美女| 精品少妇爆乳无码av无码专区| 精品一区二区三区在线播放| 日韩精品大片| 亚洲精品一级二级| 亚洲码在线观看| 亚洲免费激情视频| 成人av网站免费观看| 黄色污污在线观看| 国产一区二区av在线| 日韩亚洲欧美中文在线| 中文字幕人妻一区二区在线视频 | 亚洲少妇xxx| 麻豆精品在线播放| 天堂精品一区二区三区| 97久草视频| 国产女主播在线直播| 欧美色xxxx| 国产黄色网址在线观看| 亚洲中字在线| 欧美一区1区三区3区公司| 最近高清中文在线字幕在线观看1| 亚洲第一天堂无码专区| 日韩成年人视频| 99精品欧美一区| 18禁免费观看网站| 亚洲国产国产| 国产精品成熟老女人| 日韩免费网站| 欧美一区二区三区啪啪| 我家有个日本女人| 成人美女视频在线观看18| 久久精品国产sm调教网站演员| 欧美一级二级三级视频| 热门国产精品亚洲第一区在线| 国产中文字幕在线播放| 欧美精品久久天天躁| 亚洲色婷婷一区二区三区| 国产99久久久国产精品潘金| 无码av天堂一区二区三区| 日韩理论电影中文字幕| 国产精品福利观看| 黄网址在线观看| 亚洲大胆人体av| 69亚洲精品久久久蜜桃小说| 国产精品天美传媒| 欧美日韩一区二区区别是什么| 伊人精品在线| 日韩国产精品一区二区三区| 欧美亚洲人成在线| 久久久久久久久久国产| 免费动漫网站在线观看| 欧美日韩另类国产亚洲欧美一级| 亚洲国产美女视频| 久久综合色综合88| 在线播放免费视频| 国产精品久久久免费| 亚洲精品高清视频| 国产主播性色av福利精品一区| 日本亚洲欧洲色α| 黄色免费在线网站| 亚洲国产精品人久久电影| 夜夜躁日日躁狠狠久久av| 亚洲精品精品亚洲| 午夜在线观看一区| 丰满少妇久久久久久久| 午夜激情福利在线| 亚洲小说欧美另类社区| 亚洲欧美久久234| 猫咪成人在线观看| 国产精品小说在线| 自拍视频在线看| 欧美激情影音先锋| 1769视频在线播放免费观看| 亚洲国产精品久久久久秋霞蜜臀 | 疯狂撞击丝袜人妻| 久久综合资源网| 精品久久久久久无码人妻| 欧美a一区二区| 久激情内射婷内射蜜桃| 一个色综合网| 亚洲精品一区二区三区樱花 | 亚洲欧美第一页| www男人的天堂| 欧美猛男gaygay网站| 国产无套丰满白嫩对白| 亚洲在线视频网站| 永久免费看mv网站入口| 国产日产欧美精品一区二区三区| 国产艳妇疯狂做爰视频| 国模娜娜一区二区三区| 3d动漫精品啪啪一区二区竹菊| 91亚洲一线产区二线产区| 久久国产三级精品| 一本色道无码道dvd在线观看| 欧美久久99| 97超碰人人爱| 国产二区精品| 亚洲精品永久www嫩草| 中文字幕av一区二区三区人| 大波视频国产精品久久| 成人豆花视频| 成人黄色av网| 日韩成人一区| 国产日韩欧美中文| 国产第一亚洲| 国产精品久久视频| 最新日韩一区| 国产精品久久久久9999| 欧美aa视频| 日本视频久久久| 欧美片第1页| 日韩美女主播视频| 日韩电影网站| 国产成人在线一区二区| 天天综合网站| 国产精品网址在线| 最新亚洲国产| 亚洲最大福利视频网站| 伊人久久亚洲| 国产一区二区在线网站| 欧美大片网址| 免费看国产精品一二区视频| 自拍亚洲一区| 四虎影院一区二区三区| 久久成人综合| 中文字幕精品在线播放| 欧美精品午夜| 3d动漫一区二区三区| 午夜在线精品| 五月婷婷丁香色| 国产在线视视频有精品| 国产又粗又猛又爽又黄| www.色精品| 91网站免费视频| 国产精品高潮久久久久无| 成人免费精品动漫网站| 亚洲自拍偷拍网站| 国产成人精品一区二三区| 色狠狠色噜噜噜综合网| 一级黄色a视频| 日韩欧美123| 男女av在线| 久久久精品美女| 91超碰在线免费| 国产成人激情视频| 999色成人| 久99久在线| 天天综合亚洲| 欧日韩免费视频| 日韩电影在线观看电影| www.亚洲自拍| 久久网站最新地址| 成人在线观看小视频| 日本久久一区| 日韩精品久久久久久久玫瑰园| 成人综合影院| 欧美国产日韩视频| 美女一区网站| 99re视频在线播放| 精品欧美久久| 男的插女的下面视频| 免费成人av资源网| 中文字幕一区二区人妻电影丶| 国产亚洲欧美色| 免费在线视频一区二区| 日本黄色一区二区| www.四虎在线观看| 这里精品视频免费| 成人女同在线观看| 国产日韩欧美黄色| 亚洲精品中文字幕99999| 一级全黄肉体裸体全过程| 亚洲一区二区三区免费在线观看 | 在线免费一区| 麻豆成人精品| 日本一区二区免费视频| 国产精品久久久久久久久动漫 | 久草在线资源站资源站| 国产精品青青在线观看爽香蕉| 成人另类视频| 天天做天天爱天天高潮| 日本午夜一区二区| 一区二区视频观看| 亚洲成av人片在线| 国产乱码精品一区二区| 亚洲色图美腿丝袜| 岛国av在线网站| 成人av片网址| 欧美在线国产| 国产大片一区二区三区| 国产精品毛片无遮挡高清| 日本中文字幕在线| 亚洲第一网站免费视频| 国产极品人妖在线观看| 91嫩草在线| 亚洲午夜精品一区二区国产| 超碰在线播放91| 国产视频一区二区在线| 亚洲大片免费观看| 亚洲午夜精品久久久久久性色| 欧美伦理91| 欧美13一14另类| 亚欧成人精品| 国产精品成人一区二区三区电影毛片| 亚洲国产日韩精品| 国产1区在线观看| 欧美日韩aaaa| 成人福利一区| 成人性生活视频免费看| 99天天综合性| 青青草av在线播放| 精品调教chinesegay| 午夜伦理福利在线| 欧美日韩国产不卡在线看| 麻豆9191精品国产| 五月天婷婷丁香网| 欧美人与z0zoxxxx视频| www国产在线观看| 99视频网站| 亚洲乱码久久| 泷泽萝拉在线播放| 欧美无砖砖区免费| 麻豆视频网站在线观看| 91原创国产| 亚洲日本久久| 精品无人区无码乱码毛片国产| 91久久一区二区| 免费黄色在线| 国产成人免费观看| 在线亚洲伦理| 东京热无码av男人的天堂| 欧美狂野另类xxxxoooo| 在线观看男女av免费网址| 国产亚洲情侣一区二区无| 久久国产一二区| 手机看片国产日韩| 日韩视频一区二区在线观看| 视频在线观看入口黄最新永久免费国产| 超碰97人人人人人蜜桃| 欧美限制电影| 一级黄色免费毛片| 午夜精品福利久久久| 水莓100在线视频| 国产精品视频成人| 亚洲精品小说| 在线观看国产三级| 色老综合老女人久久久| 黄色在线论坛| 懂色中文一区二区三区在线视频| 韩日精品在线| 无码人妻精品一区二区三应用大全| 午夜精品久久久久久久久| 黄色片在线免费观看| 成人美女免费网站视频| 亚洲日本免费| 国产精品无码无卡无需播放器| 日韩一区二区免费在线观看| 另类视频在线| 亚洲精品成人自拍| 成人激情午夜影院| 日韩欧美一级大片| 欧美精品性视频| 五月天亚洲一区| 亚洲色图欧美自拍|