Linux之网络管理及相关命令

一、现今互联网模型

1、OSI七层模型

什么是OSI七层模型?

开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。

OSI七层模型的分类
  • 应用层
    • 工作在此层的协议:
      • 其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务
      • 工作在此层的协议: http,https,ftp,ldap,telnet,SNMP等应用协议
  • 表示层
    • 对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序所能理解 ,表示层的数据转换包括:数据的加密、压缩、格式转换等
  • 会话层
    • 管理主机之间的会议进程,即负责建立、管理、终止进程之间的会议,会话层还利用在数据中插入校验点来实现数据的同步
  • 传输层
    • 传输层是第一个端到端,即主机到主机的层次,传输层负责上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到商的差错控制和流量控制问题,在这一层,数据的单位为数据段(segment),即工作方式为:进程之间标记,通信如何完成,标记端口,即标记了源端口和目的端口
  • 网络层
    • 网络层负责对子网的数据包进行路由选择,网络层还可以实现拥塞控制,网际互连等功能,在这一层,数据的单位称为数据包,标记源和主机IP地址,工作在这层的传输单位称为"IP数据报文",其中标记了源IP地址和目的IP地址
    • 工作在此层的协议:IP(网络互联协议),RIP(路由信息协议),OSPF(开放式最短路径优先)。
  • 数据链路层
    • 提供可靠的传输,该层的作用包括:物理地址寻址、数据的成帧,流量控制 、数据检查、重发等,在这一层数据的传输单位称为"帧(frame)",其中标记了源MAC和目的MAC,其重要特性为最大传输单元了(MTU)为1500字节。
    • 工作在此层的协议:SDLC(同步数据链路控制 )、HDLC(高级数据链路控制)、PPP(点对点协议)、STP(生成树协议)
  • 物理层
    • 规定了各种机械特性、电气特性、功能特性以及过程特性。该层为上层提供了一个传输数据的物理媒体,在这一层数据的单位为"比特(bit)"

OSI七层实际应用再分层

1. 通信子网
  • 物理层
  • 数据链路层
  • 网络层
  • 传输层
实现如何将一个数据包发往另一台主机的
2. 资源子网
  • 会话层
  • 表示层
  • 应用层
实现数据的组织方式

2. TCP/IP四层模型

分类及协议

  • 应用层
    • 负责实现一切与应用相关的功能
    • 工作在此层的协议:FTP(文件传输协议)、HTTP(超文件传输协议)、DNS(域名服务协议)、SMTP(简单邮件传输协议)、NFS(网络文件系统协议)
  • 传输层
    • 负责提供可靠的传输服务
    • 工作在此层的协议:TCP(传输控制协议)、UDP(用户数据协议)
  • 网络层
    • 负责网络间的寻址数据传输
    • 工作在此层的协议:IP(网际协议)、ICMP(网际控制协议)、ARP(地址解析协议)、RARP(反向地址转换协议)
  • 数据链路层
    • 提供可选的数据传输

==============

MAC地址

  • MAC地址含义

MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置

  • MAC的表现格式

采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成224个不同的地址。MAC地址实际上就是适配器地址或适配器标识符EUI-48

  • MAC的表示方法
    • 00:2c:00:02:01:5F
  • MAC的工作位置
    • 数据链路层,标记源设备及目标设备地址

IP地址

  • IP地址的来源

IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”IP地址都由国际组织NIC(Network Information Center)负责统一分配,目前全世界共有三个这样的网络信息中心。   
* InterNIC:负责美国及其他地区    
* ENIC:负责欧洲地区  
* APNIC:负责亚太地区

  • IP地址的表示方法

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)

  • IP地址的工作位置
    • 网络层,标记源IP及目标IP地址
  • IP地址的分类
    • A类

      • 第一段为网络号,后有三段为主机号
        • 网络号表示方法:第一位零不变,后7位可以随意变化(0 000 0000 - 0 111 1111),即A类地址范围为1-127
      • 网络中的主机数量
        • 2^24-2个,其中全0表示网络位,全1表示广播地址
      • 默认子网掩码
        • 255.0.0.0
      • 其中的私有地址:
        • 127.0.0.1(本地回环地址)
        • 10.0.0.0/8
    • B类

      • 前二段为网络号,后二段为主机号
        • 网络号表示方法:前两位为10,后6位可以随意变化 (10 00 0000 - 10 11 1111),即范围为128-191
      • 网络中的主机数量
        • 2^16-2个,其中全0表示网络位,全1表示广播地址
      • 默认子网掩码
        • 255.255.0.0
      • 其中的私有地址
        • 172.16.0.0 -- 172.31.0.0
        • 169.254.0.0地址保留给未指定IP的网卡使用
    • C类

      • 前三段为网络号,最后一段为主机号
        • 网络号表示方法:前三位为110,后5位可以随意变化 (110 0 0000 - 110 1 1111),即范围为192-223
      • 网络中的主机数量
        • 2^8-2个,其中全0表示网络位,全1表示广播地址
      • 默认子网掩码
        • 255.255.255.0
      • 其中的私有地址
        • 192.168.0.0/24
    • D类 组播地址

      • 前4位为1110 后四位可以随意变化(1110 0000 - 1110 1111),即范围为224-239
    • E类

      • 240 - 255

