Linux常用網(wǎng)絡(luò)工具總結(jié)

本文整理了在實(shí)踐過(guò)程中使用的Linux網(wǎng)絡(luò)工具,這些工具提供的功能非常強(qiáng)大蛙讥,我們平時(shí)使用的只是冰山一角锯蛀,比如lsof灭衷、ip次慢、tcpdump、iptables等。本文不會(huì)深入研究這些命令的強(qiáng)大用法迫像,因?yàn)槊總€(gè)命令都足以寫(xiě)一篇文章劈愚,本文只是簡(jiǎn)單地介紹并輔以幾個(gè)簡(jiǎn)單demo實(shí)例,旨在大腦中留個(gè)印象闻妓,平時(shí)遇到問(wèn)題時(shí)能夠快速搜索出這些工具菌羽,利用強(qiáng)大的man工具,提供一定的思路解決問(wèn)題由缆。
ping

使用這個(gè)命令判斷網(wǎng)絡(luò)的連通性以及網(wǎng)速注祖,偶爾還順帶當(dāng)做域名解析使用(查看域名的IP):

ping google.com

默認(rèn)使用該命令會(huì)一直發(fā)送ICMP包直到用戶(hù)手動(dòng)中止,可以使用-c命令指定發(fā)送數(shù)據(jù)包的個(gè)數(shù)均唉,使用-W指定最長(zhǎng)等待時(shí)間,如果有多張網(wǎng)卡是晨,還可以通過(guò)-I指定發(fā)送包的網(wǎng)卡。

小技巧: 在ping過(guò)程中按下ctrl+|會(huì)打印出當(dāng)前的summary信息舔箭,統(tǒng)計(jì)當(dāng)前發(fā)送包數(shù)量罩缴、接收數(shù)量、丟包率等层扶。

其他比如-b發(fā)送廣播箫章,另外注意ping只能使用ipv4,如果需要使用ipv6镜会,可以使用ping6命令檬寂。
netstat

這個(gè)命令用來(lái)查看當(dāng)前建立的網(wǎng)絡(luò)連接(深刻理解netstat每一項(xiàng)代表的含義)。最經(jīng)典的案例就是查看本地系統(tǒng)打開(kāi)了哪些端口:

fgp@controller:~$ sudo netstat -lnpt
[sudo] password for fgp:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2183/mysqld
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2506/memcached
tcp 0 0 0.0.0.0:9292 0.0.0.0:* LISTEN 1345/python
tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:6801 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 1339/mongod
tcp 0 0 0.0.0.0:6802 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:6803 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1290/sshd

netstat能夠查看所有的網(wǎng)絡(luò)連接稚叹,包括unix socket連接焰薄,其功能非常強(qiáng)大。

另外使用netstat還可以查看本地路由表:

fgp@controller:~$ sudo netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 brqcb225471-1f
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 brqcb225471-1f
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

以上Genmask為0.0.0.0的表示默認(rèn)路由扒袖,即連接外網(wǎng)的路由塞茅。網(wǎng)絡(luò)中0.0.0.0的IP地址表示整個(gè)網(wǎng)絡(luò),即網(wǎng)絡(luò)中的所有主機(jī)季率。它的作用是幫助路由器發(fā)送路由表中無(wú)法查詢(xún)的包野瘦。如果設(shè)置了全零網(wǎng)絡(luò)的路由,路由表中無(wú)法查詢(xún)的包都將送到全零網(wǎng)絡(luò)的路由中去飒泻。
lsof

lsof命令用來(lái)查看打開(kāi)的文件(list open files)鞭光,由于在Linux中一切皆文件,那socket泞遗、pipe等也是文件惰许,因此能夠查看網(wǎng)絡(luò)連接以及網(wǎng)絡(luò)設(shè)備,其中和網(wǎng)絡(luò)最相關(guān)的是-i選項(xiàng)史辙,它輸出符合條件的進(jìn)程(4汹买、6佩伤、協(xié)議、:端口晦毙、 @ip等)生巡,它的格式為[46][protocol][@hostname|hostaddr][:service|port],比如查看22端口有沒(méi)有打開(kāi),哪個(gè)進(jìn)程打開(kāi)的:

fgp@controller:~$ sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1290 root 3u IPv4 10300 0t0 TCP *:ssh (LISTEN)
sshd 1290 root 4u IPv6 10302 0t0 TCP *:ssh (LISTEN)

可見(jiàn)22端口是sshd這個(gè)命令见妒,其進(jìn)程號(hào)pid為1290打開(kāi)的孤荣。

可以指定多個(gè)條件,但默認(rèn)是OR關(guān)系的须揣,如果需要AND關(guān)系盐股,必須傳入-a參數(shù),比如查看22端口并且使用Ipv6連接的進(jìn)程:

fgp@controller:~$ sudo lsof -c sshd -i 6 -a -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1290 root 4u IPv6 10302 0t0 TCP *:ssh (LISTEN)

列出所有與192.168.56.1(我的宿主機(jī)IP地址)的ipv4連接:

fgp@controller:~$ sudo lsof -i 4@192.168.56.1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 2299 root 3u IPv4 14047 0t0 TCP controller:ssh->mac:54558 (ESTABLISHED)
sshd 2377 fgp 3u IPv4 14047 0t0 TCP controller:ssh->mac:54558 (ESTABLISHED)

iftop

用過(guò)top以及iotop的耻卡,自然能夠大致猜到iftop的功能遂庄,它是用于查看網(wǎng)絡(luò)流量的工具(display bandwidth usage on an interface by host):

sudo iftop

image.png

iftop
nc

nc(netcat)被稱(chēng)為網(wǎng)絡(luò)工具的瑞士軍刀,其非常輕巧但功能強(qiáng)大劲赠!常常作為網(wǎng)絡(luò)應(yīng)用的Debug分析器涛目,可以根據(jù)需要?jiǎng)?chuàng)建各種不同類(lèi)型的網(wǎng)絡(luò)連接。官方描述的功能包括:

simple TCP proxies
shell-script based HTTP clients and servers
network daemon testing
a SOCKS or HTTP ProxyCommand for ssh(1)
and much, much more

總之非常強(qiáng)大凛澎,能夠?qū)崿F(xiàn)簡(jiǎn)單的聊天工具霹肝、模擬ssh登錄遠(yuǎn)程主機(jī)、遠(yuǎn)程傳輸文件等塑煎。一個(gè)經(jīng)典的用法是端口掃描沫换。比如我要掃描192.168.56.2主機(jī)1~100端口,探測(cè)哪些端口開(kāi)放的(黑客攻擊必備):

fgp@controller:~$ nc -zv 192.168.56.2 1-100 |& grep 'succeeded!'
Connection to 192.168.56.2 22 port [tcp/ssh] succeeded!
Connection to 192.168.56.2 80 port [tcp/http] succeeded!

從結(jié)果中發(fā)現(xiàn)最铁,該主機(jī)打開(kāi)了22和80端口讯赏。
tcpdump

tcpdump(dump traffic on a network)是一個(gè)強(qiáng)大的命令行抓包工具,千萬(wàn)不要被它的名稱(chēng)誤導(dǎo)以為只能抓取tcp包冷尉,它能抓任何協(xié)議的包漱挎。它能夠?qū)崿F(xiàn)Wireshark一樣的功能,并且更加靈活自由雀哨!比如需要抓取目標(biāo)主機(jī)是192.168.56.1磕谅,通過(guò)端口22的傳輸數(shù)據(jù)包:

sudo tcpdump -n -i eth1 'dst host 192.168.56.1 && port 22'

輸出為:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
23:57:39.507490 IP 192.168.56.2.22 > 192.168.56.1.54558: Flags [P.], seq 3010719012:3010719120, ack 1116715283, win 354, options [nop,nop,TS val 1049052 ecr 187891473], length 108
23:57:39.507607 IP 192.168.56.2.22 > 192.168.56.1.54558: Flags [P.], seq 108:144, ack 1, win 354, options [nop,nop,TS val 1049052 ecr 187891473], length 36
23:57:39.507784 IP 192.168.56.2.22 > 192.168.56.1.54558: Flags [P.], seq 144:252, ack 1, win 354, options [nop,nop,TS val 1049052 ecr 187891476], length 108

抓取HTTP包:

sudo tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

其中0x4745為"GET"前兩個(gè)字母"GE",0x4854為"HTTP"前兩個(gè)字母"HT"。

指定-A以ACII碼輸出數(shù)據(jù)包雾棺,使用-c指定抓取包的個(gè)數(shù)膊夹。
telnet

telnet協(xié)議客戶(hù)端(user interface to the TELNET protocol),不過(guò)其功能并不僅僅限于telnet協(xié)議捌浩,有時(shí)也用來(lái)探測(cè)端口放刨,比如查看本地端口22是否開(kāi)放:

fgp@controller:~$ telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6

可見(jiàn)成功連接到localhost的22端口,說(shuō)明端口已經(jīng)打開(kāi)尸饺,還輸出了banner信息进统。
ifconfig

ifconfig也是熟悉的網(wǎng)卡配置工具(configure a network interface)拓诸,我們經(jīng)常使用它來(lái)查看網(wǎng)卡信息(比如IP地址、發(fā)送包的個(gè)數(shù)麻昼、接收包的個(gè)數(shù)、丟包個(gè)數(shù)等)以及配置網(wǎng)卡(開(kāi)啟關(guān)閉網(wǎng)卡馋辈、修改網(wǎng)絡(luò)mtu抚芦、修改ip地址等)。

查看網(wǎng)卡ip地址:

fgp@controller:~$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:c9:b4:f2
inet6 addr: fe80::a00:27ff:fec9:b4f2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27757 errors:0 dropped:0 overruns:0 frame:0
TX packets:589 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10519777 (10.5 MB) TX bytes:83959 (83.9 KB)

為網(wǎng)卡eth0增加一個(gè)新的地址(虛擬網(wǎng)卡):

fgp@controller:~$ sudo ifconfig eth0:0 10.103.240.2/24
fgp@controller:~$ ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 08:00:27:c9:b4:f2
inet addr:10.103.240.2 Bcast:10.103.240.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

關(guān)閉網(wǎng)卡以及開(kāi)啟網(wǎng)卡:

sudo ifconfig eth0 down
sudo ifconfig eth0 up

nslookup & dig

nslookup用于交互式域名解析(query Internet name servers interactively)迈螟,當(dāng)然也可以直接傳入域名作為Ad-Hoc命令使用叉抡,比如查看google.com的ip地址:

fgp@controller:~$ nslookup google.com
Server: 114.114.114.114
Address: 114.114.114.114#53

Non-authoritative answer:
Name: google.com
Address: 37.61.54.158

查看使用的DNS服務(wù)器地址:

fgp@controller:~$ nslookup

server
Default server: 114.114.114.114
Address: 114.114.114.114#53
Default server: 8.8.8.8
Address: 8.8.8.8#53

dig命令也是域名解析工具(DNS lookup utility),不過(guò)提供的信息更全面:

fgp@controller:~$ dig google.com

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53828
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 2730 IN A 37.61.54.158

;; AUTHORITY SECTION:
google.com. 10204 IN NS ns2.google.com.
google.com. 10204 IN NS ns4.google.com.
google.com. 10204 IN NS ns3.google.com.
google.com. 10204 IN NS ns1.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 86392 IN A 216.239.32.10
ns2.google.com. 80495 IN A 216.239.34.10
ns3.google.com. 85830 IN A 216.239.36.10
ns4.google.com. 13759 IN A 216.239.38.10

;; Query time: 17 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Thu May 05 00:11:48 CST 2016
;; MSG SIZE rcvd: 180

whois

whois用于查看域名所有者的信息(client for the whois directory service)答毫,比如注冊(cè)郵箱褥民、手機(jī)號(hào)碼、域名服務(wù)商等:

fgp@controller:~$ whois coolshell.cn
Domain Name: coolshell.cn
ROID: 20090825s10001s91994755-cn
Domain Status: ok
Registrant ID: hc401628324-cn
Registrant: 陳皓
Registrant Contact Email: haoel@hotmail.com
Sponsoring Registrar: 阿里云計(jì)算有限公司(萬(wàn)網(wǎng))
Name Server: f1g1ns1.dnspod.net
Name Server: f1g1ns2.dnspod.net
Registration Time: 2009-08-25 00:40:26
Expiration Time: 2020-08-25 00:40:26
DNSSEC: unsigned

我們發(fā)現(xiàn)coolshell.cn這個(gè)域名是陳皓在萬(wàn)網(wǎng)購(gòu)買(mǎi)注冊(cè)的洗搂,注冊(cè)時(shí)間是2009年消返,注冊(cè)郵箱是haoel@hotmail.com
route

route命令用于查看和修改路由表:

查看路由表:

fgp@controller:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 brqcb225471-1f
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 brqcb225471-1f
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

增加/刪除路由分別為add/del子命令,比如刪除默認(rèn)路由:

sudo route del default

增加默認(rèn)路由耘拇,網(wǎng)關(guān)為192.168.1.1撵颊,網(wǎng)卡為brqcb225471-1f:

sudo route add default gw 192.168.1.1 dev brqcb225471-1f

ip

ip命令可以說(shuō)是無(wú)比強(qiáng)大了,它完全可以替換ifconfig惫叛、netstat倡勇、route、arp等命令嘉涌,比如查看網(wǎng)卡eth1 IP地址:

[] 內(nèi)的內(nèi)容意思是:可寫(xiě)可不寫(xiě)
如果是{}妻熊,那就必須要在{}內(nèi)給出的選擇里選一個(gè)。

fgp@controller:~$ sudo ip addr ls dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.2/24 brd 192.168.56.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe9a:d5d1/64 scope link
valid_lft forever preferred_lft forever

查看網(wǎng)卡eth1配置:

fgp@controller:~$ sudo ip link ls eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff

查看路由:

fgp@controller:~$ ip route
default via 192.168.1.1 dev brqcb225471-1f
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.1.0/24 dev brqcb225471-1f proto kernel scope link src 192.168.1.105
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.2

查看arp信息:

fgp@controller:~$ sudo ip neigh
192.168.56.1 dev eth1 lladdr 0a:00:27:00:00:00 REACHABLE
192.168.0.6 dev vxlan-80 lladdr fa:16:3e:e1:30:c8 PERMANENT
172.17.0.2 dev docker0 lladdr 02:42:ac:11:00:02 STALE
192.168.56.3 dev eth1 FAILED
192.168.1.1 dev brqcb225471-1f lladdr 30:fc:68:41:12:c6 STALE

查看網(wǎng)絡(luò)命名空間:

fgp@controller:~$ sudo ip netns ls
qrouter-24bf83c7-f61d-496b-8115-09f0f3d64d21
qdhcp-9284d7a8-711a-4927-8a10-605b34372768
qdhcp-cb225471-1f85-4771-b24b-a4a7108d93a4

進(jìn)入某個(gè)網(wǎng)絡(luò)命名空間:

fgp@controller:~$ sudo ip netns exec qrouter-24bf83c7-f61d-496b-8115-09f0f3d64d21 bash
root@controller:~# ifconfig
qg-0d258e6d-83 Link encap:Ethernet HWaddr fa:16:3e:93:6f:a3
inet addr:172.16.1.101 Bcast:172.16.1.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe93:6fa3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1035 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:102505 (102.5 KB) TX bytes:1200 (1.2 KB)

brctl

brctl是linux網(wǎng)橋管理工具仑最,可用于查看網(wǎng)橋扔役、創(chuàng)建網(wǎng)橋、把網(wǎng)卡加入網(wǎng)橋等警医。

查看網(wǎng)橋:

fgp@controller:~$ sudo brctl show
bridge name bridge id STP enabled interfaces
brq9284d7a8-71 8000.12841adee45f no tap36daf550-27
tape729e013-df
vxlan-80
brqcb225471-1f 8000.080027c9b4f2 no eth0
tap0d258e6d-83
tapb844e7a5-83
docker0 8000.0242e4580b61 no veth50ed8dd

以上因?yàn)椴渴鹆薿penstack neutron以及docker厅目,因此網(wǎng)橋比較復(fù)雜。 其他子命令如addbr用于創(chuàng)建網(wǎng)橋法严、delbr用戶(hù)刪除網(wǎng)橋(刪除之前必須處于down狀態(tài)损敷,使用ip link set br_name down)、addif把網(wǎng)卡加到網(wǎng)橋等深啤。
traceroute

ping命令用于探測(cè)兩個(gè)主機(jī)間連通性以及響應(yīng)速度拗馒,而traceroute會(huì)統(tǒng)計(jì)到目標(biāo)主機(jī)的每一跳的網(wǎng)絡(luò)狀態(tài)(print the route packets trace to network host),這個(gè)命令常常用于判斷網(wǎng)絡(luò)故障溯街,比如本地不通诱桂,可使用該命令探測(cè)出是哪個(gè)路由出問(wèn)題了洋丐。如果網(wǎng)絡(luò)很卡,該命令可判斷哪里是瓶頸:

fgp@controller:~$ sudo traceroute -I -n int32bit.me
traceroute to int32bit.me (192.30.252.154), 30 hops max, 60 byte packets
1 192.168.1.1 4.610 ms 5.623 ms 5.515 ms
2 117.100.96.1 5.449 ms 5.395 ms 5.356 ms
3 124.205.97.48 5.362 ms 5.346 ms 5.331 ms
4 218.241.165.5 5.322 ms 5.310 ms 5.299 ms
5 218.241.165.9 5.187 ms 5.138 ms 7.386 ms
...

可以看到挥等,從主機(jī)到int32bit.me共經(jīng)過(guò)30跳友绝,并統(tǒng)計(jì)了每一跳間的響應(yīng)時(shí)間。

另外可以參考tracepath肝劲。
mtr

mtr是常用的網(wǎng)絡(luò)診斷工具(a network diagnostic tool)迁客,它把ping和traceroute并入一個(gè)程序的網(wǎng)絡(luò)診斷工具中并實(shí)時(shí)刷新。

mtr -n int32bit.me

輸出如圖:

image.png

mtr從圖上可以看出從本地到int32bit.me經(jīng)過(guò)的所有路由辞槐,每一個(gè)路由間的丟包率掷漱、響應(yīng)時(shí)間等。
ss

ss命令也是一個(gè)查看網(wǎng)絡(luò)連接的工具(another utility to investigate sockets),用來(lái)顯示處于活動(dòng)狀態(tài)的套接字信息榄檬。關(guān)于ss的描述卜范,引用Linux命令大全-ss命令

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ì)很慢』逞Γ可能你不會(huì)有切身的感受刺彩,但請(qǐng)相信我,當(dāng)服務(wù)器維持的連接達(dá)到上萬(wàn)個(gè)的時(shí)候枝恋,使用netstat等于浪費(fèi) 生命创倔,而用ss才是節(jié)省時(shí)間。 天下武功唯快不破焚碌。ss快的秘訣在于畦攘,它利用到了TCP協(xié)議棧中tcp_diag。tcp_diag是一個(gè)用于分析統(tǒng)計(jì)的模塊十电,可以獲得Linux 內(nèi)核中第一手的信息知押,這就確保了ss的快捷高效。當(dāng)然鹃骂,如果你的系統(tǒng)中沒(méi)有tcp_diag台盯,ss也可以正常運(yùn)行,只是效率會(huì)變得稍慢畏线。

其中比較常用的參數(shù)包括:

-l 查看處于LISTEN狀態(tài)的連接
-t 查看tcp連接
-4 查看ipv4連接
-n 不進(jìn)行域名解析

因此我們可以通過(guò)ss命令查看本地監(jiān)聽(tīng)的所有端口(和netstat命令功能類(lèi)似):

ss -t -l -n -4

輸出如圖:

image.png

curl

curl是強(qiáng)大的URL傳輸工具静盅,支持FILE, FTP, HTTP, HTTPS, IMAP, LDAP, POP3,RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET以及TFTP等協(xié)議。我們使用這個(gè)命令最常用的功能就是通過(guò)命令行發(fā)送HTTP請(qǐng)求以及下載文件寝殴,它幾乎能夠模擬所有瀏覽器的行為請(qǐng)求蒿叠,比如模擬refer(從哪個(gè)頁(yè)面跳轉(zhuǎn)過(guò)來(lái)的)明垢、cookie、agent(使用什么瀏覽器)等等市咽,同時(shí)還能夠模擬表單數(shù)據(jù)痊银。

curl -X POST -d "DDDDD=2013140333&upass=1q2w3e4r&save_me=1&R1=0" 10.3.8.211

以上方法利用curl往認(rèn)證服務(wù)器發(fā)送POST請(qǐng)求,發(fā)送數(shù)據(jù)為用戶(hù)名以及密碼(模擬表單輸入)施绎。

