Family Wi-Fi

Wi-Fi

Wi-Fi是一个创建于IEEE 802.11标准的无线局域网技术。基于两套系统的密切相关,也常有人把Wi-Fi当做IEEE 802.11标准的同义术语。

Wi-Fi这个术语被人们普遍误以为是指无线保真(Wireless Fidelity),并且即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词,Wi-Fi还出现在ITAA的一个论文中。但事实上,Wi-Fi一词没有任何意义,也是没有全写的。

WiFi4/5/6

WIFI6 是802.11ax协议,支持2.4GHz和5GHz,支持更多的技术,更高的调制方式。比如

  1. 调制模式方面,WiFi 6 支持 1024-QAM,高于 WiFi 5 的 256-QAM,数据容量更高,意味着更高的数据传输速度;
  2. 此外,WiFi 6 加入了新的 OFDMA 技术,支持多个终端同时并行传输,有效提升了效率并降低延时,这也就是其数据吞吐量大幅提升的秘诀。
  3. WiFi6通过更优质的Long DFDM Symbol发送机制,将每个信号载波发送时间从WiFi5的3.2μs提升到12.8μs,有效降低丢包率和重传率,使传输更加稳定。
  4. WiFi6容量更大:多用户MU-MIMO技术允许电脑讯网时间多终端共享信道,使多台手机/电脑一起同时上网,从此前低效的排队顺序通过方式变成为“齐头并进”的高效方式。

各种网络及速率

无线路由器发展到现在有IEEE802.11b、IEEE802.11g、IEEE802.11a、IEEE802.11n、IEEE802.11ac标准,对应的无线速率分别是11Mbps、54 Mbps、150 Mbps、300Mbps、1Gbps。这里的无线速率指的是无线传输通过的最高速率。

这里拿300Mbps的无线路由器速率来说一下路由器的传输速度,300Mbps无线路由器指的是传输和接收最大能通过的速率,一般看到的只是传输的速度,也就是只能看到一半的速度,也就是150Mbps,这个是理论速率,但是在实际使用过程中由于环境的干扰,会有衰减。所以在实际使用过程中都只剩下110 Mbps左右。

WLAN

WLAN是Wireless Local Area Network的简称,指应用无线通信技术将计算机设备互联起来。

WLAN起步于1997年。当年的6月,第一个无线局域网标准IEEE802. 11正式颁布实施,为无线局域网技术提供了统一标准,但当时的传输速率只有1~2 Mbit/s。随后,IEEE委员会又开始制定新的WLAN标准,分别取名为IEEE802.11a和IEEE802. 11b。IEEE802. llb标准首先于1999年9月正式颁布,其速率为11 Mbit/s。经过改进的IEEE802. 11a标准,在2001年年底才正式颁布,它的传输速率可达到54 Mbit/s,几乎是IEEE802. llb标准的5倍。尽管如此,WLAN的应用并未真正开始,因为整个WLAN应用环境并不成熟。

目前使用最多的是802. 11n(第四代)和802. 11ac(第五代)标准,它们既可以工作在2.4 GHz频段也可以工作在5 GHz频段上,传输速率可达600 Mbit/s(理论值)。但严格来说只有支持802. 11ac的才是真正5G,现来在说支持2.4 G和5G双频的路由器其实很多都是只支持第四代无线标准,也就是802. 11n的双频,而真正支持ac 5G的路由最便宜的都要四五百元甚至上千元。

移动网络

4G与5G的区别

在有线介质上传播数据,想要高速很容易,实验室中,单条光纤最大速度已达到了26Tbps。

无线电磁波传播,才是瓶颈。

3/4/5G的频率

3G的四种标准和频段:CDMA2000、WCDMA、TD-SCDMA、WiMAX,1880MHz-1900MHz和2010MHz-2025MHz。

4G的频率和频段是:1880-1900MHz、2320-2370MHz、2575-2635MHz。

我国的5G初始中频频段,3.3-3.6GHz、4.8-5GHz两个频段。24.75-27.5GHz、37-42.5GHz高频频段正在征集意见。国际上主要使用28GHz进行试验

路由器

MAC地址20-6B-E7-DB-D7-33

WAN口与LAN口

WAN是英文Wide Area Network的首字母所写,即代表广域网;而LAN则是Local Area Network的所写,即本地网(或叫局域网)。WAN口主要用于连接外部网络,而LAN口用来连接家庭内部网络,两者主要会在标识上面有区别,此外大部分路由器的WAN口只有一个,LAN口则有四个或以上。

管理界面

根据路由器背面的提示登陆,可以修改Wi-Fi名称密码、限制设备上下行速率以及黑名单设备。(注意关闭clash代理

DHCP服务器

Dynamic Host Configuration Protocol动态主机配置协议是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关等内容。

采用DHCP方式对上网的用户进行临时的地址分配。也就是你的电脑连上网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。

SSID

Service Set Identifier是指服务集标识。SSID技术可以将一个无线局域网分为几个需要不同身份验证的子网络,每一个子网络都需要独立的身份验证,只有通过身份验证的用户才可以进入相应的子网络,防止未被授权的用户进入本网络。

无线信道

信道,也称作通道或频段。无线信号是以某一频率传送数据的。2.4G频段的工作频率为2.4-2.4835GHz,这83.5MHz频带划分为13个信道,各信道中心频率相差5MHz,向上向下分别扩展11MHz,信道带宽22MHz。中国采用欧洲/ETSI标准,使用1-13信道。

频段带宽

20Mhz和40Mhz的区别,你可以想象成道路的宽度,宽度越宽当然同时能跑的数据越多,也就提高了速度。

20MHz对应的是65M带宽,穿透性相对较好,40MHz对应的是150M带宽,穿透性肯定不如20MHz 所以追求稳定的话就选择20MHz,近距离传输就可以选择40MHZ。

当然,无线网的“道路”是大家共享的,一共就这么宽(802.11 b/g/n的频带是 2.412Ghz ~ 2.472Ghz,一共60Mhz。像802.11a/n在中国可用的频带是5.745Ghz ~ 5.825Ghz,同样也是60Mhz),你占用的道路宽了,跑得数据多了,当然就更容易跟别人撞车,一旦撞车大家就都会慢下来,比你在窄路上走还要慢。

如图,原来挤一挤可以四个人同时用的,如果你用了40Mhz的话就只能两个人同时用了。所以哪个更好的问题和你多大的房子无关,最主要的是你附近有多少个人跟你一起上路的,用NetStumbler这种扫描软件可以很容易看清楚周围频带的占用情况,如果你附近没什么人用,那么恭喜你,用40Mhz来享受高速吧!如果周围“车辆”很多,那么你最好还是找一个车少点的“车道”,老老实实用20Mhz比较好。

NetStumbler

04年停止更新的软件,不支持我笔记本的网卡

1
Intel WIFI6 ax200 160MHz

11bgn mixed

无线协议: 11b..=网络速度运行在11b网络标准,11g..=网络速度运行在11g网络标准,11n..=网络速度运行在11n网络标准。

如果你不知道你的无线设备是什么级别,802.11b/g/n是最好的选择。如果只使用.11n,旧设备可能存在兼容性问题。当然,速度是支持N的最快方式,但是它必须与特定的设备相结合。

实际的情况是,无线局域网的实际传输速度只能达到产品标称最大传输速度的一半以下;比如802.11b理论最大速度为11M,通过笔者的测试,在无线网络环境较好的情况下,传输100MB的文件需要3分钟左右;而相同的环境,换为支持802.11g的产品,传输100MB的文件就只需要30秒左右。

150M的网络理论下载速率

150M 全写是 150Mbps,注意这里是小b,是位数。所以与MB的兆字节是不一样的,需要除8,加上一点损耗。150Mbps网络有15MB/s就不错了。

怎么判断网络是百兆还是千兆

  1. 通过路由器WAN口速率设置,10/100M自动协商

如果是有线PC的话,看网卡信息,如果连接速度是1G的就是千兆网络,如果100M 就是百兆。

第二种方法: 测试下载速度,如果下载速度能够达到12.5MB/s以上就是千兆(1000/8),反之就是百兆。

第三种方法:
看交换机上的速度灯,如果千兆灯亮就是千兆,百兆灯亮就是百兆。如图(绿灯千兆,黄灯百兆)

家里明显是加强的百兆网络。

全双工和半双工

区别是:1、全双工允许数据在两个方向上同时传输;2、半双工允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,实际上是切换的单工。

同样是100M的链路,一条是全双工,另一条是半双工,如果两条链路上都进行单向通信的话,理论上是都可以达到100M的(注意:这里全双工也只有100M),但是如果两条链路都进行双向通信就不一样了,双向通信时,全双工的链路的吞吐量是200M(两个方向每个方向上都是100M),而半双工最大也只有100M。但是虽然全双工的最大吞吐量能够达到200M,但是他使用的最大带宽永远都是100M,你不可能将双向的200M变成单向的200M。

因此全双工的带宽=半双工的带宽,全双工的吞吐量=2×半双工的吞吐量。

WPA2-PSK

WPA/WPA2

WPA/WPA2是一种最安全的加密类型,不过由于此加密类型需要安装Radius服务器,因此,一般普通用户都用不到,只有企业用户为了无线加密更安全才会使用此种加密方式,在设备连接无线WIFI时需要Radius服务器认证,而且还需要输入Radius密码。

WPA-PSK/WPA2-PSK

WPA-PSK/WPA2-PSK是我们现在经常设置的加密类型,这种加密类型安全性能高,而且设置也相当简单,不过需要注意的是它有AES和TKIP两种加密算法。

  1. TKIP:Temporal Key Integrity Protocol(临时密钥完整性协议),这是一种旧的加密标准。
  2. AES:Advanced Encryption Standard(高级加密标准),安全性比 TKIP 好,推荐使用。

使用AES加密算法不仅安全性能更高,而且由于其采用的是最新技术,因此,在无线网络传输速率上面也要比TKIP更快。

CommView

软件首次运行时,会提示你安装一个特别的无线网卡驱动,这个驱动可以使你的无线网卡处在混杂模式,接收周围的任何无线报文。

软件启动时,无线网卡模式被改变,无线网络是无法使用的。

我虽然看不懂,但是我大受震撼。但是只能5分钟试运行

无线传输原理

比如,我在图书馆上网的时候,我的电脑并没有收到对面妹子的web请求包回复啊?无线数据包已经发送到你的无线网卡,但是你的网卡一看(主要受网卡驱动影响),不是我的请求数据包啊,于是丢弃了。

使用commview for wifi破解Windows无线网络WEP加密的密钥

需要进一步的研究学习

为什么comview里好多华为,是很多人开了手机热点吗?

Type – node type. Possible values are AP (for access points), STA (for stations in infrastructure mode) and AD HOC (for stations in ad hoc mode).

家庭网络改造

当前现状

  1. 套餐:公务员免费移动百兆套餐
  2. 网络设备:
    1. 光猫自带的wifi,最高只支持到wifi4 的2.4GHz
    2. 不支持ipv6的垃圾TP-link路由器

改进

  1. 将路由器更换为wifi6,直接跑满百兆(在学校里都能随便千兆的)

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

暑假回到家,把家里的WiFi弄一下

参考文献

https://www.zhihu.com/question/53878059

FTP

FTP简介

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

主动与被动模式

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

区别主要在于数据通道的建立方式:

  • 主动模式:服务器向客户端敲门,然后客户端开门
    • 在主动模式中,客户端向服务器发送一个随机端口号,服务器再用这个端口号和客户端建立数据通道。这样,服务器需要知道客户端的 IP 地址和端口号,并且能够穿透客户端的防火墙。
    • 如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门
    • 客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口
  • 被动模式:客户端向服务器敲门,然后服务器开门
    • 在被动模式中,服务器向客户端发送一个随机端口号,客户端再用这个端口号和服务器建立数据通道。这样,客户端不需要公开自己的 IP 地址和端口号,并且只需要打开出站连接的防火墙。

ftp命令行登录

1
2
ftp ip
lftp user@site:port

常用命令

  1. 下载文件通常用get和mget这两条命令。
  2. 上传文件put和mput
  3. 断开连接bye

ftp空间

但是这个是当前目录的文件,不包括文件夹

1字节=1B,1024B=1KB

Ubuntu ftp服务器部署

vsftpd

  1. 安装

    1
    sudo apt install vsftpd # 安装
  2. 配置文件 /etc/vsftpd/vsftpd.conf

    1
    2
    3
    local_enable=YES # 是否允许本地用户访问  
    local_root=/home/kaikai_ftp/ftpdir # 自定义上传根目录
    write_enable=YES # 允许用户修改文件权限
  3. vsftpd虚拟用户

  4. 运行

    1
    2
    3
    4
    5
    6
    7
    systemctl restart vsftpd.service
    重启
    sudo service vsftpd start
    开机启动
    sudo systemctl enable vsftpd
    查看运行情况
    sudo service vsftpd status

vsftpd虚拟用户

虚拟用户

  1. 虚拟用户,只对ftp有效的用户。这些用户不可以登录Linux系统,只可以登录ftp服务器。其实就是一个本地用户映射成多个只对ftp服务器有效的虚拟用户。虚拟用户可以有自己的ftp配置文件,因此通常利用虚拟用户来对ftp系统的不同用户制定不同的权限,以达到安全控制的目的。与虚拟用户有关的设置以guest_开头。
  2. 匿名用户,也就是不需要输入密码就可登录ftp服务器的用户,这个用户名通常是ftp或anonymous; 与匿名用户有关的设置多以 anon_选项开头。
  3. 本地用户,也就是你Linux系统上可登录到系统的用户,这些用户是在系统上实实在在存在的用户。通常会有自己的home,shell等。与本地用户有关的设置多以local_开头或包含local_的选项。

●所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录

●各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定

具体命令

  1. 创建用户数据库文件
1
2
3
vim /etc/vsftpd/vusers.txt
ftp123
ftp2333
  1. 文件需要被加密编码为hash格式奇数行为用户名,偶数行为密码
1
2
3
sudo apt-get install db-util # install db_load
sudo db_load -T -t hash -f vusers.txt vusers.db #该 db_load 实用程序可用于将文本文件加载到数据库中
chmod 600 vusers.db
  1. 创建用户和访问FTP目录
1
2
3
4
5
6
7
8
9
sudo useradd -d /data/ftproot -s /sbin/nologin -r vuser
# -d, --home-dir HOME_DIR home directory of the new account
# -s, --shell SHELL login shell of the new account
# -r, --system create a system account
mkdir -pv /data/ftproot/upload #-pv 是没有父路径也会创建
setfacl -m u:vuser:rwx /data/ftproot/upload
# set file access control lists
# -m, --modify
#chmod a=rx /data/ftproot/ 如果自动创建家目录,需要改权限
  1. 创建pam配置文件

    1
    2
    3
    vim /etc/pam.d/vsftpd.db
    auth required pam_userdb.so db=/etc/vsftpd/vusers
    account required pam_userdb.so db=/etc/vsftpd/vusers
  2. 指定pam配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vim /etc/vsftpd/vsftpd.conf

    pam_service_name=vsftpd.db
    userlist_enable=YES

    guest_enable=YES #所有系统用户都映射成guest用户
    guest_username=vuser #配合上面选项才生效,指定guest用户
    user_config_dir=/etc/vsftpd/vusers.d/ #虚拟用户设置独立的配置文件
    write_enable=YES

    anonymous_enable=NO # 匿名访问是否允许,默认不要开启
    local_enable=YES # 是否允许本地用户访问
    local_root=/home/shaojiemike/ftpdir # 自定义上传根目录

虚拟用户设置独立的配置文件

指定各用户配置文件存放的路径

1
2
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/

创建各个用户的配置文件存放路径,配置文件的文件名需要与用户名一致。
没有独立配置文件的虚拟用户会遵守/etc/vsftpd/vsftpd.conf这个主配置文件的权限配置。

1
2
3
4
5
6
7
8
9
mkdir /etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/
vim ftp123
# 允许用户有自己的上传目录以及上传权限,添加这些参数以及值
local_root=/tmp/vutest_d
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
allow_writeable_chroot=YES

建立目录,更改目录的所有者与所属组

1
2
3
mkdir /tmp/vutest_d
chown vuser:vuser /tmp/vutest_d #还是那句话,用户能不能上传不仅与配置文件有关,还与目录是否有w权限有关,两个权限都开启才能正确上传。
chmod 755 upload

Linux-PAM 的配置文件

PAM 的各个模块一般存放在 /lib/security/ 或 /lib64/security/ 中,以动态库文件的形式存在,文件名格式一般为 pam_*.so。

PAM 的配置文件可以是 /etc/pam.conf 这一个文件,也可以是 /etc/pam.d/ 文件夹内的多个文件。如果 /etc/pam.d/ 这个文件夹存在,Linux-PAM 将自动忽略 /etc/pam.conf。

  1. /etc/pam.conf 类型的格式如下:

    1
    服务名称  工作类别  控制模式  模块路径  模块参数
  2. /etc/pam.d/ 类型的配置文件通常以每一个使用 PAM 的程序的名称来命令。比如 /etc/pam.d/su,/etc/pam.d/login 等等。还有些配置文件比较通用,经常被别的配置文件引用,也放在这个文件夹下,比如 /etc/pam.d/system-auth。这些文件的格式都保持一致:

    1
    工作类别  控制模式  模块路径  模块参数

需要进一步的研究学习

Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd’s capabilities.

遇到的问题

1
2
530 Login incorrect.
Login failed.
  1. 尝试改shell,但首先不是这个问题

    1
    2
    3
    cat /etc/shells #没有/sbin/nologin
    sudo usermod -s /bin/bash vuser
    cat /etc/passwd #shell改好了
  2. 查看报错

    我以为我是修改错文件了,但是好像没怎么简单

  3. 添加

    1
    2
    guest_enable=YES   # 开启虚拟用户
    guest_username=vuser # FTP虚拟用户对应的系统用户,即第四步添加的用户

    报错

    后来发现原因是,变量这一行不要加注释
    guest_enable=YES # 开启虚拟用户

  4. 只改pam的路径为pam.db
    报错


    这很明显是没有指定用户

实际问题

home.ustc.edu.cn

ftp 上传的内容几秒中之内被覆盖了。这是学校网站的保护机制吗?(我之前调试修改太多了?)

1
2
3
4
5
6
7
8
9
10
11
12
ftp> get index.html
local: index.html remote: index.html
200 EPRT command successful. Consider using EPSV.
150 Opening BINARY mode data connection for index.html (360991 bytes).
226 File send OK.
360991 bytes received in 0.01 secs (25.7474 MB/s)
ftp> get index.html
local: index.html remote: index.html
200 EPRT command successful. Consider using EPSV.
150 Opening BINARY mode data connection for index.html (16116 bytes).
226 File send OK.
16116 bytes received in 0.00 secs (15.3082 MB/s)

I try single command line put site/index.html index.html and after a minute get index.html get the old file.

My USTC homepage is blocked

1
2
3
4
5
6
7
8
9
10
11
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
drwxr-xr-x 46 0 0 4096 Oct 25 10:03 public_html.old
226 Directory send OK.
ftp> mkdir public_html
550 Create directory operation failed.
ftp> put jumpPage.html
local: jumpPage.html remote: jumpPage.html
200 EPRT command successful. Consider using EPSV.
553 Could not create file.

参考文献

https://www.jianshu.com/p/ac3e7009a764

https://blog.csdn.net/frank_ci/article/details/108847358

https://blog.csdn.net/enweitech/article/details/51330664

OpenVPN in Docker

在接触wireguard之前,网络返校的方案是自己在有公网IP的机器上搭建OpenVPN。而使用docker比裸机配置OpenVPN方便多了。

OpenVPN Image

ARM

我們使用 kylemanna/docker-openvpn 來實作,因為 dockerhub 上只有 x86 image,如果是 arm 平台則需要自己 build(x86 可跳過)

clone repo 後,直接 build

1
2
3
$ git clone https://github.com/kylemanna/docker-openvpn
$ cd docker-openvpn
$ docker build -t kylemanna/openvpn -f Dockerfile.aarch64 .

如果發生找不到 aarch64/alpine:3.5 的錯誤,修改 Dockerfile 中的 base image 為

1
FROM alpine:3.15.4

或更新的 alpine 版本即可

相关的中文教程

http://blog.gdb.wiki/2020/03/19/Docker-OpenVPN%E9%95%9C%E5%83%8F%E9%85%8D%E7%BD%AE/#kylemanna-openvpn%E8%BF%99%E4%B8%AA%E9%95%9C%E5%83%8F%E5%B0%86%E5%A4%A7%E9%83%A8%E5%88%86%E7%9A%84%E4%B8%80%E9%94%AE%E5%8C%96%E8%87%AA%E5%8A%A8%E8%84%9A%E6%9C%AC%E8%BF%9B%E8%A1%8C%E6%95%B4%E5%90%88%EF%BC%8C%E9%80%9A%E8%BF%87docker-run%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE

https://koding.work/10-minutes-build-open-vpn-server/

https://taichunmin.idv.tw/blog/2018-05-23-docker-openvpn.html

Quick Start

以README为主

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# shaojiemike @ node5 in ~ [23:53:42] C:125
$ export OVPN_DATA="ovpn-data-tsj"

# shaojiemike @ node5 in ~ [23:54:10]
$ docker volume create --name $OVPN_DATA
ovpn-data-example

# shaojiemike @ node5 in ~ [23:54:11]
$ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://node5.xydustc.me
Unable to find image 'kylemanna/openvpn:latest' locally
latest: Pulling from kylemanna/openvpn
188c0c94c7c5: Pull complete
e470f824352c: Pull complete
d6ed0c7c142e: Pull complete
74586f3c5cd4: Pull complete
cb26244a2b2a: Pull complete
Digest: sha256:643531abb010a088f1e23a1c99d44f0bd417a3dbb483f809caf4396b5c9829a0
Status: Downloaded newer image for kylemanna/openvpn:latest
Processing PUSH Config: 'block-outside-dns'
Processing Route Config: '192.168.254.0/24'
Processing PUSH Config: 'dhcp-option DNS 8.8.8.8'
Processing PUSH Config: 'dhcp-option DNS 8.8.4.4'
Processing PUSH Config: 'comp-lzo no'
Successfully generated config
Cleaning up before Exit ...

CA(certificate authority.)的私钥密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# shaojiemike @ node5 in ~ [23:55:47]
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/pki


Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020

Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
Generating RSA private key, 2048 bit long modulus (2 primes)
.........+++++
...................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:tsj-node5

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/pki/ca.crt

Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
......................+.......................+..........................................................+........................................................................................................+........................................+...................................................................................................................................+.....................................................................................................................+......................................................................................................................................................................................................................................+......++*++*++*++*

DH parameters of size 2048 created at /etc/openvpn/pki/dh.pem


Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020
Generating a RSA private key
.......................................+++++
.........................................+++++
writing new private key to '/etc/openvpn/pki/easy-rsa-73.EeNnaB/tmp.jhHaaF'
-----
Using configuration from /etc/openvpn/pki/easy-rsa-73.EeNnaB/tmp.LGnDjB
Enter pass phrase for /etc/openvpn/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'node5.xydustc.me'
Certificate is to be certified until Jan 1 15:58:37 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020
Using configuration from /etc/openvpn/pki/easy-rsa-148.CDCEmf/tmp.iJCIGL
Enter pass phrase for /etc/openvpn/pki/private/ca.key:

An updated CRL has been created.

1194貌似有人用了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# shaojiemike @ node5 in ~ [0:02:06]
$ sudo lsof -i UDP:1194
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 1834 nobody 6u IPv4 56802 0t0 UDP node5:openvpn

/usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

sudo vim /etc/openvpn/server/server.conf

改成7194等端口

# shaojiemike @ node5 in ~ [0:02:10]
$ sudo service openvpn status
● openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2022-04-19 18:42:24 CST; 5 months 11 days ago
Main PID: 1715 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 154181)
Memory: 0B
CGroup: /system.slice/openvpn.service

Apr 19 18:42:24 node5 systemd[1]: Starting OpenVPN service...
Apr 19 18:42:24 node5 systemd[1]: Finished OpenVPN service.

# shaojiemike @ node5 in ~ [0:15:49] C:125
$ sudo service openvpn stop

# shaojiemike @ node5 in ~ [0:16:30]
$ sudo kill -9 1834

在1195启动服务失败,还是1194

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# shaojiemike @ node5 in ~ [0:16:46]
$ docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
cb0f7e78f389f112c3c3b230d20d2b50818f6cf59eea2edfaa076c7e8fad7128

# shaojiemike @ node5 in ~ [0:06:01]
$ docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c716b27b3f1 kylemanna/openvpn "ovpn_run" 49 seconds ago Up 48 seconds 1194/udp, 0.0.0.0:1195->1195/udp, :::1195->1195/udp charming_zhukovsky

# 上面是错误的

# shaojiemike @ node5 in ~ [0:16:50]
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb0f7e78f389 kylemanna/openvpn "ovpn_run" About a minute ago Up About a minute 0.0.0.0:1194->1194/udp, :::1194->1194/udp pedantic_euler

产生客户端证书,和ovpn文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# shaojiemike @ node5 in ~ [0:07:27] C:2
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full tsj-node5-client nopass
Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020
Generating a RSA private key
...............+++++
...............................+++++
writing new private key to '/etc/openvpn/pki/easy-rsa-1.olaINa/tmp.MfohAO'
-----
Using configuration from /etc/openvpn/pki/easy-rsa-1.olaINa/tmp.EMkEHF
Enter pass phrase for /etc/openvpn/pki/private/ca.key:
139775495048520:error:28078065:UI routines:UI_set_result_ex:result too small:crypto/ui/ui_lib.c:905:You must type in 4 to 1023 characters
Enter pass phrase for /etc/openvpn/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'tsj-node5-client'
Certificate is to be certified until Jan 1 16:08:23 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated


# shaojiemike @ node5 in ~ [0:08:24]
$ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient tsj-node5-client > tsj-node5-client.ovpn

# shaojiemike @ node5 in ~ [0:09:20]
$ ls tsj-node5-client.ovpn
tsj-node5-client.ovpn

还是不行,奇怪

解决办法

ping不通的原因是,脚本默认是8号端口,改成0号教育网端口就行了。

1
2
3
4
5
6
7
8
9
10
11
12
13
D:\PowerShell> ping -r 9 -w 10000 222.195.72.114

Pinging 222.195.72.114 with 32 bytes of data:
Reply from 222.195.72.114: bytes=32 time=60ms TTL=60
Route: 172.17.0.3 -> (局域网)
202.38.73.217 -> (node5)
202.38.96.189 -> (北京教育网)
210.45.112.254 -> (合肥教育网)
222.195.72.114 -> (snode2)
222.195.72.114 ->
202.38.96.188 ->(北京教育网)
202.38.73.254 ->(合肥教育网)
172.17.0.1

OpenVPN 3 linux client

apt install

First ensure that your apt supports the https transport:

1
# apt install apt-transport-https

Install the OpenVPN repository key used by the OpenVPN 3 Linux packages

1
# curl -x http://$proxy_addr:$proxy_http_port -fsSL https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/openvpn-repo-pkg-keyring.gpg

Then you need to install the proper repository. Replace $DISTRO with the release name depending on your Debian/Ubuntu distribution.

1
2
# curl -x http://$proxy_addr:$proxy_http_port -fsSL https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-$DISTRO.list >/etc/apt/sources.list.d/openvpn3.list
# apt update

Supported distributions:

Distribution Release Release name ($DISTRO) Architecture DCO support
Ubuntu 20.04 focal amd64, arm64* yes*
Ubuntu 21.10 impish amd64, arm64* yes*
Ubuntu 22.04 jammy amd64, arm64* yes*

And finally the openvpn3 package can be installed

1
# apt install openvpn3

apt需要代理看 apt-get install proxy

openvpn3使用

要提前保留ipv6, 没有设置“流量走当前机器”ssh会断联

Once you’ve moved the file to your Linux system, you can import it.

1
2
openvpn3 config-import --config ${client.ovpn}
Configuration imported. Configuration path: /net/openvpn/v3/configuration/1f475d5cx8d2fx4ef5x8feex25f2871f2642

You can start a new VPN session:

1
2
openvpn3 session-start --config ${client.ovpn}
Configuration imported. Configuration path: /net/openvpn/v3/configuration/1f475d5cx8d2fx4ef5x8feex25f2871f2642

You can manage a running VPN session:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
openvpn3 sessions-list
-----------------------------------------------------------------------------
Path: /net/openvpn/v3/sessions/f83c75e4sd56cs4b27s85bcsc5c6e3ce074e
Created: Thu Oct 6 20:37:29 2022 PID: 1034954
Owner: shaojiemike Device: tun1
Config name: node5-client.ovpn
Session name: snode6.swangeese.fun
Status: Connection, Client connected
-----------------------------------------------------------------------------

$ openvpn3 session-manage
session-manage: ** ERROR ** One of --pause, --resume, --restart, --disconnect, --cleanup or --log-level must be present

$ openvpn3 session-manage --pause -c node5-client.ovpn
Initiated session pause: /net/openvpn/v3/sessions/f83c75e4sd56cs4b27s85bcsc5c6e3ce074e

需要进一步的研究学习

netplan 的 rule from to table

ip route

ip rule指令学习

iptables

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

基于kylemanna/docker-openvpn

https://openvpn.net/vpn-server-resources/connecting-to-access-server-with-linux/

Tcpdump & wireshark

命令行查看当前机器公网ip

1
2
> curl myip.ipip.net
当前 IP:117.136.101.72 来自于:中国 安徽 移动

检测机器端口开放

1
2
3
4
# 网页服务直接下载检查内容
wget 4.shaojiemike.top:28096
# -z 选项指示 nc 仅扫描打开的端口,而不发送任何数据,并且 -v 用于获取更多详细信息。
nc -z -v 4.shaojiemike.top 28096

