Skip to content

Instantly share code, notes, and snippets.

@log2c
Last active July 14, 2024 16:27
Show Gist options
  • Save log2c/dd76944dedb5f9b52a7f58b40e04f817 to your computer and use it in GitHub Desktop.
Save log2c/dd76944dedb5f9b52a7f58b40e04f817 to your computer and use it in GitHub Desktop.
一些杂项记录

OpenWrt (小米路由) 一些配置

SSH 获取

输入SN码得出root账户密码

Root密码在线计算

DHCP (Dnsmasq) 手动配置

文件位置/etc/config/dhcp

  • 设置某客户端

    config host
        option name 'my-PC'
        option mac 'XX:XX:XX:XX:XX:XX'
        option ip '192.168.1.100'
        option tag 'openwrt'
    
    config tag 'openwrt'
        list dhcp_option '3,192.168.1.2'
        list dhcp_option '6,192.168.1.2'
        option force '1'
  • 重启 dnsmasq 服务

    /etc/init.d/dnsmasq restart

旁路由Dnsmasq


# 配置旁路由网关和DNS的IP,标注tag为openwrt
dhcp-option=tag:openwrt,option:router,192.168.31.3
dhcp-option=tag:openwrt,option:dns-server,192.168.31.3

dhcp-host=00:E0:4C:AD:A8:64,set:openwrt,192.168.31.199,,USB-C-Stub
dhcp-host=44:4A:DB:DA:EC:55,set:openwrt,192.168.31.124,,iPhone
dhcp-host=9C:2E:A1:00:F6:83,set:openwrt,192.168.31.120,,MI8SE

在 Windows 终端中设置代理

代理软件在计算机使用中开始变得频繁,现在主要用于学术研究,为了下载文献,不得不使用学校的 VPN 服务连入校园网。而对于代理软件,代理规则的说法和配置说明,却不是明确的,为了更快的在终端中使用 git clone 命令下载 Github 的库,如何在终端中设置代理,也有许多教程,本篇文章主要说明一些代理软件方面的理解和对终端设置代理。

代理软件与代理规则

许多人认为代理软件代理后,就是全部都走了所谓的 代理 ,这里是一个误区,主要我们分为两种代理软件,一种是 VPN,一种是可以设置规则的端口代理软件。

VPN 的认识

VPN 是一种全局代理软件,这里的 全局 的概念指的是,所有的网络请求都会走代理服务器经过,这在某种程度上说,安全性由提供方支持。当然你只使用学校的 VPN 连接校园网的话,我想是不用太担心安全问题的。

可以设置规则的端口代理软件

端口代理软件,顾名思义,该软件提供的代理会代理计算机中的某一个端口。如果将系统代理设置为该代理的端口,则会被该软件代理,但是注意,被该软件代理,非被代理服务器代理。如果是内置规则或可自定义规则的代理软件,我们的网络请求在使用该软件代理后,会先去查询内部规则,在规则中规定的部分网络请求,会被该软件设置好的代理服务器代理访问。所以,使用该软件的全局代理也仅仅是电脑所有的网络请求会按照规则去访问代理或者直连或者被屏蔽。而如果该软件没有设置全局代理,设置的是系统代理,则经过该软件的网络请求只有那些使用系统代理的软件,如浏览器。大部分安装的应用可能需要自行设置代理服务器或者开启全局代理,才能实现它们的网络请求经过该软件。

还有一个名词叫做 PAC,这在部分端口代理软件中会使用,并被认为是代理规则,而开启 PAC 代理模式,则仅仅意味着所有经过端口代理的网络请求会根据 PAC 的规则去完成请求。但是未使用端口代理浏览器或者软件的话,则和直连没有区别。

为终端设置代理

说明了两种代理方式后,为终端代理才开始配置。显而易见,VPN 代理模式无需对终端设置代理,他会接管所有的网络请求,所以代理服务器能访问的,本地都能访问了。而端口代理软件对终端代理的方法则有许多,为 git 设置代理的方式也有很多,此处仅介绍我所知道的。

Windows 终端的选择

首先得说明我使用的终端是 Windows PowerShell,并不是 cmd,甚至于我使用的是 win10 中的 Terminal,不过 Terminal是集成终端,我使用的默认界面是 Windows PowerShell。所以归根结底,使用的终端是 Windows PowerShell。但是我都会提到相关的设置。

cmd 设置代理

由于 cmd 终端的广泛流传,我先将 cmd 代理设置的方式列出:

set http_proxy=http://127.0.0.1:7890
set https_proxy=http://127.0.0.1:7890