具體用法參考buptLogin溯革。

Openstack的命令行工具,比如nova粘姜,傳入--debug參數(shù)就會(huì)顯示curl往nova-api的curl REST請(qǐng)求。

curl命令非常強(qiáng)大熔酷,掌握了它能夠發(fā)揮巨大的作用孤紧,其他有用參數(shù)列舉如下:

-i 顯示頭部信息
-I 只顯示頭部信息,不顯示正文
-X 指定請(qǐng)求方法拒秘,比如GET号显、POST等
-d 發(fā)送數(shù)據(jù)
--form模擬表單,利用這個(gè)參數(shù)可以上傳文件躺酒、模擬點(diǎn)擊按鈕等
-A 指定用戶(hù)代理押蚤,比如Mozilla/4.0,有些坑爹網(wǎng)址必須使用IE訪(fǎng)問(wèn)怎么辦
-b 設(shè)置cookie
-c 指定cookie文件
-e 指定referer,有些網(wǎng)址必須從某個(gè)頁(yè)面跳轉(zhuǎn)過(guò)去
--header 設(shè)置請(qǐng)求的頭部信息
--user 有些頁(yè)面需要HTTP認(rèn)證羹应, 傳遞name:password認(rèn)證

wget

wget是一個(gè)強(qiáng)大的非交互網(wǎng)絡(luò)下載工具(The non-interactive network downloader)揽碘,雖然curl也支持文件下載,不過(guò)wget更強(qiáng)大园匹,比如支持?jǐn)帱c(diǎn)下載等雳刺。

最簡(jiǎn)單的用法直接加上文件URL即可:

wget http://xxx/xxx/video.mp4

使用-r參數(shù)為遞歸的下載網(wǎng)頁(yè),默認(rèn)遞歸深度為5裸违,相當(dāng)于爬蟲(chóng)掖桦,用戶(hù)可以通過(guò)-l指定遞歸深度。

注意wget默認(rèn)沒(méi)有開(kāi)啟斷點(diǎn)下載功能供汛,需要手動(dòng)傳入-c參數(shù)枪汪。

如果需要批量下載,可以把所有的URL寫(xiě)入文件download.txt,然后通過(guò)-i指定下載文件列表:

wget -i download.txt

如果用戶(hù)不指定保存文件名怔昨,wget默認(rèn)會(huì)以最后一個(gè)符合/的后面的字符作為保存文件名雀久,有時(shí)不是我們所期望的,此時(shí)需要-O指定保存的文件名趁舀。

通過(guò)--limit-rate可以限制下載的最大速度岸啡。

使用-b可以實(shí)現(xiàn)后臺(tái)下載。

另外wget甚至可以鏡像整個(gè)網(wǎng)站:

wget --mirror -p --convert-links -P int32bit http://int32bit.me

wget還支持指定下載文件的格式赫编,比如只下載jpg圖片:

wget -A.jpg -r -l 2 http://int32bit.me/

axel

axel是一個(gè)多線(xiàn)程下載工具(A light download accelerator for Linux)巡蘸,通過(guò)建立多連接奋隶,能夠大幅度提高下載速度,所以我經(jīng)常使用這個(gè)命令開(kāi)掛下載大文件悦荒,比wget快多了唯欣,并且默認(rèn)就支持?jǐn)帱c(diǎn)下載:

開(kāi)啟20個(gè)線(xiàn)程下載文件:

axel -n 20 URL

這個(gè)強(qiáng)大的下載工具極力推薦,非常好用搬味!
nethogs

我們前面介紹的iftop工具能夠根據(jù)主機(jī)查看流量(by host)境氢,而nethogs則可以根據(jù)進(jìn)程查看流量信息(Net top tool grouping bandwidth per process)。ubuntu14.04中使用apt-get安裝的有bug碰纬,需要手動(dòng)安裝:

sudo apt-get install build-essential libncurses5-dev libpcap-dev
git clone https://github.com/raboof/nethogs
cd nethogs
make -j 4

編譯完后執(zhí)行

./nethogs eth1

我們指定了監(jiān)控的網(wǎng)卡為eth1萍聊,結(jié)果如圖:

image.png

由于eth1是私有ip,只有ssh進(jìn)程悦析,從圖中我們可以看到它的進(jìn)程號(hào)為17264寿桨,程序?yàn)閟shd,共發(fā)送了1.593MB數(shù)據(jù)强戴,接收了607.477MB數(shù)據(jù)(scp了一個(gè)鏡像文件)亭螟。按m鍵還能切換視角查看當(dāng)前流量。
iptables

iptables是強(qiáng)大的包過(guò)濾工具骑歹,Docker预烙、Neutron都網(wǎng)絡(luò)配置都離不開(kāi)iptables。iptables通過(guò)一系列規(guī)則來(lái)實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾道媚、處理扁掸,能夠?qū)崿F(xiàn)防火墻、NAT等功能最域。當(dāng)一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)入到主機(jī)之前也糊,先經(jīng)過(guò)Netfilter檢查,即iptables規(guī)則羡宙,檢查通過(guò)則接受(Accept)進(jìn)入本機(jī)資源狸剃,否則丟棄該包(Drop)。規(guī)則是有順序的狗热,如果匹配第一個(gè)規(guī)則钞馁,則執(zhí)行該規(guī)則的Action,不會(huì)執(zhí)行后續(xù)的規(guī)則匿刮。iptables的規(guī)則有多個(gè)表構(gòu)成僧凰,每個(gè)表又由鏈(chain)構(gòu)成,每個(gè)表的功能不一樣熟丸,本文只涉及兩個(gè)簡(jiǎn)單的表训措,即Filter表和NAT表,望文生義即可了解,F(xiàn)ilter表用于包過(guò)濾绩鸣,而NAT表用來(lái)進(jìn)行源地址和目的地址的IP或者端口轉(zhuǎn)換怀大。
1.Filter表

Filter表主要和進(jìn)入Linux本地的數(shù)據(jù)包有關(guān),也是默認(rèn)的表呀闻。該表主要由三條鏈構(gòu)成:

INPUT:對(duì)進(jìn)入主機(jī)的數(shù)據(jù)包過(guò)濾
OUTPUT:對(duì)本地發(fā)送的數(shù)據(jù)包過(guò)濾
FORWARD:傳遞數(shù)據(jù)包到后端計(jì)算機(jī)化借,與NAT有點(diǎn)類(lèi)似。

查看本地的Filter表:

fgp@controller:~$ sudo iptables -n -t filter --list
[root@portal ~]# iptables -n -t filter --list
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

其中-n表示不進(jìn)行域名解析,-t指定使用的表,--list表示列出所有規(guī)則捡多。我們發(fā)現(xiàn)目前沒(méi)有定義任何規(guī)則蓖康。注意鏈后面的policy為ACCEPT,表示若通過(guò)所有的規(guī)則都不匹配垒手,則為默認(rèn)action accept蒜焊。

接下來(lái)將通過(guò)幾個(gè)demo實(shí)例演示怎么使用Filter表。

注意:

本文實(shí)驗(yàn)使用的是本機(jī)虛擬機(jī)科贬,其中宿主機(jī)地址為192.168.56.1泳梆,虛擬機(jī)地址為192.168.56.2,在實(shí)驗(yàn)中會(huì)涉及丟棄192.168.56.1的數(shù)據(jù)包唆迁,如果您連接的是遠(yuǎn)程云主機(jī)鸭丛,將導(dǎo)致和遠(yuǎn)程主機(jī)斷開(kāi)連接竞穷。
以下每個(gè)步驟唐责,除非特別說(shuō)明,下一個(gè)步驟執(zhí)行前瘾带,務(wù)必清空上一個(gè)步驟的規(guī)則:

sudo iptables -F

首先看一個(gè)簡(jiǎn)單的例子鼠哥,把192.168.56.1加入黑名單禁止其訪(fǎng)問(wèn):

sudo iptables -A INPUT -i eth1 -s 192.168.56.1 -j DROP

例子中-A表示追加規(guī)則,INPUT是鏈名,-i指定網(wǎng)卡看政,-s指定源IP地址朴恳,-j指定action,這里為DROP允蚣,即丟棄包于颖。

此時(shí)192.168.56.1這個(gè)ip不能和主機(jī)通信了,ssh會(huì)立即掉線(xiàn)嚷兔,只能通過(guò)vnc連接了森渐!

-s不僅能夠指定IP地址,還可以指定網(wǎng)絡(luò)地址冒晰,使用-p指定協(xié)議類(lèi)型同衣,比如我們需要丟掉所有來(lái)自192.168.56.0/24這個(gè)網(wǎng)絡(luò)地址的ICMP包,即不允許ping:

sudo iptables -A INPUT -s 192.168.56.0/24 -i eth1 -p icmp -j DROP

輸出結(jié)果:

? ~ nc -z 192.168.56.2 22
Connection to 192.168.56.2 port 22 [tcp/ssh] succeeded!
? ~ ping 192.168.56.2
PING 192.168.56.2 (192.168.56.2): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
^C
--- 192.168.56.2 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

我們發(fā)現(xiàn)能夠通過(guò)nc連接主機(jī)壶运,但ping不通耐齐。

我們還可以通過(guò)--dport指定目標(biāo)端口,比如不允許192.168.56.1這個(gè)主機(jī)ssh連接(不允許訪(fǎng)問(wèn)22端口):

sudo iptables -A INPUT -s 192.168.56.1 -p tcp --dport 22 -i eth1 -j DROP

注意:使用--dport或者--sport必須同時(shí)使用-p指定協(xié)議類(lèi)型,否則無(wú)效埠况!

以上把192.168.56.1打入了ssh黑名單,此時(shí)能夠ping通主機(jī)耸携,但無(wú)法通過(guò)ssh連接主機(jī)。

Filter表的介紹就到此為止询枚,接下來(lái)看NAT表的實(shí)例违帆。
2.NAT表

NAT表默認(rèn)由以下三條鏈構(gòu)成:

PREROUTING:在進(jìn)行路由判斷前所要進(jìn)行的規(guī)則(DNAT/Redirect)
POSTROUTING: 在進(jìn)行路由判斷之后要進(jìn)行的規(guī)則(SNAT/MASQUERADE)
OUTPUT: 與發(fā)送的數(shù)據(jù)包有關(guān)

根據(jù)需要修改的是源IP地址還是目標(biāo)IP地址,NAT可以分為兩種:

