Firewall
查看默认防火墙状态(关闭后显示not running,开启后显示running)
firewall-cmd --state
启动防火墙
systemctl start firewalld.service --启动firewall
[root@localhost ~]# systemctl enable firewalld.service --开机时启动firewall
关闭防火墙:
[root@localhost ~]#systemctl stop firewalld.service --停止firewall
[root@localhost ~]# systemctl disable firewalld.service --禁止firewall开机启动
查看firewalld的规则
firewall-cmd --list-all
查看端口和服务
firewall-cmd --zone=public --list-ports
查看端口,及每个端口运行的服务
netstat -ntlp
持久化规则,下次重启后依然有效
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --add-port=3306/udp --permanent
# 批量打开多个端口
firewall-cmd --add-port=4369/tcp --add-port=5672/tcp --add-port=15672/tcp --add-port=15674/tcp --add-port=15675/tcp --add-port=1883/tcp --add-port=25672/tcp --permanent
重新加载firewalld
firewall-cmd --reload
关闭端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
打开范围内的端口
firewall-cmd --add-port=30000-30500/tcp --permanent
firewall-cmd --add-port=30000-30500/udp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --remove-port=8840-8900/tcp --permanent
Scp—主机之间复制文件
## scp 远程用户名@IP地址:文件的绝对路径 本地Linux系统路径
# scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名
# scp使用第一种格式是将远程Linux系统上的某个文件或者目录拷贝到本地Linux系统上来,使用第二种是将本地的某个文件或者目录拷贝到远程Linux系统的某个路径下。
scp weipeng.conf root@114.116.227.218:/root
Netstat
netstat options
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
参考:https://www.linuxprobe.com/netstat-command-explanation.html
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
netstat 常用命令组合
查看端口,及每个端口运行的服务
netstat -ntlp
查看指定端口的tcp连接数
[root@localhost ~]# netstat -nat | grep 8082
tcp6 0 0 :::8082 :::* LISTEN
tcp6 0 0 192.168.10.99:8082 221.181.222.135:53782 ESTABLISHED
tcp6 0 0 192.168.10.99:8082 221.181.222.135:53765 ESTABLISHED
tcp6 0 0 192.168.10.99:8082 58.212.135.11:32822 ESTABLISHED
tcp6 0 0 192.168.10.99:8082 221.181.222.135:53781 ESTABLISHED
可以看出,有一个连接处于listen状态,监听请求;除此之外,还有4个已经建立的连接(ESTABLISHED)
列出所有 tcp 端口 netstat -at
# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:30037 *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp6 0 0 localhost:ipp [::]:* LISTEN
只列出所有监听 tcp 端口 netstat -lt
# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:30037 *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp6 0 0 localhost:ipp [::]:* LISTEN
在 netstat 输出中显示 PID 和进程名称 netstat -p
netstat -p 与其它参数一起使用就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。
# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 1 0 ramesh-laptop.loc:47212 192.168.185.75:www CLOSE_WAIT 2109/firefox
tcp 0 0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox
找出程序运行的端口
并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
# netstat -ap | grep ssh
tcp 1 0 dev-db:ssh 101.174.100.22:39213 CLOSE_WAIT -
tcp 1 0 dev-db:ssh 101.174.100.22:57643 CLOSE_WAIT -
找出运行在指定端口的进程
# netstat -an | grep ':80'
显示网络接口列表
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 0 0 0 0 0 BMU
eth2 1500 0 26196 0 0 0 26883 6 0 0 BMRU
lo 16436 0 4 0 0 0 4 0 0 0 LRU
显示详细信息,像是 ifconfig 使用 netstat -ie:
# netstat -ie
Kernel Interface table
eth0 Link encap:Ethernet HWaddr 00:10:40:11:11:11
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Memory:f6ae0000-f6b00000
网卡信息修改 和 生效
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens160
[root@localhost network-scripts]# cat ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens160
UUID=48fe2029-c764-4372-93e7-d259cdc972e6
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.10.66
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=223.5.5.5
修改完成后,必须要重新网卡,才能让修改的信息,生效
# centos 7 执行以下命令即可
systemctl restart network
Curl
https://curl.se/docs/manual.html
https://curl.se/docs/manpage.html#-s
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。
语法
curl [option] [url]
常见参数
-A/--user-agent <string> 设置用户代理发送给服务器
-b/--cookie <name=string/file> cookie字符串或文件读取位置
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
-C/--continue-at <offset> 断点续转
-D/--dump-header <file> 把header信息写入到该文件中
-e/--referer 来源网址
-f/--fail 连接失败时不显示http错误
-o/--output 把输出写到该文件中
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
-r/--range <range> 检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent 静音模式。不输出任何东西
-T/--upload-file <file> 上传文件
-u/--user <user[:password]> 设置服务器的用户和密码
-w/--write-out [format] 什么输出完成后
-x/--proxy <host[:port]> 在给定的端口上使用HTTP代理
-#/--progress-bar 进度条显示当前的传送状态
不常见参数
-a/--append 上传文件时,附加到目标文件
--anyauth 可以使用“任何”身份验证方法
--basic 使用HTTP基本验证
-B/--use-ascii 使用ASCII文本传输
-d/--data <data> HTTP POST方式传送数据
--data-ascii <data> 以ascii的方式post数据
--data-binary <data> 以二进制的方式post数据
--negotiate 使用HTTP身份验证
--digest 使用数字身份验证
--disable-eprt 禁止使用EPRT或LPRT
--disable-epsv 禁止使用EPSV
--egd-file <file> 为随机数据(SSL)设置EGD socket路径
--tcp-nodelay 使用TCP_NODELAY选项
-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
--cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
--key <key> 私钥文件名 (SSL)
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
--pass <pass> 私钥密码 (SSL)
--engine <eng> 加密引擎使用 (SSL). "--engine list" for list
--cacert <file> CA证书 (SSL)
--capath <directory> CA目 (made using c_rehash) to verify peer against (SSL)
--ciphers <list> SSL密码
--compressed 要求返回是压缩的形势 (using deflate or gzip)
--connect-timeout <seconds> 设置最大请求时间
--create-dirs 建立本地目录的目录层次结构
--crlf 上传是把LF转变成CRLF
--ftp-create-dirs 如果远程目录不存在,创建远程目录
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
--ftp-pasv 使用 PASV/EPSV 代替端口
--ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
--ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
--ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输
-F/--form <name=content> 模拟http表单提交数据
-form-string <name=string> 模拟http表单提交数据
-g/--globoff 禁用网址序列和范围使用{}和[]
-G/--get 以get的方式来发送数据
-h/--help 帮助
-H/--header <line> 自定义头信息传递给服务器
--ignore-content-length 忽略的HTTP头信息的长度
-i/--include 输出时包括protocol头信息
-I/--head 只显示文档信息
-j/--junk-session-cookies 读取文件时忽略session cookie
--interface <interface> 使用指定网络接口/地址
--krb4 <level> 使用指定安全级别的krb4
-k/--insecure 允许不使用证书到SSL站点
-K/--config 指定的配置文件读取
-l/--list-only 列出ftp目录下的文件名称
--limit-rate <rate> 设置传输速度
--local-port<NUM> 强制使用本地端口号
-m/--max-time <seconds> 设置最大传输时间
--max-redirs <num> 设置最大读取的目录数
--max-filesize <bytes> 设置最大下载的文件总量
-M/--manual 显示全手动
-n/--netrc 从netrc文件中读取用户名和密码
--netrc-optional 使用 .netrc 或者 URL来覆盖-n
--ntlm 使用 HTTP NTLM 身份验证
-N/--no-buffer 禁用缓冲输出
-p/--proxytunnel 使用HTTP代理
--proxy-anyauth 选择任一代理身份验证方法
--proxy-basic 在代理上使用基本身份验证
--proxy-digest 在代理上使用数字身份验证
--proxy-ntlm 在代理上使用ntlm身份验证
-P/--ftp-port <address> 使用端口地址,而不是使用PASV
-Q/--quote <cmd> 文件传输前,发送命令到服务器
--range-file 读取(SSL)的随机文件
-R/--remote-time 在本地生成文件时,保留远程文件时间
--retry <num> 传输出现问题时,重试的次数
--retry-delay <seconds> 传输出现问题时,设置重试间隔时间
--retry-max-time <seconds> 传输出现问题时,设置最大重试时间
-S/--show-error 显示错误
--socks4 <host[:port]> 用socks4代理给定主机和端口
--socks5 <host[:port]> 用socks5代理给定主机和端口
-t/--telnet-option <OPT=val> Telnet选项设置
--trace <file> 对指定文件进行debug
--trace-ascii <file> Like --跟踪但没有hex输出
--trace-time 跟踪/详细输出时,添加时间戳
--url <URL> Spet URL to work with
-U/--proxy-user <user[:password]> 设置代理用户名和密码
-V/--version 显示版本信息
-X/--request <command> 指定什么命令
-y/--speed-time 放弃限速所要的时间。默认为30
-Y/--speed-limit 停止传输速度的限制,速度时间'秒
-z/--time-cond 传送时间设置
-0/--http1.0 使用HTTP 1.0
-1/--tlsv1 使用TLSv1(SSL)
-2/--sslv2 使用SSLv2的(SSL)
-3/--sslv3 使用的SSLv3(SSL)
--3p-quote like -Q for the source URL for 3rd party transfer
--3p-url 使用url,进行第三方传送
--3p-user 使用用户名和密码,进行第三方传送
-4/--ipv4 使用IP4
-6/--ipv6 使用IP6
实例
基本用法
curl http://www.linux.com
执行后,www.linux.com 的html就会显示在屏幕上了
Ps:由于安装linux的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站
保存访问的网页
使用linux的重定向功能保存
curl http://www.linux.com >> linux.html
可以使用curl的内置option:-o(小写)保存网页
curl -o linux.html http://www.linux.com
#执行完成后会显示如下界面,显示100%则表示保存成功
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 79684 0 79684 0 0 3437k 0 --:--:-- --:--:-- --:--:-- 7781k
可以使用curl的内置option:-O(大写)保存网页中的文件;要注意这里后面的url要具体到某个文件,不然抓不下来
curl -O http://www.linux.com/hello.sh
测试网页返回值
curl -o /dev/null -s -w %{http_code} www.linux.com
Ps:在脚本中,这是很常见的测试网站是否正常的用法
指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理
curl -x 192.168.100.100:1080 http://www.linux.com
cookie
有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie
保存http的response里面的cookie信息。内置option:-c(小写);执行后cookie信息就被存到了cookiec.txt里面了
curl -c cookiec.txt http://www.linux.com
保存http的response里面的header信息。内置option: -D;执行后cookie信息就被存到了cookied.txt里面了
curl -D cookied.txt http://www.linux.com
PS:-c(小写)产生的cookie和-D里面的cookie是不一样的。
使用cookie
很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option: -b
curl -b cookiec.txt http://www.linux.com
模仿浏览器
有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站;这样服务器端就会认为是使用IE8.0去访问的
curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
伪造referer(盗链)
很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了;
curl中内置option:-e可以让我们设定referer;这样就会让服务器其以为你是从www.linux.com点击某个链接过来的
curl -e "www.linux.com" http://mail.linux.com
下载文件
使用内置option:-o(小写)
curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
使用内置option:-O(大写)
curl -O http://www.linux.com/dodo1.JPG
循环下载
有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样
curl -O http://www.linux.com/dodo[1-5].JPG
# 这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来
下载重命名
curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
# 由于下载的hello与bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。因此第二次下载的会把第一次下载的覆盖,这样就需要对文件进行重命名。
curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
# 这样在hello/dodo1.JPG的文件下载下来就会变成hello_dodo1.JPG,其他文件依此类推,从而有效的避免了文件被覆盖
分块下载
有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r
curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
cat dodo1_part* > dodo1.JPG# 这样就可以查看dodo1.JPG的内容了
通过ftp下载文件
curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法
curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG
显示下载进度条
curl -# -O http://www.linux.com/dodo1.JPG
不显示下载进度信息
curl -s -O http://www.linux.com/dodo1.JPG
断点续传
在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果;如果在下载dodo1.JPG的过程中突然掉线了,可以使用以下的方式续传
curl -C -O http://www.linux.com/dodo1.JPG
上传文件
curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现;这样就向ftp服务器上传了文件dodo1.JPG
curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/
显示抓取错误
curl -f http://www.linux.com/error
路由表 & ARP表 & MAC表
路由表
在计算机网络中,路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。
为了能够实现从众多路径中选择最佳的传输路径,路由器中保存了周边网络的拓扑信息和各种路径参数,我们将这张表称作路由表。
在路由表中,每一项都包括如下内容:
目的网络地址(Destination) + 子网掩码(Genmask):
网络地址和网络掩码共同确定本机可以达到的目的网络范围,通常情况下,目的网络范围包含以下几种情况: (1) 主机地址:某个特定主机的网络地址; (2) 子网地址:某个特定子网的网络地址; (3)默认路由:所有未在路由表中指定的网络地址,用0.0.0.0统一匹配,用于配置默认网关( ubantu虚拟机中默认路由显示为default)
网关(Gateway)/下一跳(Next Hop):
一般终端设备如(PC,手机等)接入网络时,无需配置任何路由信息,而是通过路由器的DHCP协议分配IP地址,终端设备接收IP地址的同时,会将本设备的网关设置为直连的路由器。
而后上网过程中所有的报文在查询路由时,由于没有其他路由,因此被直接发送到了网关设备,有网关设备进行后续转发功能。
而网络设备一般通过配置动态路由协议来更新路由表,除此之外也会设置默认网关。
在收到数据包时如果路由表中有对应的路由表项,则通过此表项的出接口发送到下一跳网络设备,如果没有匹配到相应的路由表项,则需要发给默认网关,有网关进行后续转发处理工作。
接口(Iface):
接口定义了针对特定的网络目的地址,路由器用于转发数据包的出接口。即用来确定数据包从哪个网口上发送到下一跳设备。
跳数(Metric):
跳数用于指出路由的成本,通常情况下代表:到达目标地址所需要的总路由器个数,一个跳数代表经过一个路由器,IP数据报首部中的TTL字段就是该数据报所能存活的总跳数。跳数越少往往代表着该路由成本越低,跳数越多则说明成本越高。当具有多条达到相同目的网络的路由选项时,路由算法会选择具有更少跳数的路由。
标志(Flag):
路由表中常见的flag标记有:
U:路由是动态的;
H:目标是一个主机;
G:路由指向网关;
R:恢复动态路由产生的表项;
D:由路由的后台程序动态安装;
M:由路由的后台程序修改;
!: 拒绝路由。
引用次数(Refs):
Linux内核中未使用,一般是0;
查询次数(Use):
此路由项被路由软件查找的次数。
ARP表(Address Resolution Table)
在7层OSI模型中,IP地址工作在第三层(网络层),Mac地址工作在第二层(数据链路层),两者之间各行其道,互不干扰。在进行报文转发时,目的IP地址我们是明确的,但是目的Mac地址却不知道;在封装报文时,先封装IP头部,然后填充二层头部。
但是由于不知道Mac地址,因此二层头部无法填充,此时便需要用到ARP协议,它通过查询指定IP地址对应的Mac地址,构建出一个Mac表项,我们通过查询此表项便可以知道:目的IP地址对应的Mac地址。
因此在ARP表,本质上就是:IP地址和Mac地址间的映射。
Mac表
从ISO网络模型上划分来说,路由表位于网络层,它用来进行路由和寻址功能。而Mac表则维护数据链路层,用来记录MAC地址–>端口之间的映射。说道MAC表,虽然每一台网络设备商都存在,但是更多的是在交换机中进行详细介绍。
MAC表中包括的内容有:
MAC地址
物理接口
Mac条目类型(可能)
老化时间
VLAN-ID(可能)
route command
refer to : https://www.man7.org/linux/man-pages/man8/route.8.html
NAME top
route - show / manipulate the IP routing table
SYNOPSIS top
route [-CFvnNee] [-A family |-4|-6]
route [-v] [-A family |-4|-6] 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 |-4|-6] del [-net|-host] target [gw Gw]
[netmask Nm] [metric M] [[dev] If]
route [-V] [--version] [-h] [--help]
把上面的命令,简写成常用的格式:
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
OPTIONS top
-A family
use the specified address family (eg `inet'). Use route
--help for a full list. You can use -6 as an alias for
--inet6 and -4 as an alias for -A inet
-F operate on the kernel's FIB (Forwarding Information Base)
routing table. This is the default.
-C operate on the kernel's routing cache.
-v select verbose operation.
-n show numerical addresses instead of trying to determine
symbolic host names. This is useful if you are trying to
determine why the route to your nameserver has vanished.
-e use netstat(8)-format for displaying the routing table.
-ee will generate a very long line with all parameters
from the routing table.
del delete a route.
add add a new route.
target the destination network or host. You can provide an
addresses or symbolic network or host name. Optionally you
can use /prefixlen notation instead of using the netmask
option.
-net the target is a network.
-host the target is a host.
netmask NM
when adding a network route, the netmask to be used.
gw GW route packets via a gateway.
NOTE: The specified gateway must be reachable first. This
usually means that you have to set up a static route to
the gateway beforehand. If you specify the address of one
of your local interfaces, it will be used to decide about
the interface to which the packets should be routed to.
This is a BSDism compatibility hack.
metric M
set the metric field in the routing table (used by routing
daemons) to M. If this option is not specified the metric
for inet6 (IPv6) address family defaults to '1', for inet
(IPv4) it defaults to '0'. You should always specify an
explicit metric value to not rely on those defaults - they
also differ from iproute2.
mss M sets MTU (Maximum Transmission Unit) of the route to M
bytes. Note that the current implementation of the route
command does not allow the option to set the Maximum
Segment Size (MSS).
window W
set the TCP window size for connections over this route to
W bytes. This is typically only used on AX.25 networks and
with drivers unable to handle back to back frames.
irtt I set the initial round trip time (irtt) for TCP connections
over this route to I milliseconds (1-12000). This is
typically only used on AX.25 networks. If omitted the RFC
1122 default of 300ms is used.
reject install a blocking route, which will force a route lookup
to fail. This is for example used to mask out networks
before using the default route. This is NOT for
firewalling.
mod, dyn, reinstate
install a dynamic or modified route. These flags are for
diagnostic purposes, and are generally only set by routing
daemons.
dev If force the route to be associated with the specified
device, as the kernel will otherwise try to determine the
device on its own (by checking already existing routes and
device specifications, and where the route is added to).
In most normal networks you won't need this.
If dev If is the last option on the command line, the word
dev may be omitted, as it's the default. Otherwise the
order of the route modifiers (metric netmask gw dev)
doesn't matter.
example
# 查看路由信息
route -n
# 发送数据包给 路由表中不匹配的目的网络,必须通过网关,来路由数据包。这里设置了网关地址为102.168.98.1
route add default gw 192.168.98.1
# 添加一条路由记录。表示发送数据,到指定目的地,这个目的地是指定网络段(net + netmask来共同计算),必须通过指定的网卡(网络接口,比如ens33) 下面命令中的dev可以省略掉
route add -net 192.56.76.0 netmask 255.255.255.0 metric 1024 dev ens33
#删除一条路由记录
route del -net 192.56.76.0 netmask 255.255.255.0 metric 1024 dev ens33