每次在打开的 cmd 终端中执行这两段命令,会让终端中的所有命令走端口代理软件的代理。(注意:此处非走代理服务器,而是走代理软件,还会通过代理规则的判断)

当然这是临时命令,重新代理终端需要重新输入。如果想要永久设置代理,我建议是使用自定义配置,使每次代理 cmd 窗口时,运行如上命令。

  1. 新建一个 cmd_init.cmd,将上面的命令放入其中。
  2. 打开注册表:win+R -> 输入 regedit 后运行
  3. 找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\,在文件夹下,新建字符串值 AutoRun,数据的值是一个绝对路径,路径指向新建的 cmd_init.cmd,可以将这个文件放在 C 盘根目录,即路径为 C:\cmd_init.cmd
  4. 重新打开终端,你会看到命令行会先运行这两条命令,而不需要你自己输入。

PowerShell 设置代理

PowerShell 设置代理的方式类似,命令如下:

$Env:http_proxy="http://127.0.0.1:7890";
$Env:https_proxy="http://127.0.0.1:7890";

当然这也是临时命令,重新代理终端需要重新输入。如果想要永久设置代理,我建议是使用自定义配置,使每次代理 PowerShell 窗口时,运行如上命令。

  1. PowerShell 窗口中运行如下指令:

    if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
    notepad $PROFILE
    
  2. 默认会使用记事本打开一个文件,在文件中加入上面设置代理的命令,保存关闭即可。

上面的配置文件在 此电脑\文档\WindowsPowerShell 下,文件名为:Microsoft.PowerShell_profile.ps1, 这个文件的内容会在 PowerShell 的每次运行时使用。(注意不要修改文件位置,除非你明白这样操作的目的)

上述的自定义配置方法,便于设置和修改,故为我所推崇,如果你使用网上的永久设置,我想可能会有各种问题,不如这样设置的直观,当然观点仅供参考。

git 设置代理

不得不说,为终端设置代理主要是为 git 设置全局代理,这里给出单独设置的方法。

git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

这里给出取消设置代理的方法,防止端口需要切换。

git config --global --unset http.proxy
git config --global --unset https.proxy

结语

总的来说:

  1. 理解代理模式,减少了对于代理流量,是否会拖慢不想代理软件的困扰。
  2. 而为了给 git 设置代理,我个人倾向于使用为终端设置代理的方法,因为那样的方式,配置文件是便于修改的,而使用 git 相关命令设置,则容易限于,是否命令无效等问题。

常用Docker操作记录

常用命令

  • 列出所有的容器 ID

    $ docker ps -aq
  • 停止所有的容器

    $ docker stop $(docker ps -aq)
  • 删除所有的容器

    $ docker rm $(docker ps -aq)
  • 删除所有的镜像

    $ docker rmi $(docker images -q)
  • 复制文件

    $ docker cp mycontainer:/opt/file.txt /opt/local/
    $ docker cp /opt/local/file.txt mycontainer:/opt/
  • 删除所有不使用的镜像

    $ docker image prune --force --all
    # 或者
    $ docker image prune -f -a
  • 删除所有停止的容器

    docker container prune -f

常见问题对应

  • ping通外网IP,无法ping通外网域名

    $ firewall-cmd --zone=public --add-masquerade --permanent	# 允许防火墙伪装IP
    $ firewall-cmd --reload
    $ systemctl restart docker
  • 修改容器端口映射

    • 停止容器

    • 修改配置文件

      $ vi /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

      修改PortBindings(HostPort指代宿主端口)

    • $ systemctl restart docker

计算机网络 - 概述

本文转载自 [https://wiki.router86.com/pages/0796ac/]

# 网络的网络

网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。

# ISP

互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。

# 主机之间的通信方式

  • 客户 - 服务器(C/S):客户是服务的请求方,服务器是服务的提供方。

  • 对等(P2P):不区分客户和服务器。

# 电路交换与分组交换

# 电路交换

电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。

# 分组交换

每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。

在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。

# 时延

总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延

# 排队时延

分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。

# 处理时延

主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找适当的路由等。

# 传输时延

主机或路由器传输数据帧所需要的时间。

其中 l 表示数据帧的长度,v 表示传输速率。

# 传播时延

电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。

# 计算机网络体系结构

# 五层协议

  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。
  • 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
  • 网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
  • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
  • 物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

# OSI

其中表示层和会话层用途如下:

  • 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
  • 会话层 :建立及管理会话。

五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。

# TCP/IP

它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。

# 数据在各层之间的传递过程

在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。

路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。

# 参考链接


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment