Linux Network Command Guide

导言

我想写关于 linux 网络命令 ip iptables ufw 的相关文档来全面表述linux网络的构成和如何控制管理

Read more

Linux Auto Run : crontab

crontab的使用

任务调度

Linux下的任务调度分为两类:系统任务调度和用户任务调度。

Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。

crontab 命令

1
2
crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
  • -u user:用于设定某个用户的crontab服务;
  • file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
  • -e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;
  • -l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;
  • -r:从/var/spool/cron目录中删除某个用户的crontab文件。
  • -i:在删除用户的crontab文件时给确认提示。

crontab文件

  • crontab有2种编辑方式:
    • 直接编辑/etc/crontab文件,其中/etc/crontab里的计划任务是系统中的计划任务,
    • 通过crontab –e来编辑用户的计划任务;
      • 每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。
      • 所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。
  • crontab中的command尽量使用绝对路径,否则会经常因为路径错误导致任务无法执行。
  • 新创建的cron job不会马上执行,至少要等2分钟才能执行,可从起cron来立即执行。
  • %在crontab文件中表示“换行”,因此假如脚本或命令含有%,需要使用\%来进行转义。

配置文件实例:

1
2
3
4
5
6
7
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/
MAILTO=root # MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
# * * * * * user-name command to be executed
@reboot /home/user/test.sh #可以实现开机自动运行
@reboot sleep 300 && /home/start.sh # 延时启动

@reboot 表示重启开机的时候运行一次。还有很多类似参数如下:

1
2
3
4
5
6
7
8
9
10
string             meaning
------ -----------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
1
2
3
4
5
6
7
8
9
10
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |

* */1 * * * /etc/init.d/smb restart # 每一小时重启smb

在以上各个字段中,还可以使用以下特殊字符:

  • *代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
  • /代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
  • -代表从某个区间范围,是闭区间。如2-5表示2,3,4,5
    • 组合:小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
  • ,分散的数字(不一定连续),如1,2,3,4,7,9

查看crontab的日志记录和状态

tail -f /var/log/cron观察查看cron运行日志(/var/log/cron.log),但是并未找到相关文件,原因是ubuntu默认没有开cron日志,执行命令:

1
sudo vim /etc/rsyslog.d/50-default.conf

找到cron.log相关行,将前面注释符#去掉,保存退出,重启rsyslog:

1
sudo  service rsyslog  restart

执行less -10 /var/log/cron.log再次查看cron运行日志,log出来了,提示如下信息:

1
No MTA installed, discarding output

原因是cron把屏幕输出都发送到email了,而当前环境并未安装email server,于是系统报错,解决方面就是不要直接向屏幕输出内容,而是重定向到一个文件。

1
2
cd /var/spool/mail/
less shaojiemike
1
service cron status # ubuntu

实例

夜间利用机器进行批量实验

如果Linux系统有时差,需要加8小时在0、3、6点。

1
0 0,3,6 * * * cd /home/t00906153/OpenSora/OpenSora_performance_test && git stash save "Stash before script run at $(date +"%Y-%m-%d %H:%M:%S")" && bash test/train_full_opensorav1_1.sh >> /home/t00906153/crontab.log 2>&1 && git stash pop && echo "Executed at $(date)" >> /home/t00906153/crontab.log

crontab on OpenWRT

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
# 1.编辑好脚本加入cron

crontab -e
* * * * * sh /root/tst.sh

# 2.创建cron初始化脚本 vi /etc/init.d/S60cron,添加下面内容

#!/bin/sh
#start crond
/usr/sbin/crond -c /etc/crontabs

# 修改权限
chmod 755 /etc/init.d/S60cron

# 3.手动启动crond
/etc/init.d/S60cron

# 4.查看crond任务
logread -e cron

# 5.重启crond
killall crond; /etc/init.d/S60cron

# 6.禁用crond日志 修改/etc/init.d/S60cron
/usr/sbin/crond -c /etc/crontabs -L /dev/null

其他自动化方法

https://zhuanlan.zhihu.com/p/35402730

https://blog.csdn.net/qq_35440678/article/details/80489102

https://neucrack.com/p/91

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

参考文献

https://www.linuxprobe.com/how-to-crontab.html

https://martybugs.net/wireless/openwrt/cron.cgi

IPV4 && IPV6

IPV4

展示了A、B、C类IP地址的二进制表示和它们的特征:

类别 地址范围 网络数 主机数 说明
A 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 1-126 2^24-2 第一位为0
B 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 128-191 2^16-2 前两位为10
C 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 192-223 2^8-2 前三位为110
D 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 224-239 不适用 用于多播
E 11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 240-255 不适用 保留用于实验和未来使用

在这个表格中:

  • A类地址的范围是从 0.0.0.0127.255.255.255,第一位必须是0。
  • B类地址的范围是从 128.0.0.0191.255.255.255,前两位必须是10。
  • C类地址的范围是从 192.0.0.0223.255.255.255,前三位必须是110。

D类和E类地址用于特殊用途,不用于普通的网络和主机地址分配。

拥抱ipv6

ipv6 原本是为了解决ipv4不足而提出的:

  • IPv4的地址范围是0.0.0.0~255.255.255.255,其地址总量约43亿个(2的32次方),这其中还要刨去私有网段、网络ID、广播ID、保留网段、本地环回、组播地址等特殊地址段,最终的实际可用地址约为25.68亿个,全球互联网设备数是远超这个的。所以一方面设计了私有地址来上网
  • 另一方面就是ipv6。IPv6的地址长度为128位,虽然地址长度仅仅是IPv4的4倍(IPv4是32位的),但IPv6的地址总量却达到了惊人的$2^{128}$。换一种更通俗的说法:地球上每一平方米,都可以分到10^26次方个IPv6地址,夸张一点来说,可以给每一粒尘埃都分配到一个地址。
Read more

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