DNAT:需要修改目標(biāo)地址(IP或者端口)金蜀,使用場(chǎng)景為從外網(wǎng)來(lái)的數(shù)據(jù)包需要映射到內(nèi)部的一個(gè)私有IP刷后,比如46.64.22.33->192.168.56.1。顯然作用在PREROUTING渊抄。
SNAT:需要修改源地址(IP或者端口)尝胆,使用場(chǎng)景和DNAT相反,內(nèi)部私有IP需要發(fā)數(shù)據(jù)包出去护桦,必須首先映射成公有IP含衔,比如192.168.56.1->46.64.22.33。顯然作用在POSTROUTING二庵。

首先實(shí)現(xiàn)介紹一個(gè)簡(jiǎn)單的demo贪染,端口轉(zhuǎn)發(fā),我們把所有來(lái)自2222的tcp請(qǐng)求轉(zhuǎn)發(fā)到本機(jī)的22端口,顯然需要修改目標(biāo)地址催享,因此屬于DNAT:

sudo iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-ports 22

此時(shí)在192.168.56.1上使用ssh連接杭隙,指定端口為2222:

ssh fgp@192.168.56.2 -p 2222

我們能夠順利登錄,說(shuō)明端口轉(zhuǎn)發(fā)成功因妙。

另一個(gè)例子是使用雙網(wǎng)卡linux系統(tǒng)作為路由器痰憎,我們有一臺(tái)服務(wù)器controller有兩個(gè)網(wǎng)卡:

eth0: 192.168.1.102 # 可以通外網(wǎng)
eth1: 192.168.56.2 # 不可以通外網(wǎng),用作網(wǎng)關(guān)接口攀涵。

另外一臺(tái)服務(wù)器node1只有一個(gè)網(wǎng)卡eth1铣耘,IP地址為192.168.56.3,不能通外網(wǎng)以故。我們?cè)O(shè)置默認(rèn)路由為controller機(jī)器的eth1:

sudo route add default gw 192.168.56.2 dev eth1

此時(shí)路由表信息為:

fgp@node1:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.56.2 0.0.0.0 UG 0 0 0 eth1
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

由路由表可知蜗细,node1上的數(shù)據(jù)包會(huì)發(fā)送到網(wǎng)關(guān)192.168.56.2,即controller節(jié)點(diǎn).

接下來(lái)我們要在服務(wù)器controller上配置NAT怒详,我們需要實(shí)現(xiàn)192.168.56.0/24的IP都轉(zhuǎn)發(fā)到eth0炉媒,顯然是SNAT,修改的源地址為eth0 IP地址192.168.1.102:

sudo iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o eth0 -j SNAT --to-source 192.168.1.102

其中-t指定nat表棘利,-A 指定鏈為POSTROUTING橱野,-s 為源ip地址段,-o指定轉(zhuǎn)發(fā)網(wǎng)卡善玫,注意-j參數(shù)指定action為SNAT水援,并指定eth0 IP地址(注意eth0可能配置多個(gè)ip地址密强,因此必須指定--to-source)。

此時(shí)在node1機(jī)器上檢測(cè)網(wǎng)絡(luò)連通性:

fgp@node1:~$ ping baidu.com -c 2
PING baidu.com (180.149.132.47) 56(84) bytes of data.
64 bytes from 180.149.132.47: icmp_seq=1 ttl=48 time=7.94 ms
64 bytes from 180.149.132.47: icmp_seq=2 ttl=48 time=6.32 ms

--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 6.328/7.137/7.946/0.809 ms

node1能夠正常上網(wǎng)蜗元。

以上通過(guò)使用controller的網(wǎng)卡eth0作為路由實(shí)現(xiàn)了node1的上網(wǎng)或渤,但同時(shí)有一個(gè)問(wèn)題存在,我們?cè)谥付⊿NAT時(shí)必須手動(dòng)指定IP奕扣,如果eth0 IP地址變化了薪鹦,必須修改iptables規(guī)則。顯然這樣很難維護(hù)惯豆,我們可以通過(guò)MASQUERADE實(shí)現(xiàn)動(dòng)態(tài)SNAT池磁,不需要指定IP地址:

sudo iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o eth0 -j MASQUERADE

其他

使用iptables-save能夠?qū)С鲆?guī)則,使用iptables-restore能夠從文件中導(dǎo)入規(guī)則楷兽。
ipset

以上我們通過(guò)iptables封IP地熄,如果IP地址非常多,我們就需要加入很多的規(guī)則芯杀,這些規(guī)則需要一一判斷端考,性能會(huì)下降(線(xiàn)性的)。ipset能夠把多個(gè)主機(jī)放入一個(gè)集合揭厚,iptables能夠針對(duì)這個(gè)集合設(shè)置規(guī)則却特,既方便操作,又提高了執(zhí)行效率筛圆。注意ipset并不是只能把ip放入集合裂明,還能把網(wǎng)絡(luò)地址、mac地址顽染、端口等也放入到集合中漾岳。

首先我們創(chuàng)建一個(gè)ipset:

sudo ipset create blacklist hash:ip

以上創(chuàng)建了一個(gè)blacklist集合轰绵,集合名稱(chēng)后面為存儲(chǔ)類(lèi)型粉寞,除了hash表,還支持bitmap左腔、link等唧垦,后面是存儲(chǔ)類(lèi)型,我們指定的是ip液样,表示我們的集合元素為ip地址振亮。

