linux route 刷新_linux基础命令介绍十五:推陈出新
本文介紹ip、ss、journalctl和firewall-cmd,它們旨在代替linux中原有的一些命令或服務(wù)。
1、ip
ip [OPTIONS] OBJECT COMMAND
ip是iproute2軟件包里面的一個(gè)強(qiáng)大的網(wǎng)絡(luò)配置工具,它能夠替代一些傳統(tǒng)的網(wǎng)絡(luò)管理工具,例如ifconfig、route等,使用權(quán)限為超級(jí)用戶。
OPTIONS是修改ip行為或改變其輸出的選項(xiàng)。
OBJECT是要獲取信息的對(duì)象。包括:
address 表示設(shè)備的協(xié)議(IPv4或IPv6)地址
link 表示網(wǎng)絡(luò)設(shè)備
monitor 表示監(jiān)控網(wǎng)絡(luò)連接信息
neighbour 表示管理ARP緩存表
netns 表示管理網(wǎng)絡(luò)命名空間
route 表示路由表接口
tunnel 表示IP隧道
....
對(duì)象名可以是全稱(chēng)或簡(jiǎn)寫(xiě)格式,比如address可以簡(jiǎn)寫(xiě)為addr或a。
COMMAND設(shè)置針對(duì)指定對(duì)象執(zhí)行的操作,它和對(duì)象的類(lèi)型有關(guān)。
address
如顯示網(wǎng)卡ens33的信息:
[root@centos7 ~]# ip addr show ens33
3: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:a4:a9:16 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.254/24 brd 10.0.1.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fea4:a916/64 scope link
valid_lft forever preferred_lft forever
選項(xiàng)-s表示輸出更多的信息
[root@centos7 ~]# ip -s addr show ens33
3: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:a4:a9:16 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.254/24 brd 10.0.1.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fea4:a916/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
133518854 1415841 0 0 0 0
TX: bytes packets errors dropped carrier collsns
14033474 59479 0 0 0 0
為ens33增加一個(gè)新地址
[root@centos7 ~]# ip addr add 192.168.0.193/24 dev ens33
[root@centos7 ~]# ip a sh ens33
3: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:a4:a9:16 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.254/24 brd 10.0.1.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.0.193/24 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fea4:a916/64 scope link
valid_lft forever preferred_lft forever
#刪除
[root@centos7 ~]# ip addr del 192.168.0.193/24 dev ens33
neighbour
如查看arp表項(xiàng)(neighbour可以簡(jiǎn)寫(xiě)為neigh或n)
[root@centos7 ~]# ip neigh
172.20.71.253 dev ens32 lladdr 68:8f:84:03:71:e6 STALE
10.0.1.102 dev ens33 lladdr 00:50:56:a4:18:9a STALE
10.0.1.1 dev ens33 lladdr 68:8f:84:01:f1:ff STALE
10.0.1.103 dev ens33 lladdr 00:1c:7f:3b:da:b0 STALE
10.0.1.104 dev ens33 lladdr 00:50:56:a4:37:a7 DELAY
10.0.1.252 dev ens33 lladdr 00:50:56:a4:65:71 STALE
neighbour可以使用的COMMAND包括add添加、change修改、replace替換、delete刪除、flush清除等。
如在設(shè)備ens33上為地址10.0.1.253添加一個(gè)永久的ARP條目:
[root@centos7 ~]# ip nei add 10.0.1.253 lladdr 78:A3:51:14:F7:98 dev ens33 nud permanent
[root@centos7 ~]# ip nei show dev ens33
10.0.1.103 lladdr 00:1c:7f:3b:da:b0 STALE
10.0.1.1 lladdr 68:8f:84:01:f1:ff STALE
10.0.1.104 lladdr 00:50:56:a4:37:a7 REACHABLE
10.0.1.102 lladdr 00:50:56:a4:18:9a STALE
10.0.1.253 lladdr 78:a3:51:14:f7:98 PERMANENT
10.0.1.252 lladdr 00:50:56:a4:65:71 STALE
link
如更改ens33的MTU(最大傳輸單元)的值為1600
[root@centos7 ~]# ip link set dev ens33 mtu 1600
[root@centos7 ~]# ip link show dev ens33
3: ens33: mtu 1600 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:50:56:a4:a9:16 brd ff:ff:ff:ff:ff:ff
關(guān)閉設(shè)備ens32
[root@centos7 ~]# ip link set dev ens32 down
[root@centos7 ~]# ip li ls dev ens32
2: ens32: mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 00:50:56:a4:f6:f8 brd ff:ff:ff:ff:ff:ff
創(chuàng)建一個(gè)關(guān)聯(lián)到ens32的網(wǎng)橋
[root@centos7 ~]# ip link add link ens32 name br1 type bridge
[root@centos7 ~]# ip link show dev br1
8: br1: mtu 1500 qdisc noop state DOWN mode DEFAULT
link/ether 0e:00:3a:f2:fa:ee brd ff:ff:ff:ff:ff:ff
#啟用
[root@centos7 ~]# ip link set dev br1 up
#停用
[root@centos7 ~]# ip link set dev br1 down
#刪除
[root@centos7 ~]# ip link del dev br1
route
如顯示路由表(這里使用了命令column -t對(duì)輸出進(jìn)行了格式化)
[root@centos7 ~]# ip route show|column -t
default via 10.0.1.103 dev ens33 proto static metric 100
10.0.1.0/24 dev ens33 proto kernel scope link src 10.0.1.254 metric 100
172.20.71.0/24 dev ens32 proto kernel scope link src 172.20.71.254 metric 100
192.168.78.0/24 via 10.0.1.104 dev ens33
如添加一條到192.168.0.0/16下一跳是10.0.1.101的路由
[root@centos7 ~]# ip route add 192.168.0.0/16 via 10.0.1.101 dev ens33
[root@centos7 ~]# ip route show|column -t
default via 10.0.1.103 dev ens33 proto static metric 100
10.0.1.0/24 dev ens33 proto kernel scope link src 10.0.1.254 metric 100
172.20.71.0/24 dev ens32 proto kernel scope link src 172.20.71.254 metric 100
192.168.0.0/16 via 10.0.1.101 dev ens33
192.168.78.0/24 via 10.0.1.104 dev ens33
#刪除
[root@centos7 ~]# ip route del 192.168.0.0/16
還可以使用change、replace等表示改變/替換原有路由條目。
如獲取單條路由信息
[root@centos7 ~]# ip rou get 10.0.1.0/24
broadcast 10.0.1.0 dev ens33 src 10.0.1.254
cache
2、ss
ss [options] [FILTER]
ss命令可以用來(lái)獲取socket統(tǒng)計(jì)信息,它可以顯示和netstat類(lèi)似的內(nèi)容。但ss的優(yōu)勢(shì)在于它能夠顯示更多詳細(xì)的有關(guān)TCP和連接狀態(tài)的信息,而且比netstat更高效。當(dāng)服務(wù)器的socket連接數(shù)量變得非常大時(shí),無(wú)論是使用netstat命令還是直接cat /proc/net/tcp,執(zhí)行速度都會(huì)很慢。ss命令利用了TCP協(xié)議棧中tcp_diag,tcp_diag是一個(gè)用于分析統(tǒng)計(jì)的模塊,可以獲得linux內(nèi)核的第一手信息,這確保了ss的快捷高效。
選項(xiàng)-a表示顯示所有連接狀態(tài)信息
選項(xiàng)-t表示顯示TCP sockets
選項(xiàng)-u表示顯示UDP sockets
選項(xiàng)-n表示不轉(zhuǎn)換數(shù)字為服務(wù)名
選項(xiàng)-p表示顯示進(jìn)程
[root@centos7 ~]# ss -antp|column -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1355,fd=3))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=2214,fd=13))
ESTAB 0 0 10.0.1.254:22 192.168.78.141:50332 users:(("sshd",pid=18294,fd=3))
ESTAB 0 52 10.0.1.254:22 192.168.78.178:51667 users:(("sshd",pid=18433,fd=3))
LISTEN 0 128 :::5000 :::* users:(("exe",pid=5908,fd=7))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=1355,fd=4))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=2214,fd=14))
選項(xiàng)-l表示只顯示監(jiān)聽(tīng)狀態(tài)的sockets
[root@centos7 ~]# ss -lt|column -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 :::commplex-main :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
選項(xiàng)-s表示顯示匯總信息
[root@centos7 ~]# ss -s
Total: 270 (kernel 575)
TCP: 8 (estab 1, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 575 - -
RAW 2 0 2
UDP 0 0 0
TCP 7 3 4
INET 9 3 6
FRAG 0 0 0
還可以使用state STATE-FILTER [EXPRESSION]指定過(guò)濾格式
如顯示源或目的端口為8080,狀態(tài)為established的連接:
ss state established '( dport = :8080 or sport = :8080 )'
如來(lái)自193.233.7/24,狀態(tài)為fin-wait-1的http或https連接
ss state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
3、journalctl
journalctl [OPTIONS...] [MATCHES...]
在基于systemd的系統(tǒng)中,可以使用一個(gè)新工具Journal代替原來(lái)的系統(tǒng)服務(wù)Syslog來(lái)記錄日志。關(guān)于Journal優(yōu)越性就不在這里敘述了,我們來(lái)直接看它怎么使用。
Journal服務(wù)的配置文件是/etc/systemd/journald.conf,在默認(rèn)配置中,Journal日志保存在目錄/run/log/journal內(nèi)(tmpfs內(nèi)存文件系統(tǒng)),系統(tǒng)重啟將不會(huì)保留,可以手動(dòng)將日志刷到(通過(guò)命令journalctl --flush)磁盤(pán)文件系統(tǒng)上(/var/log/journal內(nèi))。
Journal服務(wù)隨系統(tǒng)啟動(dòng)而啟動(dòng),默認(rèn)會(huì)記錄從開(kāi)機(jī)到關(guān)機(jī)全過(guò)程的內(nèi)核和應(yīng)用程序日志
#查看服務(wù)狀態(tài)
[root@centos7 ~]# systemctl status -l systemd-journald
● systemd-journald.service - Journal Service
Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
Active: active (running) since 二 2016-12-20 11:15:22 CST; 1 weeks 0 days ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 539 (systemd-journal)
Status: "Processing requests..."
CGroup: /system.slice/systemd-journald.service
└─539 /usr/lib/systemd/systemd-journald
12月 20 11:15:22 centos7 systemd-journal[539]: Runtime journal is using 8.0M (max allowed 391.1M, trying to leave 586.7M free of 3.8G available → current limit 391.1M).
12月 20 11:15:22 centos7 systemd-journal[539]: Runtime journal is using 8.0M (max allowed 391.1M, trying to leave 586.7M free of 3.8G available → current limit 391.1M).
12月 20 11:15:22 centos7 systemd-journal[539]: Journal started
12月 20 11:15:22 centos7 systemd-journal[539]: Runtime journal is using 8.0M (max allowed 391.1M, trying to leave 586.7M free of 3.8G available → current limit 391.1M).
當(dāng)命令journalctl不帶任何選項(xiàng)時(shí)會(huì)分頁(yè)顯示系統(tǒng)的所有日志(從本次開(kāi)機(jī)到現(xiàn)在時(shí)間)
選項(xiàng)-k表示顯示內(nèi)核kernel日志
選項(xiàng)-u UNIT表示顯示指定服務(wù)單元UNIT的日志
#如上一篇中配置的計(jì)時(shí)器(ping252.timer)和服務(wù)(ping252.service)日志
[root@centos7 ~]# journalctl -u ping252.timer
-- Logs begin at 二 2016-12-20 11:15:19 CST, end at 二 2016-12-27 20:39:54 CST. --
12月 23 14:27:26 centos7 systemd[1]: Started ping 252 every 30s.
12月 23 14:27:26 centos7 systemd[1]: Starting ping 252 every 30s.
12月 23 14:36:57 centos7 systemd[1]: Stopped ping 252 every 30s.
....
[root@centos7 ~]# journalctl -u ping252
-- Logs begin at 二 2016-12-20 11:15:19 CST, end at 二 2016-12-27 20:41:34 CST. --
12月 23 14:28:28 centos7 systemd[1]: Started ping 252.
12月 23 14:28:28 centos7 systemd[1]: Starting ping 252...
12月 23 14:28:28 centos7 systemd[11428]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
12月 23 14:28:28 centos7 systemd[1]: ping252.service: main process exited, code=exited, status=203/EXEC
12月 23 14:28:28 centos7 systemd[1]: Unit ping252.service entered failed state.
12月 23 14:28:28 centos7 systemd[1]: ping252.service failed.
12月 23 14:29:03 centos7 systemd[1]: Started ping 252.
....
選項(xiàng)-r表示反向輸出日志(從當(dāng)前時(shí)間到本次開(kāi)機(jī))
選項(xiàng)-n N表示輸出最新的N行日志
[root@centos7 ~]# journalctl -n 5 -u ping252
-- Logs begin at 二 2016-12-20 11:15:19 CST, end at 二 2016-12-27 20:48:54 CST. --
12月 23 17:27:12 centos7 systemd[1]: Starting 252...
12月 23 17:29:12 centos7 systemd[1]: Started 252.
12月 23 17:29:12 centos7 systemd[1]: Starting 252...
12月 23 17:31:12 centos7 systemd[1]: Started 252.
12月 23 17:31:12 centos7 systemd[1]: Starting 252...
選項(xiàng)-f表示顯示最新的10行日志并繼續(xù)等待輸出新日志(類(lèi)似于命令tail -f)
選項(xiàng)-p n表示過(guò)濾輸出指定級(jí)別的日志,其中n的值可以是:
0 表示 emerg
1 表示 alert
2 表示 crit
3 表示 err
4 表示 warning
5 表示 notice
6 表示 info
7 表示 debug
如
[root@centos7 ~]# journalctl -u ping252 -p 3
-- Logs begin at 二 2016-12-20 11:15:19 CST, end at 二 2016-12-27 21:13:34 CST. --
12月 23 14:28:28 centos7 systemd[11428]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
12月 23 14:29:03 centos7 systemd[11442]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
12月 23 14:30:32 centos7 systemd[11452]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
選項(xiàng)--since=和--until=表示顯示晚于指定時(shí)間(--since=)的日志、顯示早于指定時(shí)間(--until=)的日志。時(shí)間格式如上一篇systemd.timer所示:
[root@centos7 ~]# journalctl -u ping252 --since "2016-12-20 11:15:19" --until "now" -p 3
-- Logs begin at 二 2016-12-20 11:15:19 CST, end at 二 2016-12-27 21:37:14 CST. --
12月 23 14:28:28 centos7 systemd[11428]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
12月 23 14:29:03 centos7 systemd[11442]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
12月 23 14:30:32 centos7 systemd[11452]: Failed at step EXEC spawning /root/temp/ping252.sh: Exec format error
選項(xiàng)--disk-usage表示顯示日志磁盤(pán)占用量
[root@centos7 ~]# journalctl --disk-usage
Archived and active journals take up 104.8M on disk.
選項(xiàng)--vacuum-size=用于設(shè)置日志最大磁盤(pán)使用量(值可以使用K、M、G、T等后綴)。
選項(xiàng)--vacuum-time=用于清除指定時(shí)間之前的日志(可以使用"s", "m", "h", "days", "weeks", "months", "years" 等后綴)
[root@centos7 ~]# journalctl --vacuum-time="1 days"
Deleted archived journal /run/log/journal/9......2e.journal (48.0M).
Deleted archived journal /run/log/journal/9......a1.journal (48.8M).
Vacuuming done, freed 96.8M of archived journals on disk.
選項(xiàng)-o表示控制輸出格式,可以帶一個(gè)如下參數(shù):
short 默認(rèn)格式,和傳統(tǒng)的syslog格式相似,每條日志一行
short-iso 和short類(lèi)似,但顯示ISO 8601時(shí)間戳
short-precise 和short類(lèi)似,只是將時(shí)間戳字段的秒數(shù)精確到微秒級(jí)別
short-monotonic 和short類(lèi)似,只是將時(shí)間戳字段的零值從內(nèi)核啟動(dòng)時(shí)開(kāi)始計(jì)算。
short-unix 和short類(lèi)似,只是將時(shí)間戳字段顯示為從"UNIX時(shí)間原點(diǎn)"(1970-1-1 00:00:00 UTC)以來(lái)的秒數(shù)。 精確到微秒級(jí)別。
verbose 以結(jié)構(gòu)化的格式顯示每條日志的所有字段。
export 將日志序列化為二進(jìn)制字節(jié)流(大部分依然是文本)以適用于備份與網(wǎng)絡(luò)傳輸。
json 將日志項(xiàng)按照J(rèn)SON數(shù)據(jù)結(jié)構(gòu)格式化, 每條日志一行。
json-pretty 將日志項(xiàng)按照J(rèn)SON數(shù)據(jù)結(jié)構(gòu)格式化, 但是每個(gè)字段一行, 以便于人類(lèi)閱讀。
json-sse 將日志項(xiàng)按照J(rèn)SON數(shù)據(jù)結(jié)構(gòu)格式化,每條日志一行,但是用大括號(hào)包圍。
cat 僅顯示日志的實(shí)際內(nèi)容, 而不顯示與此日志相關(guān)的任何元數(shù)據(jù)(包括時(shí)間戳)。
4、firewall-cmd
同iptables一樣,firewalld也通過(guò)內(nèi)核的netfilter來(lái)實(shí)現(xiàn)防火墻功能(netfilter的簡(jiǎn)介),比iptables先進(jìn)的地方在于,firewalld可以動(dòng)態(tài)修改單條規(guī)則,而不需要像iptables那樣,在修改了規(guī)則之后必須全部刷新才可以生效。而且firewalld在使用上更人性化,不需要理解netfilter的原理也能實(shí)現(xiàn)大部分功能。
firewalld需要開(kāi)啟守護(hù)進(jìn)程,查看防火墻服務(wù)狀態(tài):
[root@idc-v-71252 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2016-12-14 14:07:04 CST; 1 weeks 4 days ago
Main PID: 898 (firewalld)
CGroup: /system.slice/firewalld.service
└─898 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
12月 14 14:07:03 centos7 systemd[1]: Starting firewalld - dynamic firewall daemon...
12月 14 14:07:04 centos7 systemd[1]: Started firewalld - dynamic firewall daemon.
或者通過(guò)自身的firewall-cmd查看
[root@centos7 ~]# firewall-cmd --stat
running
[root@centos7 ~]#
firewalld的配置文件以xml格式為主(主配置文件firewalld.conf除外),它們有兩個(gè)存儲(chǔ)位置:
1、/etc/firewalld
2、/usr/lib/firewalld
使用時(shí)的規(guī)則是這樣的:當(dāng)需要一個(gè)文件時(shí),firewalld會(huì)首先到第一個(gè)目錄中查找,如果可以找到,那么就直接使用,否則會(huì)繼續(xù)到第二個(gè)目錄中查找。不推薦在目錄/usr/lib/firewalld中直接修改配置文件,最好是在/usr/lib/firewalld中復(fù)制一份配置文件到/etc/firewalld的相應(yīng)目錄中,然后進(jìn)行修改。這樣,在恢復(fù)默認(rèn)配置時(shí),直接刪除/etc/firewalld中的文件即可。
firewalld中引入了兩個(gè)概念:service(服務(wù))和zone(區(qū)域)。
service通用配置文件(位于目錄/usr/lib/firewalld/services內(nèi))中定義了服務(wù)與端口的映射,firewalld在使用時(shí)可以直接引用服務(wù)名而不是像iptables那樣引用端口號(hào)(就像DNS服務(wù)將域名和IP地址做了映射);
默認(rèn)時(shí)firewalld提供了九個(gè)zone配置文件,位于/usr/lib/firewalld/zones中:
[root@centos7 ~]# ls /usr/lib/firewalld/zones
block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml
每個(gè)文件中定義了一套規(guī)則集,或者說(shuō)判斷方案。firewalld通過(guò)判斷配置文件中如下三個(gè)地方來(lái)決定具體使用哪套方案來(lái)過(guò)濾包:
1、source 原地址
2、interface 接收包的網(wǎng)卡
3、默認(rèn)zone(可在/etc/firewalld/firewalld.conf中配置)
這三個(gè)優(yōu)先級(jí)按順序依次降低,也就是說(shuō)如果按照source可以找到就不會(huì)再按interface去查找,如果前兩個(gè)都找不到才會(huì)使用第三個(gè)。
zone
public.xml內(nèi)容:
[root@centos7 ~]# cat /usr/lib/firewalld/zones/public.xml
Public
For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
[root@centos7 ~]#
zone配置文件中可以配置的項(xiàng)包括:
zone 定義zone起始和結(jié)束的標(biāo)簽,只能用于zone配置文件,可以設(shè)置兩個(gè)屬性:
version 版本
target 本zone的默認(rèn)規(guī)則,包括四個(gè)可選值:default、ACCEPT、%%REJECT%%、DROP,如果不設(shè)置則表示默認(rèn)值default,如果默認(rèn)規(guī)則不是default,除source和interface兩個(gè)配置項(xiàng)以外的其他規(guī)則項(xiàng)都將被忽略,而直接跳轉(zhuǎn)到默認(rèn)規(guī)則。
short 區(qū)域簡(jiǎn)短描述
description 區(qū)域描述
interface 綁定一個(gè)本地接口到本zone
source 綁定一個(gè)或一組源地址到本zone
service 表示一個(gè)服務(wù)
port 端口,使用port可以不通過(guò)service而直接對(duì)端口進(jìn)行設(shè)置
icmp-block icmp報(bào)文阻塞,可以按照icmp類(lèi)型進(jìn)行設(shè)置
masquerade ip地址偽裝,也就是按照源網(wǎng)卡地址進(jìn)行NAT轉(zhuǎn)發(fā)
forward-port 端口轉(zhuǎn)發(fā)
rule 自定義規(guī)則
firewalld默認(rèn)區(qū)域中,ACCEPT用在trusted區(qū)域,%%REJECT%%用在block區(qū)域,DROP用在drop區(qū)域。使用時(shí)可以復(fù)制一份需要的文件至/etc/firewalld/zones中,然后將需要的源地址或接口配置在相應(yīng)的文件中。
配置source.
source在zone的xml文件中的格式為
需要注意的是相同的source項(xiàng)只能在一個(gè)zone中進(jìn)行配置,也就是說(shuō)同一個(gè)源地址只能對(duì)應(yīng)一個(gè)zone,另外,直接編輯xml文件之后需要執(zhí)行命令firewall-cmd --reload才能生效。
當(dāng)然也可以使用firewall-cmd命令進(jìn)行配置(可選項(xiàng)--permanent表示是否保存到配置文件中,使用后需要--reload才能生效;--zone表示指定zone,不指定表示使用默認(rèn)zone):
#列出指定zone的所有綁定的source地址
firewall-cmd [--permanent] [--zone=zone] --list-sources
#查詢指定zone是否跟指定source地址進(jìn)行了綁定
firewall-cmd [--permanent] [--zone=zone] --query-source=source[/mask]
#將一個(gè)source地址綁定到指定的zone(只可綁定一次,第二次綁定到不同的zone會(huì)報(bào)錯(cuò))
firewall-cmd [--permanent] [--zone=zone] --add-source=source[/mask]
#改變source地址所綁定的zone
firewall-cmd [--zone=zone] --change-source=source[/mask]
#刪除source地址跟zone的綁定
firewall-cmd [--permanent] [--zone=zone] --remove-source=source[/mask]
如將源地址192.168.0.0/16添加至默認(rèn)zone
[root@centos7 zones]# firewall-cmd --add-source=192.168.0.0/16
success
[root@centos7 zones]# firewall-cmd --list-sources
192.168.0.0/16
[root@centos7 zones]# firewall-cmd --remove-source=192.168.0.0/16
success
[root@centos7 zones]#
配置interface.
同source配置項(xiàng)相同,同一個(gè)interface只能對(duì)應(yīng)一個(gè)zone。interface在zone的xml文件中的格式為:
還可以將zone配置在網(wǎng)卡配置文件(ifcfg-*文件)中,使接口綁定到指定zone:
ZONE=public
相應(yīng)命令:
#列出指定zone的綁定接口
firewall-cmd [--permanent] [--zone=zone] --list-interfaces
#綁定接口到指定zone
firewall-cmd [--permanent] [--zone=zone] --add-interface=interface
#改變接口綁定zone
firewall-cmd [--zone=zone] --change-interface=interface
#查詢接口是否和指定zone綁定
firewall-cmd [--permanent] [--zone=zone] --query-interface=interface
#刪除綁定
firewall-cmd [--permanent] [--zone=zone] --remove-interface=interface
如將ens32移除出默認(rèn)zone
[root@centos7 zones]# firewall-cmd --list-interfaces
ens32 ens33
[root@centos7 zones]#
[root@centos7 zones]# firewall-cmd --remove-interface=ens32
success
[root@centos7 zones]# firewall-cmd --list-interfaces
ens33
[root@centos7 zones]#
配置service
同一個(gè)service可以配置到多個(gè)不同的zone中
相應(yīng)命令:
firewall-cmd [--permanent] [--zone=zone] --list-services
#--timeout=seconds表示生效時(shí)間,過(guò)期后自動(dòng)刪除。不能和--permanent一起使用
firewall-cmd [--permanent] [--zone=zone] --add-service=service [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-service=service
firewall-cmd [--permanent] [--zone=zone] --query-service=service
#列出所有可用服務(wù)
firewall-cmd --get-service
如增加http服務(wù)到默認(rèn)zone
[root@centos7 zones]# firewall-cmd --add-service=http
success
[root@centos7 zones]# firewall-cmd --remove-service=http
success
[root@centos7 zones]#
配置port.
需要同時(shí)指定協(xié)議和端口號(hào),端口號(hào)可以用-連接表示一個(gè)范圍。
命令
firewall-cmd [--permanent] [--zone=zone] --list-ports
firewall-cmd [--permanent] [--zone=zone] --add-port=portid[-portid]/protocol [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-port=portid[-portid]/protocol
firewall-cmd [--permanent] [--zone=zone] --query-port=portid[-portid]/protocol
如限時(shí)10秒允許80端口的訪問(wèn)
[root@centos7 zones]# firewall-cmd --add-port=80/tcp --timeout=10
success
[root@centos7 zones]#
配置icmp-block.
string處配置需要阻塞的ICMP類(lèi)型
命令
#列出所有ICMP類(lèi)型
firewall-cmd --get-icmptypes
firewall-cmd [--permanent] [--zone=zone] --list-icmp-blocks
firewall-cmd [--permanent] [--zone=zone] --add-icmp-block=icmptype [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-icmp-block=icmptype
firewall-cmd [--permanent] [--zone=zone] --query-icmp-block=icmptype
如禁止ping
[root@centos7 zones]# firewall-cmd --add-icmp-block=echo-request
success
#在另一臺(tái)機(jī)器ping本機(jī):
[root@idc-v-71252 ~]# ping 10.0.1.254
PING 10.0.1.254 (10.0.1.254) 56(84) bytes of data.
From 10.0.1.254 icmp_seq=1 Destination Host Prohibited
From 10.0.1.254 icmp_seq=2 Destination Host Prohibited
From 10.0.1.254 icmp_seq=3 Destination Host Prohibited
^C
#取消
[root@centos7 zones]# firewall-cmd --remove-icmp-block=echo-request
success
[root@centos7 zones]#
配置masquerade.
NAT轉(zhuǎn)發(fā),將接收到的請(qǐng)求的源地址設(shè)置為轉(zhuǎn)發(fā)請(qǐng)求網(wǎng)卡的地址。
命令
firewall-cmd [--permanent] [--zone=zone] --add-masquerade [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-masquerade
firewall-cmd [--permanent] [--zone=zone] --query-masquerade
配置forward-port.
命令(其中轉(zhuǎn)發(fā)規(guī)則FORWARD為port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]])
firewall-cmd [--permanent] [--zone=zone] --list-forward-ports
firewall-cmd [--permanent] [--zone=zone] --add-forward-port=FORWARD [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-forward-port=FORWARD
firewall-cmd [--permanent] [--zone=zone] --query-forward-port=FORWARD
如將80端口接收到的請(qǐng)求轉(zhuǎn)發(fā)到本機(jī)的8080端口(如需轉(zhuǎn)發(fā)至其他地址則添加:to-addr=address[/mask]):
[root@centos7 zones]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
success
[root@centos7 zones]# firewall-cmd --list-forward-ports
port=80:proto=tcp:toport=8080:toaddr=
[root@centos7 zones]# firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=8080
success
[root@centos7 zones]#
配置rule.
rule可以用來(lái)定義一條復(fù)雜的規(guī)則,其在文件中定義如下:
[ ]
[ ]
[
|
|
|
|
|
]
[ [] ]
[ [] ]
[ | | ]
這里的rule就相當(dāng)于使用iptables時(shí)的一條規(guī)則。
命令
firewall-cmd [--permanent] [--zone=zone] --list-rich-rules
firewall-cmd [--permanent] [--zone=zone] --add-rich-rule='rule' [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-rich-rule='rule'
firewall-cmd [--permanent] [--zone=zone] --query-rich-rule='rule'
如源地址為192.168.10.0/24的http連接都drop掉:
[root@centos7 zones]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="http" drop'
success
[root@centos7 zones]# firewall-cmd --query-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="http" drop'
yes
[root@centos7 zones]# firewall-cmd --remove-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="http" drop'
success
[root@centos7 zones]#
service
service配置文件格式為:
[short description]
[description]
[]
[]
[]
其中最重要的配置項(xiàng)是port,表示將端口綁定到指定服務(wù),當(dāng)該端口收到包時(shí)即表示對(duì)該服務(wù)的請(qǐng)求,防火墻從而到對(duì)應(yīng)的zone中去查找規(guī)則,判斷是否放行。
一個(gè)service中可以配置多個(gè)port項(xiàng),單個(gè)port項(xiàng)中可以配置單個(gè)端口,也可以是一個(gè)端口段,比如port=80-85表示80到85之間的端口號(hào)。
destination表示根據(jù)目的地址綁定服務(wù),可以是ipv4地址也可以是ipv6地址,可以使用掩碼。
module用來(lái)設(shè)置netfilter連接跟蹤模塊
firewall-cmd提供了兩個(gè)選項(xiàng)用于創(chuàng)建和刪除service,--new-service和--delete-service。不過(guò)直接編輯xml文件是更好的選擇。
direct
直接使用防火墻的過(guò)濾規(guī)則,配置文件為/etc/firewalld/direct.xml(可以手動(dòng)創(chuàng)建或通過(guò)命令生成),文件結(jié)構(gòu)如下:
[ ]
[ args ]
[ args ]
可以在配置文件中直接配置iptables規(guī)則,其中:
ipv 表示ip版本
table 表示iptables中的table
chain 表示iptables中的chain,可以是自定義的
priority 優(yōu)先級(jí),類(lèi)似于iptables中規(guī)則的前后順序,數(shù)字越小優(yōu)先級(jí)越高
args 表示具體規(guī)則,也可以是自定義的chain
如自定義一個(gè)叫blacklist的鏈,然后將所有來(lái)自192.168.1.0/24和192.168.5.0/24的數(shù)據(jù)包都指向了這個(gè)鏈,指定這個(gè)鏈的規(guī)則:首先使用'blacklisted: '前綴進(jìn)行日志記錄(每分鐘記錄一次),然后drop。
-s 192.168.1.0/24 -j blacklist
-s 192.168.5.0/24 -j blacklist
-m limit --limit 1/min -j LOG --log-prefix "blacklisted: "
-j DROP
相關(guān)命令:
firewall-cmd [--permanent] --direct --get-all-chains
firewall-cmd [--permanent] --direct --get-chains { ipv4 | ipv6 | eb } table
firewall-cmd [--permanent] --direct --add-chain { ipv4 | ipv6 | eb } table chain
firewall-cmd [--permanent] --direct --remove-chain { ipv4 | ipv6 | eb } table chain
firewall-cmd [--permanent] --direct --query-chain { ipv4 | ipv6 | eb } table chain
firewall-cmd [--permanent] --direct --get-all-rules
firewall-cmd [--permanent] --direct --get-rules { ipv4 | ipv6 | eb } table chain
firewall-cmd [--permanent] --direct --add-rule { ipv4 | ipv6 | eb } table chain priority args
firewall-cmd [--permanent] --direct --remove-rule { ipv4 | ipv6 | eb } table chain priority args
firewall-cmd [--permanent] --direct --remove-rules { ipv4 | ipv6 | eb } table chain
firewall-cmd [--permanent] --direct --query-rule { ipv4 | ipv6 | eb } table chain priority args
firewall-cmd --direct --passthrough { ipv4 | ipv6 | eb } args
firewall-cmd --permanent --direct --get-all-passthroughs
firewall-cmd --permanent --direct --get-passthroughs { ipv4 | ipv6 | eb }
firewall-cmd --permanent --direct --add-passthrough { ipv4 | ipv6 | eb } args
firewall-cmd --permanent --direct --remove-passthrough { ipv4 | ipv6 | eb } args
firewall-cmd --permanent --direct --query-passthrough { ipv4 | ipv6 | eb } args
上述例子轉(zhuǎn)化成命令即為:
firewall-cmd --permanent --direct --add-chain ipv4 raw blacklist
firewall-cmd --permanent --direct --add-rule ipv4 raw PREROUTING 0 -s 192.168.1.0/24 -j blacklist
firewall-cmd --permanent --direct --add-rule ipv4 raw PREROUTING 1 -s 192.168.5.0/24 -j blacklist
firewall-cmd --permanent --direct --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted: "
firewall-cmd --permanent --direct --add-rule ipv4 raw blacklist 1 -j DROP
#重載生效
firewall-cmd --reload
在實(shí)際生產(chǎn)環(huán)境中如果防火墻規(guī)則只是由root設(shè)定的話,最好將firewall-cmd(此文件為python腳本)的權(quán)限限制為只有root能執(zhí)行:
[root@centos7 ~]# ls -l /usr/bin/firewall-cmd
-rwxr-xr-x. 1 root root 62012 11月 20 2015 /usr/bin/firewall-cmd
[root@centos7 ~]# file /usr/bin/firewall-cmd
/usr/bin/firewall-cmd: Python script, ASCII text executable
[root@centos7 ~]# chmod 750 /usr/bin/firewall-cmd
關(guān)于firewalld的更多內(nèi)容請(qǐng)查看相關(guān)文檔
至此,linux基礎(chǔ)命令介紹系列就結(jié)束了。前后十五篇文章,記錄了百余個(gè)常用命令。之后將開(kāi)啟新的系列:shell編程。
總結(jié)
以上是生活随笔為你收集整理的linux route 刷新_linux基础命令介绍十五:推陈出新的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flash大作业一分钟源文件_初中生写作
- 下一篇: rpc wmi 服务不可用_golang