主机进程与进程之间的通信

进程通信的标识方法
  • 进程的通信采用16bits表示端口号,端口范围为1-65535,其中端口分配如下:
    • 周知端口:
      • 1-1023 : 固定分配给指定类服务,而且只有管理员有权启用
    • 注册端口
      • 1024-49151: 分配给用户进程或应用程序
    • 动态端口
      • 49152-65535 : 一般不固定分配某种服务,而是动态分配
进程地址表示方法:
  • IP : PORT
    • 表现成一个完整的套接字,即socket,套接字是由内核提供的

网络接口的命令方式

命名的规范

  • 传统命名:
    • 以太网:ethX,[0,….] ,例如:eth0,eth1
    • PPP网络:PPPX,[0,…] ,例如PP0,PPP1
  • 可预测命名方案:
    • 如果fireware或Bios为主板上集成的设备提供的索引信息可用,且根据此索引命名,例如:eno1,eno2....
    • 如果fireware或Bios为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引命名,例如,ens1,ens2.....
    • 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0,....
    • 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10
    • 上述均不可用,则仍使用传统方式命名
命名的格式组成
* en: ethernet
* wl:wlan
* ww: wwan(无线广域网)
名称类型
* o<index>:集成设备的设备索引号
* s<slot>:扩展槽的索引号
* x<MAC>:基于MAC地址的命名
* p<BUS>s<slot> :基于总线及槽的结构进行命令

===========

Linux网络配置相关

一、IP及路由配置和查看

Linux网络查看专业名词:
  • Multicast : 组播
  • Broadcase : 广播
  • Hwaddr ether : 以太网地址
  • txquuelen:传输队列长度
  • RX:接收
  • TX:传输
  • dropped:丢包
  • overruns:溢出
  • Collisions:冲突

ifconfig命令

ifconfig - configure a network interface

#######synopsis:

  • ifconfig [interface]
  • ifconfig interface [aftype] options | address ...
    • [options]
      • -a : 查看所有网卡信息,包括未激活网卡信息

      • [-]promisc : 开启或关混杂模式

          ifconfig eth1 promisc  #启用混杂模式
          ifconfig eth1 -promisc #关闭混杂模式
          ifconfig eth1 down #停用eth1网卡
          ifconfig eth1 up #启用网卡
          ifconfig eth1 172.16.249.112/16 #配置eth1网卡ip
          ifconfig eth1 172.16.249.112 netmask 255.255.0.0 
        

#######ifconfig修改的信息被立即送往内核,所以立即生效,但重启操作系统或服务后,配置将丢失

route命令

route - show / manipulate the IP routing table
synopsis:
  • route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]

  • route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]

  • [options]

    • -n : 以数字格式显示,不反解主机名
  • 查看路由信息

      route -n : 以数字显示路由信息
      [root@zhenping ~]# route -n
      Kernel IP routing table
      Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
      169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
    
  • 添加路由信息

      route add -net 116.228.0.0/16 gw 192.168.0.100 dev eth1 #添加一个网络的路由信息
      route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1 : 添加默认网关
      route add default gw 192.168.10.1 : 添加默认网关
      oute add -host 10.0.0.1/32 gw 192.168.10.1 # 添加主机路由
    
  • 删除路由信息

      route del -net 116.228.0.0/16 #删除网络路由,如果掩码不同,有多个条目,需要指定gw的内容
      route del default : 删除默认路由
    

=========

ifup and ifdown命令

ifup eht1 # 启用eth1接口
ifdown eth1 # 禁用eth1接口

IP命令

ip -show / manipulate routing, devices, policy routing and tunnels
synopsis:ip [ OPTIONS ] OBJECT { COMMAND | help }
  • OBJECT := { link | addr | addrlabel | route | rule | neigh | tunnel | maddr | mroute | monitor }

  • OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] }

  • [OBJECT]

    • ip link set
      • dev NAME(default):dev可以不用写

              ip link set eht1 up  #启用eth1网卡
              ip link set eth1 down #禁用eth1网卡
        
      • arp on | arp off : 关闭ARP功能

              ip link set eth1 arp on
              ip link set eth1 arp off 
              #禁用和启用eth1的arp功能
        
      • multicast on | multicase off : 关闭组播功能

              ip link set eth1 multicast off
              ip link set eth1 multicast on
              #禁用和启用eth1的组播功能
        
      • name NAME : 修改名字

             ip link set eth1 name eth10 # 把网卡eth1改名到eth10
        
      • txqlen NUM : 修改传输长度

              ip link set eth10 txqlen 1000 #修改eth10的队列长度为1000,默认为1000
        
      • mtu NUM : 修改MTU值

              ip link set eth1 mtu 1000 #修改MTU最大传输单元为1000,默认为1500
        
      • netns PID : 将网卡添加到指定的名称空间中

              ip link set eth1 netns mynet # 将网卡eth1添加到netns mynet网络中
        
    • ip link show
            ip link show eth1
            ip link list eth1
              #都是查看网卡的信息,可以不跟设备,不跟设备是查看所有网卡
      
    • ip link help
            ip link help # 查看link参数帮助
      
    • ip netns (manager network namesapce),其centos 6不支持
        ip netns add mynet :添加一个mynet的名称空间
        ip link set eth1 netns mynet : 将eht1添加到Mynet的名称空间中
        ip netns exec mynet ip link show :在名称空间中执行ip link show命令
        ip netns del mynet:删除指定的Mynet ns。
        ip netns list:列出所有的netns
      
    • ip addr add : 添加新地址
      • ip addr add 192.168.10.100/24 dev eth1 #在eth1上加IP,可以反重添加多个
      • label NAME
        • ip addr add 10.1.1.10/8 dev eth1 label eth1:0 :对eth1添加IP,并指定一个eth1:0别名,这样ifconfig才能看到
      • brocast ADDRESS : 广播地址,会根据IP和NETMASK自动计算得到
      • [scope SCOPE_VALUE]:作用域
        • global:全局可用
        • link : 接口可用
        • host:仅本机可用
    • ip addr del :删除地址
      • ip addr del 192.168.0.201/24 dev eth1 :删除eth1上的地址
      • ip addr del 192.168.0.202/24 dev eth1:1 : 删除eth1:1的地址
    • ip addr [list|show]: 查看接口IP信息
      • ip addr list eth1 : 只查看eth1设备的地址信息
      • ip addr list : 查看所有设备的地址信息
    • ip addr flush : 清空所有IP地址
      • ip addr flush dev eth1 :清空eth1上的所有IP地址
    • ip route :路由管理
      • add : ip route add TYPE PREFIX via <GW> [dev] [src SRC_IP],添加路由

          ip route add 116.228.0.0/16 via 192.168.0.1 #添加116.228.0.0/16的路由
          ip route add 116.228.0.0/16 via 192.168.0.1 dev eth0 # 为eth0添加路由信息
        
      • change : 修改路由

      • replace :替换路由

      • delete : 删除路由 ,格式:ip route del TYPE PRIFIX

          ip route del 116.228.0.0/16  : 删除116.228.0.0/16的路由信息
          ip route del 10/8
        
      • show:显示路由

          ip route show src 172.16.100.6 
        
      • flush:清空路由

          ip route flush 10/8
        
      • get:获取单条路由

          ip route get 192.168.0.0/24
        

二、查看网络状态相关工具

TCP常见状态表示名词:

  • LISTEN :正在监听的
  • ESTABLISHED : 建立的连接
  • FIN_WAIT_1 : 请求断开
  • FIN_WAIT_2 :确认断开
  • SYN_SENT : 请求连接
  • SYN_RECV : 接收连接请求
  • CLOSE : 关闭连接

netstat命令

netstat - netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
  • synopsis: netstat [—tcp|-t] [—udp| -u] [--raw|-w][--listening|-l][--all|-a][—numeric | -n] [--program|-p]
  • [options]
    • -r : 显示路由表信息

    • -n : 以数字格式显示

        route -rn # 以数字格式显示路由表信息,不做名称解析
      
    • -t : 显示TCP连接着的链接

    • -u : 显示UDP正在连接链接

    • -w : 祼套接字的连接

    • -l : 处理监听状态的连接

    • -a : 所有的状态

    • -n : 数字格式显示IP和PORT

    • -e : 扩展格式,多显示了:进程启动用户以及进程的Inode号码

    • -p : 显示相关的进程及PID

        netstat -tan  #显示所有TCP相关的连接,并且不做名称解析
        netstat -uan  #显示所有UDP相关的连接,并且不做名称解析
        netstat -tnl  #显示所有TCP正在监听的连接
        netstat -unl  #显示所有UDP正在监听的连接
        netstat -tunlap  # 显示所有TCP及UDP所有的连接,并显示进程所对应的程序
        netstat -tunlp  #显示所有TCP及UDP正在监听的连接,并显示进程所对应的程序
      
    • -i : 显示所有接口的统计数据

    • -I<IFACE> : 显示指定接口的统计数据
      netstat -Ieth0 #显示eth0的统计数据,参数与接口名称不能有空格

