Tìm hiểu các câu lệnh phổ biến với netstat
và ss
.
1. netstat
-
netstat
là mộ công cụ để kiểm tra cấu hình và hoạt động của mạng. -
netstat
nằm trong góinet-tools
, cài đặtnetstat
:- Trên CentOS:
sudo yum install net-tools
- Trên Ubuntu:
sudo apt install net-tools
- Trên CentOS:
Một số câu lệnh phổ biến với netstat
.
- Hiển thị bảng routing với flag
-r
, flag-n
là để hiển thị địa chỉ dưới dạng địa chỉ ip chứ không hiển thị hostname: ```shnetstat -nr
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.20.1 0.0.0.0 UG 0 0 0 tap0 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlp3s0 10.11.11.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1 10.22.22.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet2 10.33.33.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet3
- Hiển thị trạng thái các interface với flag `-i`:
```sh
# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eno1 1500 0 0 0 0 0 0 0 0 BMU
lo 65536 14837 0 0 0 14837 0 0 0 LRU
tap0 1500 165833 0 4506 0 103690 0 1198 0 BMRU
vmnet1 1500 0 0 0 0 958 0 0 0 BMRU
Với cột cuối cùng là trạng thái của interface |Ký tự | Ý nghĩa | |—-|—–| |B | Có một địa chỉ broadcast được thiết lập| |L | Interface này là loopback| |M | Tất cả các gói tin được nhận| |O | ARP được tắt trên interface này.| |P | Đây là kết nối Point-to-Point| |R | Interface đang chạy| |U | Interface up (sẵn sàng khởi động và truyền gói tin) |
- Hiển thị kết nối:
netstat
hỗ trợ các tùy chọn để hiển thị các sockets. Tùy chọn-t
,-u
,-w
và-x
để hiển thị các kết nối socket TCP, UDP, RAW hoặc Unix. Nếu thêm tùy chọn-a
sẽ hiển thị các socket đang chờ kết nối ( ví dụ các socket đang ở trạng thái listening). - Hiển thị các kết nối tcp
# netstat -ta Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp 0 44 lamth-cen1:ssh 192.168.20.167:32968 ESTABLISHED tcp6 0 0 [::]:http [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN
- Hiển thị các kết nối UDP:
# netstat -ua Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 localhost:323 0.0.0.0:* udp6 0 0 localhost:323 [::]:*
- Hiển thị các listening (
-l
)TCP port và chương trình(-p
) sử dụng kết nối đó:# netstat -ltnp 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:22 0.0.0.0:* LISTEN 916/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1152/master tcp6 0 0 :::80 :::* LISTEN 2298/httpd tcp6 0 0 :::22 :::* LISTEN 916/sshd tcp6 0 0 ::1:25 :::* LISTEN 1152/master tcp6 0 0 :::3306 :::* LISTEN 2349/mysqld
- Hiển thị trạng thái dựa trên các giao thức(
-s
)# netstat -s Ip: 83042 total packets received 0 forwarded 0 incoming packets discarded 83041 incoming packets delivered 51841 requests sent out 18 outgoing packets dropped Icmp: 37 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 37 37 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 37 IcmpMsg: InType3: 37 OutType3: 37 Tcp: 574 active connections openings 26 passive connection openings 0 failed connection attempts 10 connection resets received 1 connections established 82123 segments received 51771 segments send out 27 segments retransmited 0 bad segments received. 19 resets sent .....
- Hiển thị thông tin về interface giống lệnh
ifconfig
: ```shnetstat -ie
Kernel Interface table ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.50.181 netmask 255.255.255.0 broadcast 192.168.50.255 inet6 fe80::7dde:43fa:7861:5e5 prefixlen 64 scopeid 0x20 ether 00:0c:29:ef:42:28 txqueuelen 1000 (Ethernet) RX packets 83150 bytes 124448012 (118.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 51923 bytes 6080920 (5.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
## 2. `ss`
- Là một công cụ để hiển thị thông tin về trạng thái của các socket. Nó cho phép hiển thị thông tin gần giống với `netstat`. Công cụ này hiển thị nhiều thông tin hơn thông tin về trạng thái và TCP.
#### Một số câu lệnh phổ biến với ss
- Hiển thị tất cả các kêt nối socket:
```sh
# ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 18759 * 18758
u_str ESTAB 0 0 * 17113 * 17112
....
tcp ESTAB 0 0 192.168.50.181:ssh 192.168.20.167:33992
tcp ESTAB 0 6516 192.168.50.181:ssh 192.168.20.167:32968
- Hiển thị các socker tcp(
-t
) đang nghe (-l
):[root@lamth-cen1 ~]# ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 80 :::3306 :::*
- Hiển thị process sử sử dụng các socket(
-p
):# ss -tlnp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* users:(("sshd",pid=916,fd=3)) LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1152,fd=13)) LISTEN 0 128 :::80 :::* users:(("httpd",pid=2434,fd=4),("httpd",pid=2432,fd=4),("httpd",pid=2431,fd=4),("httpd",pid=2430,fd=4),("httpd",pid=2428,fd=4),("httpd",pid=2305,fd=4),("httpd",pid=2302,fd=4),("httpd",pid=2301,fd=4),("httpd",pid=2300,fd=4),("httpd",pid=2299,fd=4),("httpd",pid=2298,fd=4)) LISTEN 0 128 :::22 :::* users:(("sshd",pid=916,fd=4)) LISTEN 0 100 ::1:25 :::* users:(("master",pid=1152,fd=14)) LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=2349,fd=17))
- Lọc kết nối với tcp state:
ss [ Option ] [ State ] [ địa chỉ ]
Các trạng thái:
- established
- syn-sent
- syn-recv
- fin-wait-1
- fin-wait-2
- time-wait
- closed
- close-wait
- last-ack
- closing
- all - All of the above states
- connected - All the states except for listen and closed
- synchronized - All the connected states except for syn-sent
- bucket - Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
- big - Opposite to bucket state.
ví dụ:
# watch ss -t4 state established
- Lọc kết nối qua địa chỉ và port:
Ví dụ: Lọc socket có port đích là 80 hoặc 443:
# ss -nt dst :443 or dst :80
Lọc các socket có nguồn là port 22 và ip nguồn là 192.168.50.181
# ss -nt src 192.168.50.181:22