0%

2019年12月22日 下午3:55
这两篇文章,是详细的步骤,解释如何建立网络连接,并发生网络访问的过程。

码农翻身:我是一个网卡

  • 一台新接网线的机器,如何获得ip(局域网)的详细过程?
    • DHCP广播
  • 域名如何转换为ip的详细过程?
  • 机器如何在存在nat转换路由器中,正确的拿到访问的返回信息?
    • 路由器, 还是一个DHCP服务器, 掌握着这个局域网的IP生杀大权
    • 网络地址转换 ,人类简称为NAT
    • PnP(以电驴为例子)

#b计算机基础/c_计算机系统/a_linux指令
2019年12月21日 上午12:23

openvpn原理入门

主要:
openvpn简易安装脚本-江哥架构师笔记
辅助:

安装包+安装脚本

20180829-7276301059.zip

博客备份:

openvpn简易安装脚本-江哥架构师笔记.pdf

#b计算机基础/c_计算机系统/a_linux指令
2019年12月21日 上午12:23

openvpn原理入门

主要:
openvpn简易安装脚本-江哥架构师笔记
辅助:

安装包+安装脚本

20180829-7276301059.zip

博客备份:

openvpn简易安装脚本-江哥架构师笔记.pdf

2019年12月21日 上午11:26

2.1.1.2.1 OpenVPN原理与实现浅析 · suhao/awesome Wiki · GitHub

openvpn简易原理:两个关键词(虚拟网卡上建立的虚拟的局域网络)

  1. 虚拟网卡
    1. 在Linux2.4版本之上,操作系统支持一个名为tun的设备,驱动程序中包含一个字符设备驱动和一个网卡驱动。
      • 网卡驱动可以把从TCP/IP协议栈收到的数据包结构转发到tun设备读取列表,用户进程通过调用read可获取完整的IP数据包传递给用户
      • 字符驱动的write可以把用户数据传入TCP/IP协议栈
      • 设备以字符设备形式被读写,能够配置IP地址和路由
    2. OpenVPN实现SSLVPN,虚拟网卡是关键
  2. 虚拟的局域网络
    1. OpenVPN服务器一般需要配置一个虚拟IP地址池和一个自用的静态虚拟IP地址(静态地址和地址池必须在同一个子网中),然后为每一个成功建立SSL连接的客户端动态分配一个虚拟IP地址池中未分配的地址。
    2. 从而将物理网络中的客户端和OpenVPN服务器就连接成一个虚拟网络上的星型结构局域网, OpenVPN服务器成为每个客户端在虚拟网络上的网关
    3. OpenVPN服务器同时提供对客户端虚拟网卡的路由管理。
    4. 当客户端对OpenVPN服务器后端的应用服务器的任何访问时,数据包都会经过路由流经虚拟网卡, OpenVPN程序在虚拟网卡上截获数据IP报文,然后使用SSL协议将这些IP报文封装起来,再经过物理网卡发送出去
    5. OpenVPN的服务器和客户端在虚拟网卡之上建立起一个虚拟的局域网络 ,这个虚拟的局域网对系统的用户来说是透明的

使用openvpn的场景:

  1. 首先,有两台服务器:A,B,这两台本身就是可以ping通的。
  2. 那么,既然A,B之间本身就是可以建立连接的,eg:ssh,为什么还需要使用openvpn?
    1. 当A希望访问C时,并且不希望让C知道是A在访问时(当A无法之间访问C,需要通过B来间接访问),这时就需要对C来说,需要让B来代理A,代替A来访问C
    2. 当A,B之间需要指定自定义的局域网网段地址时,这时就需要虚拟一个网卡,在这个网卡上建立自定义的局域网网段地址。

服务端参数讲解:

这部分摘自openvpn简易安装脚本-江哥架构师笔记的中.sh源码!!

  1. 扩展配置:
    1. 是否需要设置客户端默认路由走openvpn网络?
    2. 是否需要给客户端推送静态路由,访问指定的网络号时走openvpn网络?
      • push \"route ${intranet_route_info} vpn_gateway \"
    3. 是否需要开启客户端密码认证?
      • auth-user-pass-verify ../checkpsw.sh via-env #使用密码文件认证
      • username-as-common-name #暂不明,和auth-user-pass-verify 一起使用
  2. 标准配置:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Local $IP     #指定监听的本机IP(因为有些计算机具备多个IP地址),该命令是可选的,默认监听所有IP地址。
    port 1194 #指定监听的本机端口号
    proto udp #指定采用的传输协议,可以选择tcp或udp
    dev tun #指定创建的通信隧道类型,可选tun或tap
    ca ca.crt #指定CA证书的文件路径
    cert server.crt #指定服务器端的证书文件路径
    key server.key #指定服务器端的私钥文件路径
    dh dh1024.pem #指定迪菲赫尔曼参数的文件路径
    server $NETMASK #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用10.0.0.1。
    ifconfig-pool-persist ipp.txt #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。
    tls-auth ta.key 0 #开启TLS-auth,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。
    keepalive 10 120 #每10秒ping一次,连接超时时间设为120秒。
    comp-lzo #开启VPN连接压缩,如果服务器端开启,客户端也必须开启
    client-to-client #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接
    persist-key
    persist-tun #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。
    status openvpn-status.log #指定记录OpenVPN状态的日志文件路径
    verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
    duplicate-cn #允许一个客户端证书同时被多个终端使用
    max-clients 1000 #客户端链接最大数量
    script-security 3 # 开启配置文件中自定义脚本
  3. 其他:
    • 配置iptables转发设置
      • iptables -t nat -A POSTROUTING -s 172.16.98.0/24 -o eth1 -j MASQUERADE
      • 不指定外网网卡的话,客户端可以连接内网!如果是为了拨入内网,去掉-o eth1即可
    • push

2019年12月21日 上午10:42

iptables详解:图文并茂理解iptables

  • 这篇文章是网上最好的iptable入门文章,这是一个系列还有14篇具体深度讲解iptable的文章,需要时可以仔细看

查看所有开放端口信息:

netstat -anp

常操作的两个表

linux 查看并对外开放端口(防火墙拦截处理)

  • filter表是系统默认的
    • INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
  • nat表(网络地址转换):其实就是在修改数据包
    • PREROUTING(修改即将到来的数据包)
    • OUTPUT(修改在路由之前本地生成的数据包)
    • POSTROUTING(修改即将出去的数据包)

命令参数:

iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [—sport 源端口号] [-d 目的IP|目标子网] [—dport 目标端口号] [-j 动作]

  • 参数:-A 增加 -I 插入 -D 删除 -R 替换

常用命令:

iptables -t filter -A INPUT -s 192.168.1.5 -I eth0 -j DROP
* 禁止IP为192.168.1.5的主机从eth0访问本机
iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp —dport 80 -j DROP
* 禁止子网192.168.5.0访问web服务
iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp —dport ftp -j DROP
* 禁止IP为192.168.7.9访问FTP服务
iptables -t filter -L INPUT
* 查看filter表中INPUT链的规则
⑤iptables -t nat -F
* 删除nat表中的所有规则
iptables -I FORWARD -d wwww.playboy.com -j DROP
* 禁止访问 www.playboy.com 网站
iptables -I FORWARD -s 192.168.5.23 -j DROP
* 禁止192.168.5.23上网

自己补充:

  1. 针对固定ip开放端口

    1. 编辑_etc_sysconfig/iptables
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 本机和141.36.185.213开放8080端口,其他ip用telnet是无法连接的
      -A INPUT -m state --state NEW -m tcp -p tcp -s 127.0.0.1 —dport 8080 -j ACCEPT
      -A INPUT -m state —state NEW -m tcp -p tcp -s 141.36.185.213 —dport 8080 -j ACCEPT

      #拦截所有非指定ip(host)的访问的规则
      -A INPUT -j REJECT --reject-with icmp-host-prohibited
      -A FORWARD -j REJECT —reject-with icmp-host-prohibited

      COMMIT
    2. 重启防火墙:service iptables start
  2. 拦截特定IP地址的访问
    ### iptables -A INPUT -I $IF_PUB -s 10.220.231.236 -j REJECT —reject-with icmp-host-prohibited

    • 这条规则拒绝那些到达公网接口的、来自IP地址10.220.231.236的传输。我是通过回应说主机被封锁了来拒绝这些传输,你也可以只是丢弃这些数据包,对问题主机不做回应。
  3. 拦截特定网络段的访问
    iptables -A INPUT -I $IF_PUB -s 10.67.232.0/24 -j REJECT —reject-with icmp-net-prohibited

    • 这条规则拒绝到达公网接口的、源地址为10.67.232.0/24的网络。这次该传输的发送方会收到一条ICMP网络禁止的消息

2019年12月21日 下午3:07
Linux忘记Root密码怎么找回 - Convict - 博客园
Linux运行级别及解释 - Convict - 博客园

Linux中有七个运行级别,分别为0~7

0级:关机
1级:单用户(找回丢失密码)
2级:多用户无网络
3级:多用户有网络,最常用的级别
4级:保留,目前Linux暂无使用
5级:图像界面
6级:重启
系统运行级别配置文件:_etc_inittab

修改root密码大致原理:

在系统没有启动之前,也是就是在grub阶段(引导阶段)我们将linux系统的启动运行级别设置为1(单用户模式),在此模式下,进入系统,可以更改root密码