ss命令:

ss - another utility to investigate socket
synopsis : ss [options] [ FILTER ]
  • [options]
    • -t:tcp协议相关的连接
    • -u:UDP协议相关的连接
    • -w: raw socket相关的连接
    • -l : 监听状态的连接
    • -a :所有状态的连接
    • -n: 数字格式
    • -p:相关的程序及其它PID
    • -e :扩展格式信息
    • -m:内存用量
    • -o: 计时器信息
      *[FILTER]
    • FILTER := [ state TCP-STATE ] [ EXPRESSION ]
      • 示例:
        • ss -tan ‘( dport = :22 or sport = :22 )’ #显示源端口为22目标端口为22的TCP连接
        • ss -tan state ESTABLISHED : #显示TCP正在连接的链接
        • ss -tan state ESTABLISHED ‘( dport = :22 or sport = :22 )' #显示状态为正在传输的连接,且源端口目标端口都为22的

======

修改配置文件实现更改计算机名、IP及路由

计算机名的配置文件

  • /etc/sysconfig/network(Centos6)
  • /etc/hostname (Centos7):直接写计算机名称,没有格式
配置格式:HOSTNAME=MYPC
  • /etc/hosts
    • 配置格式
      • IP 主机名 别名
注意:hosts文件是计算机自己访问自己的时候,才会使用到,默认的127.0.01这行不能修改,以免影响个别服务的正常运行。当使用dig``nslookup等命令时,将不会访问hosts文件。
hostname命令
  • hostname HOSTNAME
注意:使用命令修改下次重启系统将丢失
专属命令修改计算机名,同时将保存至配置文件中
  • Centos6/5
    • system-config-network
    • setup
  • Centos7
    • nmtui
    • hostnamectl
      • hostnamectl set-hostname NAME (设置计算机名)
      • hostnamectl status (查看计算机名)
        ============

DNS的配置文件

  • /etc/resolv.conf
格式:
  • nameserver XXXXX (最多可配置三个)

==========

网卡的配置文件(RHEL系)

配置文件路径:/etc/sysconfig/network-scripts/ifcfg-IFACE
ifcf-IFACE配置文件字段含义
  • NAME : 网卡配置名称,需要跟配置文件名保持一致(Centos7)
  • DEVICE : 此配置文件对应的设备名称
  • ONBOOT : 系统引导时是否激活此接口
    • yes : 表示随系统启动激活设备
    • no : 表示不随系统启动激活设备
  • NETBOOT : 是否支持网络引导
    • yes
    • no
  • UUID : 设备的唯一标识符
  • IPV6INIT : 是否初始化IPV6
  • BOOTPROTO : IP地址的配置方式
    • none : 静态
    • dhcp : 动态
    • static : 静态
    • bootp
  • TYPE : 网卡类型
    • Ethernet : 以太接口
    • Bridge : 风桥
  • DNS1 : 主DNS地址
  • DNS2 : 辅DNS地址
  • DOMAIN : DNS搜索域
  • DEFROUTE
  • GATEWAY : 默认网关
  • IPADDR : IP地址
  • NETMASK : 网络掩码地址
  • PREFIX : 网络掩码短格式(Centos7)
  • USERCTL : 是否允许普通用户控制此设备
  • PEERDNS : 当为DHCP模式,是否允许使用DHCP Server的DNS配置信息覆盖本地手动DNS地址指向,默认允许
  • NM_CONTROLLDE : 是否使用network manager服务控制接口
  • HWADDR : 设备的MAC地址
注意:DHCP模式优先级高于static和none模式

配置一张网卡多IP的配置方法

方法一:
  • 建立网卡名为eth0:1的文件
  • 配置网络信息参数
    • DEVICE名称需与配置文件名称一致
    • 不支持DHCP,IP必须为手动指定
方法二
  • ip addr add 192.168.0.100 dev eth0 label eth0:1
注意:此配置方法不会永久有效

========

s配置文件配置路由表方法

配置文件路径:/etc/sysconfig/network-scripts/route-IFACE
  • 文件配置格式一:
    • 每行一个路由条目

      • 配置格式:TARGET via GW
    • 每三行一个路由条目

      • ADDRESS#=TRAGET
      • NETMASK#=MASK
      • GATEWAY#=NEXTHOP

========

nmcli命令

nmcli - Centos7 平台的命令行网络配置工具
  • nmcli [options] Object {command | help}
    • device - 硬件配置模式
      • status
      • show
      • connect
      • disconnect
      • delete
    • connect - 启用、停止管理网络连接
      • show
      • down
    • modify - 额外添加、删除一个IP地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容