或者扫描指定端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# IPV6 也行
$ nmap -6 -p 8096 2001:da8:d800:611:5464:f7ab:9560:a646
Starting Nmap 7.80 ( https://nmap.org ) at 2023-01-04 19:33 CST
Nmap scan report for 2001:da8:d800:611:5464:f7ab:9560:a646
Host is up (0.00099s latency).

PORT STATE SERVICE
8096/tcp open unknown

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

$ nmap -p 28096 4.shaojiemike.top
Starting Nmap 7.80 ( https://nmap.org ) at 2023-01-04 19:19 CST
Nmap scan report for 4.shaojiemike.top (114.214.181.97)
Host is up (0.0011s latency).

PORT STATE SERVICE
28096/tcp open unknown

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

全部端口,但是会很慢。50分钟

1
sudo nmap -sT -p- 4.shaojiemike.top

wireshark

显示过滤

上方的过滤窗口

1
2
3
4
5
tcp.port==80&&(ip.dst==192.168.1.2||ip.dst==192.168.1.3)

ip.addr ==192.168.1.1 //显示所有目标或源地址是192.168.1.1的数据包
eth.addr== 80:f6:2e:ce:3f:00 //根据MAC地址过滤,详见“wireshark过滤MAC地址/物理地址”
tcp.port==23

捕捉过滤

抓包前在capture option中设置,仅捕获符合条件的包,可以避免产生较大的捕获文件和内存占用,但不能完整的复现测试时的网络环境。

1
2
3
host 192.168.1.1 //抓取192.168.1.1 收到和发出的所有数据包
src host 192.168.1.1 //源地址,192.168.1.1发出的所有数据包
dst host 192.168.1.1 //目标地址,192.168.1.1收到的所有数据包

color 含义

tcpdump

传统命令行抓包工具

常用参数

注意过滤规则间的and

  1. -nn :
    1. 单个 n 表示不解析域名,直接显示 IP;
    2. 两个 n 表示不解析域名和端口。
    3. 方便查看 IP 和端口号,
    4. 不需要域名解析会非常高效。
  2. -i 指定网卡 -D查看网卡
  3. -v-vv-vvv 来显示更多的详细信息
  4. port 80 抓取 80 端口上的流量,通常是 HTTP。在前面加src,dst限定词
    1. tcpudmp -i eth0 -n arp host 192.168.199 抓取192.168.199.* 网段的arp协议包,arp可以换为tcp,udp等。
  5. -A,-X,-xx会逐渐显示包内容更多信息
  6. -e : 显示数据链路层信息。
    1. 默认情况下 tcpdump 不会显示数据链路层信息,使用 -e 选项可以显示源和目的 MAC 地址,以及 VLAN tag 信息。

输出说明

1
192.168.1.106.56166 > 124.192.132.54.80
  1. ip 是 192.168.1.106,源端口是 56166,
  2. 目的地址是 124.192.132.54,目的端口是 80。
  3. > 符号代表数据的方向。

Flags

常见的三次握手 TCP 报文的 Flags:

1
2
3
4
5
[S] : SYN(开始连接)
[.] : 没有 Flag
[P] : PSH(推送数据)
[F] : FIN (结束连接)
[R] : RST(重置连接)

常见用途

  1. 根据目的IP,筛选网络经过的网卡和端口
  2. 能抓各种协议的包比如ping,ssh

案例分析

1
curl --trace-ascii - www.github.com

github ip 为 20.205.243.166

ifconfig显示 ibs5的网卡有21TB的带宽上限,肯定是IB卡了。

1
2
3
4
5
6
7
8
9
10
11
sudo tcpdump -i ibs5 '((tcp) and (host 20.205.243.166))'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ibs5, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
15:53:53.848619 IP snode0.59878 > 20.205.243.166.http: Flags [S], seq 879685062, win 64128, options [mss 2004,sackOK,TS val 4096492456 ecr 0,nop,wscale 7], length 0
15:53:53.952705 IP 20.205.243.166.http > snode0.59878: Flags [S.], seq 1917452372, ack 879685063, win 65535, options [mss 1436,sackOK,TS val 1127310087 ecr 4096492456,nop,wscale 10], length 0
15:53:53.952728 IP snode0.59878 > 20.205.243.166.http: Flags [.], ack 1, win 501, options [nop,nop,TS val 4096492560 ecr 1127310087], length 0
15:53:53.953208 IP snode0.59878 > 20.205.243.166.http: Flags [P.], seq 1:79, ack 1, win 501, options [nop,nop,TS val 4096492561 ecr 1127310087], length 78: HTTP: GET / HTTP/1.1
15:53:54.058654 IP 20.205.243.166.http > snode0.59878: Flags [P.], seq 1:89, ack 79, win 64, options [nop,nop,TS val 1127310193 ecr 4096492561], length 88: HTTP: HTTP/1.1 301 Moved Permanently
15:53:54.058668 IP snode0.59878 > 20.205.243.166.http: Flags [.], ack 89, win 501, options [nop,nop,TS val 4096492666 ecr 1127310193], length 0
15:53:54.059092 IP snode0.59878 > 20.205.243.166.http: Flags [F.], seq 79, ack 89, win 501, options [nop,nop,TS val 4096492667 ecr 1127310193], length 0
15:53:54.162608 IP 20.205.243.166.http > snode0.59878: Flags [F.], seq 89, ack 80, win 64, options [nop,nop,TS val 1127310297 ecr 4096492667], length 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ sudo tcpdump -i ibs5 -nn -vvv -e '((port 80) and (tcp) and (host 20.205.243.166))'                                                                                                                                                 tcpdump: listening on ibs5, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
16:09:38.743478 Out ethertype IPv4 (0x0800), length 76: (tos 0x0, ttl 64, id 15215, offset 0, flags [DF], proto TCP (6), length 60)
10.1.13.50.38376 > 20.205.243.166.80: Flags [S], cksum 0x1fd5 (incorrect -> 0x98b6), seq 1489092902, win 64128, options [mss 2004,sackOK,TS val 4097437351 ecr 0,nop,wscale 7], length 0
16:09:38.848164 In ethertype IPv4 (0x0800), length 76: (tos 0x0, ttl 48, id 0, offset 0, flags [DF], proto TCP (6), length 60)
20.205.243.166.80 > 10.1.13.50.38376: Flags [S.], cksum 0x69ba (correct), seq 3753100548, ack 1489092903, win 65535, options [mss 1436,sackOK,TS val 3712395681 ecr 4097437351,nop,wscale 10], length 0
16:09:38.848212 Out ethertype IPv4 (0x0800), length 68: (tos 0x0, ttl 64, id 15216, offset 0, flags [DF], proto TCP (6), length 52)
10.1.13.50.38376 > 20.205.243.166.80: Flags [.], cksum 0x1fcd (incorrect -> 0x9613), seq 1, ack 1, win 501, options [nop,nop,TS val 4097437456 ecr 3712395681], length 0
16:09:38.848318 Out ethertype IPv4 (0x0800), length 146: (tos 0x0, ttl 64, id 15217, offset 0, flags [DF], proto TCP (6), length 130)
10.1.13.50.38376 > 20.205.243.166.80: Flags [P.], cksum 0x201b (incorrect -> 0x9f0a), seq 1:79, ack 1, win 501, options [nop,nop,TS val 4097437456 ecr 3712395681], length 78: HTTP, length: 78
GET / HTTP/1.1
Host: www.github.com
User-Agent: curl/7.68.0
Accept: */*

16:09:38.954152 In ethertype IPv4 (0x0800), length 156: (tos 0x0, ttl 48, id 45056, offset 0, flags [DF], proto TCP (6), length 140)
20.205.243.166.80 > 10.1.13.50.38376: Flags [P.], cksum 0x024d (correct), seq 1:89, ack 79, win 64, options [nop,nop,TS val 3712395786 ecr 4097437456], length 88: HTTP, length: 88
HTTP/1.1 301 Moved Permanently
Content-Length: 0
Location: https://www.github.com/

16:09:38.954207 Out ethertype IPv4 (0x0800), length 68: (tos 0x0, ttl 64, id 15218, offset 0, flags [DF], proto TCP (6), length 52)
10.1.13.50.38376 > 20.205.243.166.80: Flags [.], cksum 0x1fcd (incorrect -> 0x949a), seq 79, ack 89, win 501, options [nop,nop,TS val 4097437562 ecr 3712395786], length 0
16:09:38.954884 Out ethertype IPv4 (0x0800), length 68: (tos 0x0, ttl 64, id 15219, offset 0, flags [DF], proto TCP (6), length 52)
10.1.13.50.38376 > 20.205.243.166.80: Flags [F.], cksum 0x1fcd (incorrect -> 0x9498), seq 79, ack 89, win 501, options [nop,nop,TS val 4097437563 ecr 3712395786], length 0
16:09:39.060177 In ethertype IPv4 (0x0800), length 68: (tos 0x0, ttl 48, id 45057, offset 0, flags [DF], proto TCP (6), length 52)
20.205.243.166.80 > 10.1.13.50.38376: Flags [F.], cksum 0x95e2 (correct), seq 89, ack 80, win 64, options [nop,nop,TS val 3712395892 ecr 4097437563], length 0
16:09:39.060221 Out ethertype IPv4 (0x0800), length 68: (tos 0x0, ttl 64, id 15220, offset 0, flags [DF], proto TCP (6), length 52)
10.1.13.50.38376 > 20.205.243.166.80: Flags [.], cksum 0x1fcd (incorrect -> 0x93c4), seq 80, ack 90, win 501, options [nop,nop,TS val 4097437668 ecr 3712395892], length 0
16:09:46.177269 Out ethertype IPv4 (0x0800), length 76: (tos 0x0, ttl 64, id 38621, offset 0, flags [DF], proto TCP (6), length 60)

snode0 ip 是 10.1.13.50

traceroute

mtr = traceroute+ping

1
2
3
4
5
$ traceroute www.baid.com
traceroute to www.baidu.com (182.61.200.6), 30 hops max, 60 byte packets
1 acsa-nfs (10.1.13.1) 0.179 ms 0.180 ms 0.147 ms
2 192.168.252.1 (192.168.252.1) 2.016 ms 1.954 ms 1.956 ms
3 202.38.75.254 (202.38.75.254) 4.942 ms 3.941 ms 4.866 ms

traceroute命令用于显示数据包到主机间的路径。

NETWORKMANAGER 管理

1
2
3
4
5
6
7
8
9
# shaojiemike @ snode0 in /etc/NetworkManager [16:49:55]
$ nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
disconnected unknown enabled enabled enabled enabled

# shaojiemike @ snode0 in /etc/NetworkManager [16:50:40]
$ nmcli connection show
NAME UUID TYPE DEVICE
InfiniBand connection 1 7edf4eea-0591-48ba-868a-e66e8cb720ce infiniband --

好像之前使用过的样子。

1
2
3
4
5
6
7
8
9
10
11
12
13
# shaojiemike @ snode0 in /etc/NetworkManager [16:56:36] C:127
$ service network-manager status
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-03-14 11:52:06 CST; 1 months 10 days ago
Docs: man:NetworkManager(8)
Main PID: 1339 (NetworkManager)
Tasks: 3 (limit: 154500)
Memory: 12.0M
CGroup: /system.slice/NetworkManager.service
└─1339 /usr/sbin/NetworkManager --no-daemon

Warning: some journal files were not opened due to insufficient permissions.

应该是这个 Secure site-to-site connection with Linux IPsec VPN 来设置的

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

FJW说所有网络都是通过NFS一起出去的

参考文献

WebCrawler first try

常见的仿站软件尝试

  1. wget -c -r -np -k -L -p 递归下载
  2. webCopy
  3. WinHTTrack
  4. Octoparse
  5. Teleport pro

遇到的问题

尝试后下载了一些html\css\js文件。但是没有达到我的要求。

我猜测的爬取原理,根据网站返回的index.html以及文件里指向的新文件路径进行递归下载。

这样的问题有:

  1. 无法对json文件里指向的材质包路径进行递归下载
  2. 无法读取指定网站文件夹的目录,导致不知道文件夹里有什么文件
    1. 假如有ftp://可能可以

需要进一步的研究学习

  1. 通过python实现对json文件里指向的材质包路径进行递归下载(感觉只能半自动)
  2. 读取指定网站文件夹的目录

开题缘由、总结、反思、吐槽~~

在找live2d模型的时候找到了 https://github.com/Eikanya/Live2d-model ,然后其中有个HSO的demo网站https://l2d.alg-wiki.com/。

然后一开始我想在自己页面做一个仿站,后来了解后只想把他里面的live2d的材质数据、贴图等爬下来。但是遇到了几个问题。

参考文献

https://www.shuzhiduo.com/A/E35pV9EAzv/

python crawler

FTP 2 : debug

选项含义

  1. 只能下载。不能上传、删除、重命名。write_enable=NO
  2. 只能上传、删除、重命名。不能下载。download_enable=NO
    1
    2
    STOR - store a file on the remote host 上传文件
    RETR - retrieve a remote file 下载文件

遇到的问题

  1. 修改好后,上传文件mkdir都会报错
    1
    550 Permission denied.
    write_enable=YES
    也不对,user_config_dir的注释忘改了
  2. 用虚拟用户配置
    1
    响应:	500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    解决办法
    1
    2
    3
    write_enable=YES
    allow_writeable_chroot=YES
    chmod 755 upload
  3. 无法下载,是符合实际应用情况。但是如何改变
    我以为只要 cmds_allowed=RETR
    报错
    1
    550 Failed to open file.
    1
    sudo chmod 644 index3.html
  4. 可以删除文件。可以通过创建多个虚拟账号弥补。
    禁止删除(去除DELE)
    1
    cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
    或者
    1
    cmds_denied=DELE

参考文献

VSFTPD实现用户权限不能删除 只能上传、下载

OpenVPN

实验室OpenVPN使用场景

  1. 首先有一个常年挂网络通的,可以校外网IP直连的机器A。
  2. 使用OpenVPN,将对内网机器的ssh请求,通过A机器转发。

所以如果没有可以校外网IP直连的机器A,OpenVPN是没有意义的。

配置OpenVPN服务器端

google openvpn查看 ubuntu
https://ywnz.com/linuxyffq/3952.html

  1. 安装OpenVPN服务
  2. 安装easy-rsa,用来制作证书
    1
    wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz
    1. 生成CA证书(crt=cert)
      有ca.crt和ca.key两个文件
    2. 生成server端证书
      1. KEY_NAME = qszyvpn
      2. 应有qszyvpn.crt、qszyvpn.csr、qszyvpn.key三个文件
      3. 为服务器生成加密交换时的秘钥协议,应有dh2018.pem文件
    3. 生成Client端证书
      1. 应有client1.crt、client1.csr、client1.key三个文件
  3. 修改配置文件server.conf
  4. 配置规则
  5. 运行
    1
    /etc/init.d/openvpn start
  6. 查看端口占用
    1
    netstat -tunlp |grep 1194

具体服务器端文件生成命令

test on snode0

1
2
3
4
5
6
7
8
9
# 安装
sudo apt-get install openvpn
sudo apt-get install easy-rsa
# 配置easy-rsa
cd /etc/openvpn/server
cp -r /usr/share/easy-rsa/ .
## 拷贝模板并修改vars的参数
cp vars.example vars
vim vars

1
2
3
4
5
6
7
8
9
10
# 配置Easyrsa及生成公钥
./easyrsa init-pki
Note: using Easy-RSA configuration from: ./vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/server/easy-rsa/pki
./easyrsa build-ca nopass
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:acsa
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/server/easy-rsa/pki/ca.crt

“nopass”参数是避免每次都要输入密码,可选项
这一步完成后,在pki目录下会生成ca.crt,pki/private目录下生成ca.key

1
2
3
4
5
6
7
8
# 生成服务器私钥和请求
./easyrsa gen-req shaojie nopass
Common Name (eg: your user, host, or server name) [shaojie]:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/server/easy-rsa/pki/reqs/shaojie.req
key: /etc/openvpn/server/easy-rsa/pki/private/shaojie.key
# 拷贝服务器私钥文件到openvpn配置文件目录下
cp pki/private/shaojie.key /etc/openvpn/server

因为同一台服务器即做CA服务器又做VPN服务器,自己给自己签发的时候会生成同名文件,先把服务器的请求文件改个名,再导入请求

1
2
3
4
5
6
7
# 生成服务器证书
mv pki/reqs/shaojie.req pki/reqs/shaojieServer.req
./easyrsa import-req pki/reqs/shaojieServer.req shaojie
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: shaojie
You may now use this name to perform signing operations on this request.
./easyrsa sign-req server shaojie


将两个shaojie.crt文件和ca.crt文件一起复制到openvpn配置文件目录下

1
2
3
4
5
6
cp pki/ca.crt pki/issued/shaojie.crt /etc/openvpn/server
# 生成加密文件(可选,可以提高VPN安全性),这个比较慢,需要稍等几分钟
./easyrsa gen-dh
DH parameters of size 2048 created at /etc/openvpn/server/easy-rsa/pki/dh.pem
openvpn --genkey --secret ta.key #生成随机密钥(仅适用于非TLS静态密钥加密模式):--genkey : 生成一个随机密钥作为共享密钥
cp ta.key pki/dh.pem /etc/openvpn/server

至此,服务器端文件:ca.crt dh.pem easy-rsa shaojie.crt shaojie.key ta.key准备好了

openvpn配置文件

1
2
3
4
# 拷贝解压
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server
gzip -d /etc/openvpn/server/server.conf.gz
vim /etc/openvpn/server/server.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 监听的端口号,默认1194,如果要改的话防火墙也要相应修改。(可选)
port 1194

#TCP或UDP,如改成tcp的话,通常端口相应修改成443
;proto tcp
proto udp

# 设置SSL/TLS根证书(ca)、证书(cert)和私钥(key),记得我的服务器名是axvpn,这里也要相应修改 (必选)
ca ca.crt
cert shaojie.crt
key shaojie.key

# 指定迪菲·赫尔曼参数。
# 默认是dh2048.pem, 记得我们生成了dh.pem,改下 (必选)
dh dh.pem

# 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网。 (可选)
# 就是允许客户端访问VPN服务器自身所在的其他局域网
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "route 10.111.0.0 255.255.0.0"

# 如果启用该指令,所有客户端的默认网关都将重定向到VPN,这将导致诸如web浏览器、DNS查询等所有客户端流量都经过VPN。(可选)
;push "redirect-gateway def1 bypass-dhcp"

# 某些具体的Windows网络设置可以被推送到客户端,例如DNS或WINS服务器地址。(可选)
# 下列地址来自opendns.com提供的Public DNS 服务器。
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
push "dhcp-option DNS 8.8.8.8"

# 如果有注释的话,取消这句的注释,再加一句 (必选)
#防DDOS攻击,openvpn控制通道的tls握手进行保护,服务器端0,客户端1
tls-auth ta.key 0 # 该文件应该保密
key-direction 0

# 选择一个密码加密算法。
# 该配置项也必须复制到每个客户端配置文件中。
# 添加SHA256算法
cipher AES-256-CBC
auth SHA256

# 在完成初始化工作之后,降低OpenVPN守护进程的权限, (最好取消注释)
# 该指令仅限于非Windows系统中使用。
user nobody
group nobody

# Notify the client that when the server restarts so it
# can automatically reconnect.
# 如果协议改成了TCP,这里数值要改成0
explicit-exit-notify 1

#推送一条路由信息给客户端
#推送路由,若是推送失败,需要检查server 是否设置正常,该故障我遇到过,设置ifconfig-pool了,发现推送失效
push "route 192.168.11.0 255.255.255.0" #(即这个网段的IP的信息都经过VPN)

#记录日志,每次重新启动openvpn后追加原有的log信息
log-append /var/log/openvpn.log

配置OpenVPN客户器端


或者设置isc.ovpn(中间两项是client的)

1
2
3
4
ca ca.crt
cert ???.crt
key ???.key
tls-crypt tc.key

OneDrive下有snode6的ovpn文件

具体客户器端文件生成命令

1
2
3
4
5
6
7
8
9
10
11
12
# 生成客户端私钥和请求
./easyrsa gen-req tsjclient nopass
Common Name (eg: your user, host, or server name) [tsjclient]:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/server/easy-rsa/pki/reqs/tsjclient.req
key: /etc/openvpn/server/easy-rsa/pki/private/tsjclient.key
# 同理生成证书
mv pki/reqs/tsjclient.req pki/reqs/tsjclient2.req
./easyrsa import-req pki/reqs/tsjclient2.req tsjclient
./easyrsa sign-req client tsjclient
# 保存所需密钥、证书和之前的ta.key ca.crt
cp pki/private/tsjclient.key pki/issued/tsjclient.crt ta.key pki/ca.crt ../../client

OpenVPN的查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sudo service openvpn status
● openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2021-04-24 20:40:13 UTC; 2 months 22 days ago
Main PID: 1691 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 154190)
Memory: 0B
CGroup: /system.slice/openvpn.service

Warning: journal has been rotated since unit was started, output may be incomplete.
$ cat server.conf
local 202.38.73.26
port 1194
proto udp
dev tun #tun路由模式,tap桥模式,据说tun效率高于tap,但是tun只能转发IP数据,tap是二层可以封装任何协议,window下只有tap模式
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-crypt tc.key # 新加入 ,不使用 tls-auth ta.key 0 改用 tls-crypt tc.key openvpn 2.4 版的新參數
topology subnet # OpenVPN默认的拓扑方式是net30:表示掩码30位,有地址浪费
server 10.8.0.0 255.255.255.0 #定义分配给客户端的IP段,服务端自己默认使用第一个可用地址
ifconfig-pool-persist ipp.txt #在openvpn重启时,再次连接的客户端将依然被分配和以前一样的IP地址
# push表示推送,即将配置推送给客户端,让客户端也使用
push "redirect-gateway def1 bypass-dhcp" #重定向默认网关 此设置将路由/强制所有流量通过VPN。
push "dhcp-option DNS 202.38.64.56" #指定客户端使用的主DNS
push "dhcp-option DNS 202.38.64.17" #指定客户端使用的备DNS
server-ipv6 2001:0db8:ee00:abcd::/64
push "route-ipv6 2001:da8:d800:811:ae1f:6bff:fe8a:e4ba/64"
push "route-ipv6 2000::/3"
keepalive 10 120 #表示每隔10秒ping一下客户端/服务端,若是120秒内无响应,认为down,随即重启openvpn(强烈开启)
auth SHA512 # 加密算法
cipher AES-256-CBC
user nobody # 待openvpn初始化完成后,将其降级为nobody权限运行
group nogroup
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
status openvpn-status.log #状态文件:定期(默认60s)把状态信息写到该文件,以便自己写程序计费或者进行其他操作(需要关闭selinux)
verb 3 #日志记录级别,可选0-9,0只记录错误信息,4能记录普通的信息,5和6在连接出现问题时能帮助调试,9显示所有信息,甚至连包头等信息都显示(像tcpdump)
crl-verify crl.pem # crl证书 ./easyrsa gen-crl产生,默认180天过期
explicit-exit-notify # 如果协议改成了TCP,这里数值要改成0

OpenVPN配置文件通常位于/etc/openvpn中,通常命名为*.conf。 server.conf是规范的;客户端配置文件名通常类似于.conf


subnet(子网拓扑)

注意用户ccd文件固定ip时候写法变成了:

1
ifconfig-push 10.8.0.3 255.255.255.0

10.8.0.3是给VPN用户分配的虚拟IP,其服务端是server 10.8.0.0 255.255.255.0,也就是10.8.0.0/24,用户只能获取到10.8.0.X的虚拟IP,去掉10.8.0.1、10.8.0.255就只剩下253个可分配的IP池了。

重定向默认网关

为什么要重定向网关:vpn客户端是经常出差的,网络环境不安全,希望它将所有流量传到公司,经公司出口

其中包含的flags有”local autolocal def1 bypass-dhcp bypass-dns block-local ipv6 !ipv4”(多个标志之间用空格分隔),

推荐使用def1,它使用0.0.0.0/1和128.0.0.0/1而不是0.0.0.0/0来覆盖默认网关,即有新路由也保留原始默认网关,只是优先匹配而已

block-local 是表示当客户端拨入后,阻断其除与本地网关的访问外,本地的其他IP都不允许访问

PKI

Public Key Infrastructure(PKI),中文叫做公开密钥基础设施,也就是利用公开密钥机制建立起来的基础设施。

  1. PKI的核心是身份证明书的发行
  2. PKI的世界里,这个身份证明书,被叫做“证明书”。发行“证明书”的机关叫做“认证机关”。还有一个就是统一管理证明书的证书“档案库/证书库”。这三个东西加起来,就是PKI的主要构成要素。
    1. 证明书是被存放在硬盘或者IC卡里面的。证明书的文件构造是一种叫做 X.509 的协议规定的。另一方面,认证机关也其实就是一个网络应用程序。
  3. PKI提供的证明书可以用来 身份确认 和 通信加密。
    1. 用“证明书中的密钥”加密过的内容,只能用自己才有的另一个“私人的密钥”才能解密。这样的话,如果你发送给自己的内容被他人窃取的话,他人也无法解密。
    2. 在PKI机制中,放在“证明书里面的密钥”可以被任意自由分发,这里的“证明书里的密钥”被叫做“公开密钥(Public Key)”。与此相对,本人保管的那个“私人的密钥”就要做“私有密钥(Private Key)”。
  4. 认证机关的可信度,直接与证书的可信度挂钩,也就是与整个PKI机制的可信度息息相关。
    1. 在技术上,伪造证明书是非常简单的。所谓假的证明书,比如说有一个所谓的“比尔的证明书”,但是里面含有的公开密钥是史提芬的公开密钥。那么,别人发给比尔的信息,史蒂芬可以解密,反而比尔自己不能解密。

如何查看OpenVPN已连接的用户

将标志–management IP port [pw-file]添加或将相同的指令添加到您的中server.conf,例如:

management localhost 7505

这将允许您远程登录到该端口,并为您提供要运行的命令列表:

telnet localhost 7505

help

需要进一步的研究学习

暂无

遇到的问题

暂无

参考文献

5分钟让你知道什么是PKI

https://www.wsfnk.com/archives/698.html

USTC Network Information Center

科大各个校区的IP

  1. 根据中国各地IP分布图
    1. 科大的IP如下,但是我还是不知道是哪个区的
      1. 114.214.160.0 114.214.255.255 我的IP在这,这可能是西区
    2. 西区活动中心机器IP
      1. 210.45.112.144
      2. 202.38.72.23 中国科学技术大学教育网
      3. 222.195.72.118
    3. 瀚海机器
      1. 211.86.151.101
  2. wlt之前有个各网络出口,现在403了

如何根据IP确定地址(比省市更具体)

http://ip.yqie.com/ip.aspx?ip=210.45.112.144

只能查询到都是科大的地址

如何判断IP是动态还是静态

vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp 说明是DHCP 获得的地址
可是机器上就没有/etc/sysconfig/这个目录???

科大网络提供哪些服务


只有校内教工才可以申请域名。

个人主页ftp系统服务

  1. 教工服务器的域名为 staff.ustc.edu.cn, IP 地址为 202.38.64.11。
    个人主页网络地址形式为 http://staff.ustc.edu.cn/~username
    学生服务器的域名为 home.ustc.edu.cn, IP地址为 202.38.64.10。
    个人主页网络地址形式为 http://home.ustc.edu.cn/~username
  2. 这两台服务器均支持 IPv6访问,域名分别是 staff6.ustc.edu.cn 和 home6.ustc.edu.cn 。
  3. 出于安全考虑,个人主页不支持 php 等服务器端程序。
  4. 用命令行方式登录 FTP 系统时会提示用户的使用情况(注:有些 ftp客户程序如IE不显示这些消息),如提示“Login OK, used 11M of 200M.”

而且我发现科大的IP都属于”国内免费IP地址”指中国教育和科研网免费地址列表范围内的IP地址。列表

主页代理是什么?

没有主页代理以前,用户的主页放在某台计算机上,可以被访问的范围就取决于这台计算机的IP地址开通的范围。利用主页代理技术,Internet上所有的计算机都可以通过域名访问用户的主页,而且没有流量费。

主页代理要求用户为自己的主页申请一个域名,指向网络中心的主页代理服务器,并把自己的主页放在校园网络上的某台计算机(不含宿舍网络、VPN以及无线上网的计算机 )上。当网络上的某台计算机通过域名访问到网络中心的主页代理服务器时,主页代理服务器就会从用户的计算机上把主页内容取过来,并返回给访问的计算机。

静态IP出校管理

1
2
3
4
5
telnet 202.38.64.59 8888
Your IP is 202.38.73.26:

Sorry, your IP has no right to go out USTCnet.
Connection closed by foreign host.

电子邮件

我校邮件系统的主页网址是 http://email.ustc.edu.cn(普通,非SSL加密)和 https://mail.ustc.edu.cn(SSL加密),供用户免费使用,默认,教师用户空间为4GB,学生用户空间为500MB。

另:各有1GB作为“网络存储”(即“网络磁盘”)用于存放用户的个人文件;具有个人主页和FTP服务,详见个人主页/FTP系统。

学生毕业离校或者教工离职半年后,邮箱可以继续使用,但容量将会缩减,个人主页和FTP系统权限也取消。

我校邮件系统支持POP3/IMAP收信协议和SMTP发信协议,IP地址同为202.38.64.8,设置时需要身份验证,用户名和密码同邮件。

电子邮件地址形式为:
教工:***@ustc.edu.cn
学生:***@mail.ustc.edu.cn

需要进一步的研究学习

linux如何判断IP是动态还是静态

参考文献

https://netfee.ustc.edu.cn/faq/index.html#netacctypes

ServerLogin

ip a输出的含义

ip a = ip address

  1. lo是linux中的虚拟网络接口
    同一台机器的不同进程进行通信时会用到。实现了同一台机器的进程之间的socket通信。虚拟网络接口不需要驱动程序。
  2. link/ether是二层协议
    mac地址: ac:1f:6b:8a:e4:ba
    广播地址:ff:ff:ff:ff:ff:ff
  3. inet(v4)是三层协议
    ip地址:202.38.73.26/24
    广播地址:202.38.73.255
  4. inet6是三层协议
    ipv6地址:fe80::ae1f:6bff:fe8a:e4ba/64

名词解释

  1. LOWER_UP 是物理层链路标志(网络层以下的层,IP 一般位于此层)。 LOWER_UP 表示插入了以太网电缆并且设备已连接到网络。
  2. LOOPBACK 接口不与其他主机通信。 通过它发送的所有数据包都将被返回,只能接收被退回的数据包。
  3. BROADCAST——该设备具有向共享同一链路的所有主机发送数据包的功能。一个典型的例子是以太网链路。
  4. POINTOPOINT——链路只有两端,每一端连接一个节点。发送到此链接的所有数据包都将到达对等方,我们收到的所有数据包都来自这个对等方。
  5. NBMA 如果 LOOPBACK、BROADCAST 和 POINTOPOINT 均未设置,则假定接口为 NMBA(非广播多路访问)。这是最通用的设备类型,也是最复杂的设备类型,因为连接到 NBMA 链接的主机无法在没有额外配置信息的情况下发送给任何人。
  6. MULTICAST – 是一个咨询标志,指示接口知道多播,即将数据包发送到相邻节点的某个子集。广播是多播的一种特殊情况,其中多播组由链路上的所有节点组成。需要强调的是,软件不得将缺少此标志解释为无法在此接口上使用多播。根据定义,任何 POINTOPOINT 和 BROADCAST 链路都是多播的,因为我们可以直接访问所有邻居,因此可以直接访问它们的任何部分。当然,由于费用高,不建议在纯广播链路上使用高带宽组播传输,但并非严格禁止。
  7. the loopback “lo,” the ethernet以太网(以太网是一种计算机局域网技术) “eth0,” and the WiFi “wlan0.”
  8. mtu 1500:``maximal transfer unit’’最大传输单位为1500
  9. qdisc :``queuing discipline’’显示了接口上使用的排队算法。
    1. noqueue 表示该接口不排队任何东西,
    2. noop 表示该接口处于黑洞模式,即发送给它的所有数据包都被立即丢弃。
    3. mq 调度器做两件事:
      将设备 TX 队列作为类,允许将不同的 qdiscs 附加到它们,这些 qdiscs 被嫁接到 TX 队列
      当前所有设备队列根 qdiscs 的累积统计信息
      它默认用于多队列设备而不是常规的 pfifo_fast qdisc,但也可以手动附加以在附加非多队列(共享)qdisc 后恢复多队列行为。
  10. state UP:网络接口已启动
  11. group default:接口组
  12. qlen 1000:传输队列长度
  13. scope global eth0: 任何地方有效
  14. scope link: 只在这个设备有效
  15. scope global dynamic mngtmpaddr noprefixroute 大概是动态的时刻变化来保证隐私的
  16. valid_lft forever: 有效生命周期
  17. preferred_lft forever: 首选寿命

其他名称解释

接口标志汇总在尖括号中:

  1. PROMISC——设备监听链路上的所有流量并将其提供给内核,即使这些流量不是发往我们的,不是广播的,也不是发往我们所属的多播组的。 通常这种模式只存在于广播链路上,用于网桥和网络监控。
  2. ALLMULTI – 设备接收在链路上徘徊的所有多播数据包。 此模式由多播路由器使用。
  3. NOARP——这个标志与其他标志不同。 它没有不变的值,其解释取决于所涉及的网络协议。 通常,它表示设备不需要地址解析,并且软件或硬件知道如何在没有协议栈任何帮助的情况下传送数据包。
  4. DYNAMIC – 是一个咨询标志,指示接口是动态创建和销毁的。
  5. SLAVE——这个接口绑定到一些其他接口以共享链接容量。

广播地址是什么

网络中的每个机器的网卡都接收所有的包,而网络层以后就只接收两种包了,
一种是目标地址是自己的,另外一种就是目标地址是广播地址的,
广播地址是你的网络号和决定的,除了网络号部分的地方全是1(二进制的 1)即可
举例:
你的ip是192.168.1.1 掩码是255.255.255.0 那么你的网络号是192.168.1 而你的广播地址就是:192.168.1.255 了。
那么你的操作系统会把发向 192.168.1.1 和 192.168.1.255 的包接收下来处理,那么发送 这个广播消息的机器就是利用“广播地址在子网中传播信息”了。

什么情况下能访问私有地址?


处于同一个网关下

怎么判断网络处于同一个网关下

想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中。

网关、路由器、三层交换机是什么,区别

网关

网关是一个大概念,不具体特指一类产品,只要连接两个不同的网络的设备都可以叫网关;而‘路由器’么一般特指能够实现路由寻找和转发的特定类产品,路由器很显然能够实现网关的功能。

换句话说,路由器可以实现网关的功能,但是路由器功能不仅仅是实现网关;网关可以由路由器实现,但是也不仅仅是由路由器实现

与网桥只是简单地传达信息不同,当信息到达网关以后,网关要对信息重新进行加工,以适应目的系统的需求。

交换机

交换机:工作在数据链路层,原理等同于多端口网桥。作用是连接数个相同网段的不同主机,减少网内冲突,隔离冲突域。利用存储转发和过滤技术来从物理上分割网段。

路由器(Router)

是连接因特网中各局域网、广域网的设备,是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。

当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。

因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。它会根据信道的情况自动选择和设定路由,以***路径,按前后顺序发送信号。

路由器和交换机的区别

路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换机在移动信息的过程中需使用不同的控制信息,所以说两者实现各自功能的方式是不同的。

chivier服务器动态公网IP说法存疑

服务器开机的时候也没有连wlt,也有IP

服务器IP到底是不是内网

看ip a可以判断

修改DNS服务器,从外面能不能访问到内网

并不能,DNS服务器只是域名与IP地址的映射,你需要链接到网关才能找到内网ip

需要进一步的研究学习

暂无

遇到的问题

暂无

参考文献

https://netbeez.net/blog/linux-interface-information/

http://linux-ip.net/gl/ip-cref/ip-cref-node17.html

网络所属网关判断 https://network.51cto.com/art/201901/591192.htm

https://blog.csdn.net/miracleon/article/details/102250801