精品欧美一区二区三区在线观看 _久久久久国色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)

卡一卡二国产精品| heyzo久久| 天天综合日日夜夜精品| 精品一区日韩成人| 中文字幕第三页| 欧美在线影院| 精品国产免费人成电影在线观看四季| 国产成人无码精品久久久性色| jizz亚洲| 成人综合婷婷国产精品久久| 国产v综合ⅴ日韩v欧美大片 | 日韩国产一级片| 国产黄色在线| 9人人澡人人爽人人精品| 国产精品电影网| www日韩精品| 亚洲欧美在线专区| 亚洲日本中文字幕| 麻豆tv在线观看| 日本国产亚洲| 色综合网色综合| 青青草国产免费| 免费黄色在线看| 久久久国产精华| 久久99久久精品国产| 国产又粗又猛视频| 日韩专区中文字幕一区二区| 久久久久亚洲精品国产| 国产又粗又长又黄的视频| 欧美成人午夜77777| 5月丁香婷婷综合| 亚洲无吗一区二区三区| 樱桃视频成人在线观看| 亚洲国产精品影院| 国产 国语对白 露脸 | 欧美精品日韩三级| 肉色超薄丝袜脚交69xx图片 | 免费一级欧美在线观看视频| 欧美性猛交xxx| 久久久久久久9| dj大片免费在线观看| 国产精品区一区二区三区| 老牛影视免费一区二区| 熟妇人妻一区二区三区四区| 国产成人精品亚洲777人妖 | 日韩综合一区| 在线观看亚洲视频| 毛片aaaaaa| 第九色区aⅴ天堂久久香| 亚洲免费一级电影| 男人操女人动态图| 国产一区二区三区四区| 亚洲片在线观看| 成人精品在线观看视频| 人妖一区二区三区| 国产午夜精品理论片a级探花| 成人性生活免费看| 天堂av一区二区三区在线播放| 精品福利一区二区三区 | 亚洲综合精品视频| 久久国内精品自在自线400部| 国产精品久久久久7777婷婷| 免费视频网站在线观看入口| 快she精品国产999| 国产精品三级在线| 国产又黄又粗又硬| 国产福利91精品一区二区三区| 99re视频在线| 亚洲aaa在线观看| 国产日韩欧美精品电影三级在线| 亚洲v欧美v另类v综合v日韩v| 国产午夜在线观看| **欧美大码日韩| 无码熟妇人妻av在线电影| mm视频在线视频| 日韩欧美在线看| 亚洲36d大奶网| 麻豆精品一区| 亚洲国产精品va在线看黑人动漫| 800av在线播放| 精品国产一区一区二区三亚瑟 | 久久99精品久久久久久动态图| 91午夜理伦私人影院| 亚洲精品综合网| 久久亚洲综合色| 伊人婷婷久久| 成av人片在线观看www| 日本精品免费观看高清观看| 最新av免费在线观看| 北条麻妃在线一区二区免费播放 | 国产精品久久国产精麻豆96堂| 久久久久久久久久久久久久久久久久| 久久久久一本一区二区青青蜜月| 波多野结衣影片| 国产久卡久卡久卡久卡视频精品| 精品久久精品久久| 香蕉视频在线免费看| 亚洲无线码一区二区三区| www.国产区| 6080亚洲理论片在线观看| 亚洲人成网站免费播放| 激情综合网五月天| 天堂一区二区在线免费观看| 亚洲精品日韩av| 国产福利在线| 亚洲成a人片在线观看中文| 一级特黄性色生活片| 2020最新国产精品| 日韩在线观看免费网站 | 亚洲精品一线| 欧美日韩在线三区| 中文字幕无码人妻少妇免费| 香蕉视频国产精品 | 日本一区二区三区电影免费观看 | 国产在线精品日韩| 精品美女在线观看视频在线观看 | 亚洲视频一二区| 蜜臀av午夜一区二区三区| 欧美激情三级| 日韩中文字幕在线播放| 手机看片久久久| 粉嫩一区二区三区性色av| 中文字幕久久一区| 欧美影视资讯| 精品一区二区三区电影| 国产一级黄色av| 韩国三级在线一区| 天堂精品一区二区三区| 中文字幕在线中文字幕在线中三区| 欧美一级日韩免费不卡| 99国产精品无码| 日本va欧美va精品| 欧美在线一区二区三区四区| 国产粉嫩在线观看| 亚洲第一在线视频| 国产一级在线观看视频| 国产成人亚洲综合a∨猫咪| 亚洲精品偷拍视频| 99精品女人在线观看免费视频| 国产一区二区成人| 少妇一级淫片日本| 国产欧美精品一区二区色综合| 97国产精东麻豆人妻电影| 成人自拍在线| 国外成人在线视频| 视频污在线观看| 激情av一区二区| 黄色性生活一级片| 一区二区三区四区五区精品视频| 国产精品一区二区不卡视频| 国产网红女主播精品视频| 欧美大片日本大片免费观看| 欧美日韩亚洲国产另类| 国产福利一区在线| 欧美一区二区视频在线播放| 成人中文字幕视频| 欧美亚洲国产视频| 精品推荐蜜桃传媒| 欧美日韩精品电影| 国产大片免费看| 国产成人av电影在线播放| 久青草视频在线播放| 成人激情自拍| 欧美在线一区二区视频| 国产有码在线| 777午夜精品视频在线播放| 久久噜噜色综合一区二区| 国产在线视频不卡二| 日韩精品手机在线观看| 伊色综合久久之综合久久| 91av在线看| aⅴ在线视频男人的天堂 | 婷婷五月综合久久中文字幕| 欧美色另类天堂2015| 色噜噜噜噜噜噜| 国产精品资源站在线| 日韩中字在线观看| 精品久久久久中文字幕小说| 91精品在线影院| 白浆视频在线观看| 亚洲天堂av在线免费| 国产精品人人爽| 婷婷成人综合网| 欧美日韩生活片| 成人美女视频在线观看18| 久久久免费视频网站| 99久久99热这里只有精品| 成人动漫视频在线观看完整版| 中文字幕影音在线| 久久国产精品视频| 清纯唯美亚洲色图| 91精品国产色综合久久不卡电影| 麻豆一区二区三区精品视频| 久久久国产精品午夜一区ai换脸| 一个人看的视频www| 久久xxxx| 日本香蕉视频在线观看| 国产精品免费99久久久| www久久99| 国产91在线播放精品| 午夜精品理论片| 欧美激情办公室videoshd| 亚洲精品98久久久久久中文字幕| 在线免费观看一级片| 五月综合激情日本mⅴ| 99成人在线观看| 久久影院午夜论| 久久无码专区国产精品s| 美日韩一区二区三区| 日本中文字幕亚洲| 91成人精品视频| 神马影院午夜我不卡| 免费看久久久| 99免费在线观看视频| 国产麻豆一区| 日韩美女福利视频| 国产精品探花在线| 美女视频久久黄| 香蕉视频免费在线播放| 亚洲精品电影网| 黄色www视频| 欧美一区二区三区四区久久 | 精品国产三级电影在线观看| 中文字幕欧美人妻精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲宅男天堂在线观看无病毒| 岛国片在线免费观看| 久久久国产综合精品女国产盗摄| 无码精品一区二区三区在线播放| 国产91丝袜在线播放0| 五月花丁香婷婷| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲熟妇av一区二区三区| 亚洲美女色禁图| 日本午夜激情视频| 亚洲福利精品| 欧美精品久久久久久久免费| 欧美日韩影院| 国产日韩亚洲欧美在线| 欧美阿v一级看视频| 少妇高潮大叫好爽喷水| 亚洲欧美网站在线观看| 国产日产欧美一区二区| 女人色偷偷aa久久天堂| 青青视频免费在线观看| 91成人免费| 国产精品视频二| 国产精品v欧美精品v日本精品动漫| 欧美日韩dvd| 最新成人av网站| 欧美激情视频免费看| 久久高清免费观看| 黄色免费网址大全| 国产精品无码永久免费不卡| 一区二区三区精品视频在线观看| 日韩国产一级片| 在线综合亚洲| 欧美日韩在线中文| 久久久精品日韩| 国产理论在线播放| 精品一区二区综合| 深夜福利网站在线观看| 国产91在线观看| 无码人妻精品一区二区三区温州| 2021久久国产精品不只是精品| av中文字幕免费观看| 国产精品久久精品日日| 国产一区二区播放| 亚洲国产精品麻豆| av中文在线播放| 欧美亚洲禁片免费| 国产欧美综合视频| 精品国产乱码久久久久久久久 | 国产福利一区二区三区在线视频| 97中文字幕在线观看| 91视频一区二区三区| 中文字幕被公侵犯的漂亮人妻| 国产精品美女久久久久高潮| 国产大学生自拍| 亚洲第一狼人社区| 久草热在线观看| 欧美一级艳片视频免费观看| 午夜影院在线视频| 中文字幕亚洲综合| 欧美日韩在线视频免费观看| 91av视频在线免费观看| 国产香蕉久久| 国产一区二区三区四区五区在线| 国产一区二区在线| 屁屁影院ccyy国产第一页| 免费亚洲视频| 日日夜夜精品视频免费观看| 91欧美激情一区二区三区成人| 最新av电影网站| 欧美日韩免费在线| 国产内射老熟女aaaa∵| 亚洲精品一区中文| 伊人手机在线| 国产精品高潮粉嫩av| 91成人在线精品视频| 色姑娘综合网| 在线精品观看| 国内av一区二区| 久久先锋影音av| 久久无码精品丰满人妻| 欧美日韩在线直播| 日韩a在线观看| 欧美精品videosex性欧美| 欧美成人家庭影院| 欧美日韩一区二区视频在线| 欧美精品国产| 看看黄色一级片| 国产欧美精品一区二区三区四区 | heyzo在线欧美播放| 国产日韩av高清| 亚洲人成网www| 久久成人福利视频| 国产伦精品一区二区三区免费| av女人的天堂| 狠狠色狠色综合曰曰| 亚洲国产一二三区| 免费av一区二区| 日韩综合av| 亚洲国产精品久久久久久女王| 亚洲激情黄色| www.美色吧.com| 一区二区三区日韩| 国产人妖一区二区三区| 在线日韩欧美视频| 香蕉视频亚洲一级| 久久婷婷开心| 亚洲国产精品一区制服丝袜| 欧美性猛交xx| 亚洲精品日韩综合观看成人91| 一二三四区视频| 日韩中文理论片| 婷婷丁香久久| 国产精品av免费| 狠狠色狠狠色合久久伊人| 少妇无套高潮一二三区| 91精品福利视频| 黄色片在线看| 国产精品对白刺激| 成人激情在线| 久热在线视频观看| 国产精品久久久久久一区二区三区| 最新在线中文字幕| 中文字幕亚洲一区二区三区| 玖玖精品在线| 最近看过的日韩成人| 国产制服丝袜一区| 青青草激情视频| 欧美v日韩v国产v| 国产污视频在线播放| 久久人人爽爽人人爽人人片av| 欧美一级二区| 日本猛少妇色xxxxx免费网站| 欧美日韩一区二区电影| 免费在线看黄网站| 亚洲一区二区三| 精品9999| 在线观看日本中文字幕| 在线精品视频小说1| 天天综合视频在线观看| 亚洲iv一区二区三区| 极品少妇一区二区三区| 精品人妻一区二区三区日产乱码卜| 一本大道av伊人久久综合| 1769视频在线播放免费观看| 91亚洲精品久久久久久久久久久久 | 亚洲精品自在久久| 国产成人77亚洲精品www| 影音先锋成人资源网站| 成人av电影在线| 波多野结衣视频免费观看| 久久九九热免费视频| 国产精品qvod| 日日噜噜夜夜狠狠| 亚洲精品欧美激情| 色播色播色播色播色播在线| 国产精品久久一区| 国内精品久久久久国产盗摄免费观看完整版 | 深夜福利一区二区| 亚洲视频精选| 美女网站免费观看视频| 亚洲精品你懂的| 四虎精品成人免费网站| 国产免费一区视频观看免费| 国产精品v欧美精品v日本精品动漫| 妺妺窝人体色WWW精品| 日韩亚洲欧美高清| 欧美一区国产| www.av91| 国产精品二三区| 亚洲 美腿 欧美 偷拍| 91日本在线观看| 久久永久免费| 日韩 国产 在线| www.亚洲免费视频| 在线视频亚洲专区|