2019年12月21日 下午2:45

  1. CentOS 6.5基于OpenVPN的VPN服务器构建 - 程序园
  2. openvpn下的配置文件与iptables优化 - 程序园
  3. openvpn中push “redirect-gateway def1 bypass-dhcp”小解 - 程序园
  4. OpenVPN使用过程中的一些坑 - Choyri’s Blog

CentOS 6.5基于Open×××的×××服务器构建-枫林晚-51CTO博客.pdfopen下的配置文件与iptables优化-Jim的技术随笔-51CTO博客.pdf<a href=’open%E4%B8%ADpush%20%E2%80%9Credirect-gateway%20def1%20bypass-dhcp%E2%80%9D%E5%B0%8F%E8%A7%A3-Jim%E7%9A%84%E6%8A%80%E6%9C%AF%E9%9A%8F%E7%AC%94-51CTO%E5%8D%9A%E5%AE%A2.pdf’>open***中push “redirect-gateway def1 bypass-dhcp”小解-Jim的技术随笔-51CTO博客.pdf

2019年12月20日 下午11:27

2020年3月31日 下午9:43
10道大厂面试必考题
TCP/IP协议
以网关为展开点的几个问题

2019年12月22日 下午7:23


2019年12月20日 下午11:27

以vpn为实例,去整理知识点

  • 注:vpn算是网络知识的一个具体应用,他是你去学习网络知识的一个很好的跳板,能让自己有深刻具体的印象,如果仅像大学老师那样一层一层的讲,这样是学不会的,我本科学过一遍,研究生又学了一遍,学了就忘!!!
  • 并且,我觉得能够明白vpn的原理,我觉得才算是入门网络的标准,因为要懂得vpn的原理,证明你了解网络的基本知识点(下列知识点)

openvpn原理入门

按顺序看下列文章
码农翻身:网络从0到1
IP地址分类
看懂本机上的路由表,并操作
网关+ip+网络地址+子网掩码+DHCP
以ping为例,讲解DNS的全过程
交换机和路由器有什么区别

::最最最核心的理解:感性理解::

  1. 最核心的概念:局域网
  2. 网络的整体架构是:中心调度。这个中心就是路由器,路由器的调度功能包括DHCP等等子模块
  3. 网络之间的关系:树状关系。
    • 每棵树拿出来的子树,是可以单独存在的
    • 树的根节点是当前树(局域网)的调度中心(路由器)。对于根节点来说,他直接子节点所代表的子树是透明的,代表:不论子树实际有多复杂,有多少支路,但是对于根节点来说,就一个根节点下局域网的一个局部ip。

按层去整理

传输层关键就是理解TCP的原理(连接、释放、滑动窗口),socket原理
网络层 最小单元是“网络”,而不是主机。路由表建立过程
网络的总体认识
数据链路层
物理层

2019年12月20日 下午11:27

2020年3月31日 下午10:35
今天在 10道大厂面试必考题之后,有了一点新的认识:

  • 网络中的各种协议,其实可以当做是一个框架来认识,因为一个框架可以从
    • 框架手册中规定的接口的使用方式(对应协议头中的字段)
    • 框架本身对用户透明的算法,可以通过参数接口的方式来进行挑选、调试
  • 一个具体的协议,eg:TCP,其实就可以理解成一个框架,他就实现了以下提到的算法,而UDP这个框架就没有实现。
    • 传递任意长度消息
    • 流量控制
    • 拥塞控制

一些没来的及整理的文章
计算机网络总结 - architect刘源源 - 开源中国
面试带你飞:这是一份全面的 计算机网络基础 总结攻略 - 掘金
计算机网络知识点总结 - 王小东大将军的博客 - CSDN博客
计算机网络总结
计算机网络基础知识总结 - ranyonsue - 博客园
计算机网络知识点总结 - 程序园
无线网络(3) 无线网络结构-技术成就梦想-51CTO博客

计算机网络 - 维基百科,自由的百科全书

  1. 计算机网络总的架构就像维基百科中目录所列出的几个角度。学知识最重要的是要知道总的架构,计算机网络讲解的就是:连接两台或多台计算机进行通信的系统。
  2. 在连接的过程中,我们要考虑很多因素:我们的使用场景(范围大小、要传输信息的特点,看中什么问题),传输硬件媒体,各个机器之间的拓扑结构,差错控制等各方面因素。
  3. 最后,我们选择合适的硬件和协议,去达到最后的目的(这里面的协议是进行组合,然后使用的)

总结:

我觉得最重要的问题是:

  1. 我们的目的,比如说我们的目的是为了找到对象,那么我们就从网络层去选择合适的协议,就解决这一个问题。如果当前的使用的是小场景,那么我们就不会使用TCP/IP协议。
  2. 其次,考虑机器之间的拓扑结构+传输硬件媒体
    1. 这两个因素会限制我们选择的范围