我們?yōu)檫@個(gè)blacklist集合增加一條規(guī)則,禁止訪(fǎng)問(wèn):

sudo iptables -I INPUT -m set --match-set blacklist src -j DROP

此時(shí)只要在blacklist的ip地址就會(huì)自動(dòng)加入黑名單鞭莽。

我們把192.168.56.1和192.168.56.3加入黑名單中:

sudo ipset add blacklist 192.168.56.3
sudo ipset add blacklist 192.168.56.1

此時(shí)ssh連接中斷坊秸,使用vnc連接查看:

fgp@controller:~/github/int32bit.github.io$ sudo ipset list blacklist
Name: blacklist
Type: hash:ip
Revision: 2
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 176
References: 1
Members:
192.168.56.1
192.168.56.3

把192.168.56.1移除黑名單:

sudo ipset del blacklist 192.168.56.1

我們上面的例子指定的類(lèi)型為ip,除了ip澎怒,還可以是網(wǎng)絡(luò)段褒搔,端口號(hào)(支持指定TCP/UDP協(xié)議),mac地址,網(wǎng)絡(luò)接口名稱(chēng)星瘾,或者上述各種類(lèi)型的組合走孽。比如指定 hash:ip,port就是 IP地址和端口號(hào)共同作為hash的鍵。指定類(lèi)型為net既可以放入ip地址琳状,也可以放入網(wǎng)絡(luò)地址磕瓷。

另外ipset還支持timeout參數(shù),可以指定時(shí)間念逞,單位為秒困食,超過(guò)這個(gè)時(shí)間,ipset會(huì)自動(dòng)從集合中移除這個(gè)元素翎承,比如封192.168.56.11分鐘時(shí)間不允許訪(fǎng)問(wèn)

sudo ipset create blacklist hash:net timeout 300
sudo ipset add blacklist 192.168.56.1 timeout 60

以上首先創(chuàng)建了支持timeout的集合陷舅,這個(gè)集合默認(rèn)超時(shí)時(shí)間為300s,接著把192.168.56.1加入到集合中并設(shè)置時(shí)間為60s审洞。

注意:執(zhí)行ipset add時(shí)指定timeout必須保證創(chuàng)建的集合支持timeout參數(shù)莱睁,即設(shè)置默認(rèn)的timeout時(shí)間.如果不想為集合設(shè)置默認(rèn)timeout時(shí)間,而又想支持timeout芒澜,可以設(shè)置timeout為0仰剿,相當(dāng)于默認(rèn)不會(huì)超時(shí)。
總結(jié)

本文總結(jié)了Linux中的常用的網(wǎng)絡(luò)工具痴晦,其中包括

網(wǎng)絡(luò)配置相關(guān):ifconfig南吮、ip
路由相關(guān):route、netstat誊酌、ip
查看端口工具:netstat部凑、lsof、ss碧浊、nc涂邀、telnet
下載工具:curl、wget箱锐、axel
防火墻:iptables比勉、ipset
流量相關(guān):iftop、nethogs
連通性及響應(yīng)速度:ping驹止、traceroute浩聋、mtr、tracepath
域名相關(guān):nslookup臊恋、dig衣洁、whois
web服務(wù)器:python、nginx
抓包相關(guān):tcpdump
網(wǎng)橋相關(guān):ip抖仅、brctl坊夫、ifconfig毙替、ovs

原味地址:http://blog.csdn.net/li_101357/article/details/70256411

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市践樱,隨后出現(xiàn)的幾起案子厂画,更是在濱河造成了極大的恐慌,老刑警劉巖拷邢,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袱院,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瞭稼,警方通過(guò)查閱死者的電腦和手機(jī)忽洛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)环肘,“玉大人欲虚,你說(shuō)我怎么就攤上這事』诒ⅲ” “怎么了复哆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腌零。 經(jīng)常有香客問(wèn)我梯找,道長(zhǎng),這世上最難降的妖魔是什么益涧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任锈锤,我火速辦了婚禮,結(jié)果婚禮上闲询,老公的妹妹穿的比我還像新娘久免。我一直安慰自己,他們只是感情好扭弧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布阎姥。 她就那樣靜靜地躺著,像睡著了一般寄狼。 火紅的嫁衣襯著肌膚如雪丁寄。 梳的紋絲不亂的頭發(fā)上氨淌,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天泊愧,我揣著相機(jī)與錄音,去河邊找鬼盛正。 笑死删咱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豪筝。 我是一名探鬼主播痰滋,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摘能,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了敲街?” 一聲冷哼從身側(cè)響起团搞,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎多艇,沒(méi)想到半個(gè)月后逻恐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峻黍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年复隆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姆涩。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挽拂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出骨饿,到底是詐尸還是另有隱情亏栈,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布宏赘,位于F島的核電站仑扑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏置鼻。R本人自食惡果不足惜镇饮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望箕母。 院中可真熱鬧储藐,春花似錦、人聲如沸嘶是。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)聂喇。三九已至辖源,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間希太,已是汗流浹背克饶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留誊辉,地道東北人矾湃。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像堕澄,于是被迫代替她去往敵國(guó)和親邀跃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霉咨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容