Lệnh fping trong Linux

fping là 1 chương trình giống như ping khi sử dụng các gói tin echo ICMP để xác định 1 địa chỉ trên mạng có phản hồi không. fping khác ping khi mà chúng ta có thể chỉ ra nhiều địa chỉ đích trong 1 dòng lệnh, hoặc chỉ ra 1 tập tin chứa danh sách các địa chỉ mạng cần ping. Thay cho việc gửi đến 1 địa chỉ đến khi nó hết giờ hoặc trả lời, fping sẽ gửi đi 1 gói tin  và di chuyển sang mục tiêu kế tiếp theo kiểu Round-Robin. Ở chế độ mặc định, nếu 1 mục tiêu trả lời gói tin echo, nó sẽ được ghi chú và xóa khỏi danh sách các mục tiêu cần kiểm tra; nếu 1 mục tiêu không phản hồi trong giới hạn thời gian quy định, nó sẽ được xem là không thể kết nối (unreachable). fping cũng hỗ trợ việc gửi 1 só lượng gói tin nhất định đến 1 địa chỉ, hay lặp vô hạn (giống như ping). Không giống ping, fping có ý nghĩa khi được dùng trong các kịch bản, vì kết quả xuất ra của nó được thiết kế để dễ phân tích.

fping6 là 1 phiên bản khác của fping, khi nó được viết cho địa chỉ IPv6, thay vì IPv4 của fping.

Trong bài viết này chúng ta sẽ tìm hiểu qua cách sử dụng fping trong Linux.

1. Cài đặt

Không giống như ping được cài đặt gần như trên tất cả các hệ điều hành, mặc định thì fping không được cài đặt trên các bản phân phối Linux, do đó chúng ta cần cài đặt ứng dụng này.

Đối với các bản phân phối RHEL và CentOS, chúng ta có thể tải gói cài đặt của fping tại địa chỉ http://pkgs.repoforge.org/fping.

Cài đặt fping trên RHEL/CentOS 32 bit như sau:

## For RHEL/ CentOS 6
# wget http://pkgs.repoforge.org/fping/fping-3.10-1.el6.rf.i686.rpm
# rpm -ivh fping-3.10-1.el6.rf.i686.rpm

## For RHEL/ CentOS 5
# wget http://pkgs.repoforge.org/fping/fping-3.10-1.el5.rf.i386.rpm
# rom -ivh fping-3.10-1.el5.rf.i386.rpm

## For RHEL/ CentOS 4
# wget http://pkgs.repoforge.org/fping/fping-3.10-1.el4.rf.i386.rpm
# rpm -ivh fping-3.10-1.el4.rf.i386.rpm

Cài đặt fping trên RHEL/ CentOS 64 bit như sau:

## For RHEL/ CentOS 6
# wget http://pkgs.repoforge.org/fping/fping-3.3-1.el6.rf.x86_64.rpm
# rpm -ivh fping-3.3-1.el6.rf.x86_64.rpm

## For RHEL/ CentOS 5
# wget http://pkgs.repoforge.org/fping/fping-3.10-1.el5.rf.x86_64.rpm
# rpm -ivh fping-3.10-1.el5.rf.x86_64.rpm

## For RHEL/ CentOS 4
# wget http://pkgs.repoforge.org/fping/fping-3.10-1.el4.rf.x86_64.rpm
# rpm -ivh fping-3.10-1.el4.rf.x86_64.rpm

2. Cú pháp

$ fping [options] [ systems...]

hoặc

$ fping6 [ options ] [ systems... ]

trong đó:

  • [ options ] => danh sách các tùy chọn được hỗ trợ trong fping.
  • [ systems…] => danh sách các địa chỉ cần ping.

Ví dụ:

Trong trường hợp thành công, fping sẽ hiển thị kết quả như sau:

$ fping google.com google.com.vn
google.com is alive
google.com.vn is alive

Trong trường hợp thất bại:

  • Nếu địa chỉ cần ping khác lớp mạng với máy tính của chúng ta, fping sẽ hiển thị ra kết quả sau:
$ fping 192.168.0.1
192.168.0.1 is unreachable
  • Nếu địa chỉ đích cùng lớp mạng, chúng ta sẽ nhận được kết quả xuất ra như sau:
$ fping 192.168.1.10
ICMP Host Unreachable from 192.168.1.108 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.108 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.108 for ICMP Echo sent to 192.168.1.10
192.168.1.10 is unreachable

 3. Mã trạng thái

Trong quá trình hoạt động, fping sẽ trả về các mã trạng thái sau:

  • 0 => khi tất cả các máy tính cần ping đều có thể kết nối.
  • 1 => khi có 1 vài địa chỉ không thể kết nối đến được (unreachable).
  • 2 => khi có 1 vài địa chỉ IP không tìm thấy (not found).
  • 3 => khi có các tham số dòng lệnh không hợp lệ.
  • 4 => lỗi khi gọi hệ thống

4. Thiết lập địa chỉ nguồn

Khi máy tính của chúng ta có nhiều giao tiếp mạng và nhiều địa chỉ IP cùng hoạt động, fping cho phép chúng ta chọn ra 1 giao tiếp mạng và 1 địa chỉ IP trong số các giao tiếp mạng và địa chỉ đang có để thực hiện ping từ giao tiếp mạng và địa chỉ đó.

  • -S addr => thiết lập địa chỉ IP nguồn dùng để ping.
$ fping -S 192.168.1.10 google.com.vn
google.com.vn is alive
  • -I interface => thiết lập giao thức mạng dùng để ping.
$ fping -I eth0 google.com.vn
google.com.vn is alive

Lưu ý:

Địa chỉ IP mà ta dùng với tùy chọn -S phải đang tồn tại trên máy tính của chúng ta. Tùy chọn này là để chọn ra địa chỉ IP, không phải gán địa chỉ IP cho giao tiếp mạng.

Khi cả 2 tùy chọn -S và -I cùng xuất hiện trong dòng lệnh fping thì tùy chọn -I sẽ được ưu tiên xử lý.

5. Cấu hình dữ liệu gửi

fping cung cấp cho chúng ta chức năng để điều chỉnh dữ liệu sẽ được gửi trong quá trình ping. Để sử dụng tính năng đó, sử dụng tùy chọn -b như sau:

$ fping -b n addr

Trong đó n là số byte dữ liệu ping sẽ gửi. Kích thước nhỏ nhất (thường là 12) cho phép không gian cho dữ liệu mà fping cần để thực hiện công việc của nó (số thứ tự, tem thời gian). Kích thước dữ liệu nhận được báo cáo bao gồm IP header (thường là 20 byte) và ICMP header (8 byte), vì vậy kích thước tổng tối thiếu là 40 byte. Giá trị mặc định của thông số này là 56, như trong ping. Giá trị tối đa là kích thước datagram tối đa của IP theo lý thuyết (64 KB), dù đa số hệ thống giới hạn giá trị này xuống 1 giá trị nhỏ hơn, đây là giá trị phụ thuộc vào từng hệ thống.

6. Chế độ im lặng

Để sử dụng chế độ im lặng trong fping, chúng ta sử dụng tùy chọn -q như sau:

$ fping -q addr

Bình thường, khi ping 1 địa chỉ, fping sẽ xuất ra các dòng kết quả như sau:

$ fping 192.168.1.10
ICMP Host Unreachable from 192.168.1.104 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.104 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.104 for ICMP Echo sent to 192.168.1.10
192.168.1.10 is unreachable

hoặc

$ fping 192.168.1.10
192.168.1.10 is unreachable

hoặc

$ fping 192.168.1.10
192.168.1.10 is alive

Ở chế độ im lặng, fping sẽ không xuất ra kết quả của quá trình ping, khi đó để xác định kết quả của fping, chúng ta dựa vào mã trạng thái trả về của fping đã trình bày ở trên.

$ fping -q 192.168.1.10
$ echo $?
1

Khi sử dụng -q kết hợp với các tùy chọn khác, fping sẽ xuất ra kết quả của tùy chọn đó.

$ fping -q -a 192.168.1.10
192.168.1.10

Trong ví dụ trên, fping sẽ xuất ra những địa chỉ kết nối thành công.

Ngoài ra, chúng ta còn có thể sử dụng tùy chọn -Q, tùy chọn này có chức năng giống -q, nhưng sẽ hiển thị kết quả tổng kết cuối cùng mỗi n giây, sử dụng trong chế độ lặp hoặc đếm (-l, -c hoặc -C).

$ fping -Q n addr

Ví dụ:

fping -l -Q 2 192.168.1.10
[11:49:25]
192.168.1.10 : xmt/rcv/%loss = 2/0/100%
[11:49:27]
192.168.1.10 : xmt/rcv/%loss = 2/0/100%
$ fping -c 100 -Q 2 192.168.1.10
[11:50:52]
192.168.1.10 : xmt/rcv/%loss = 2/0/100%
[11:50:54]
192.168.1.10 : xmt/rcv/%loss = 2/0/100%

7. Định dạng kết quả trả về

fping cung cấp cho chúng ta nhiều tùy chọn để có thể định dạng lại kết quả trả về này theo định dạng mà chúng ta mong muốn. Điều này đặc biệt rất có ý nghĩa khi chúng ta sử dụng fping trong các kịch bản Bash shell, khi đó ta sẽ tiết kiệm được nhiều thời gian trong việc xử lý kết quả trả về của fping.

Để hiển thị ra các địa chỉ còn sống (ping thành công), chúng ta sử dụng tùy chọn -a như sau:

$ fping google.com.vn
google.com.vn is alive
$ fping -a google.com.vn
google.com.vn

Để hiển thị ra các địa chỉ mất kết nối (unreachable), chúng ta sử dụng tùy chọn -u như sau:

$ fping 192.168.1.10
ICMP Host Unreachable from 192.168.1.104 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.104 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.104 for ICMP Echo sent to 192.168.1.10
192.168.1.10 is unreachable
$ fping -u -q 192.168.1.10
192.168.1.10

Khi chúng ta ping địa chỉ theo tên DNS và muốn kết quả trả về dưới dạng IP, sử dụng tùy chọn -A như sau:

$ fping google.com.vn
google.com.vn is alive.
$ fping -A google.com.vn 
173.194.117.79 is alive

Ngược lại, khi chúng ta muốn kết quả xuất ra dưới dạng tên theo DNS, sử dụng tùy chọn -d của fping. Khi đó fping  sẽ sử dụng DNS để tra cứu địa chỉ của gói tin ping trả về. Điều này cho phép chúng ta cung cấp cho fping 1 danh sách IP như đầu vào và in ra các tên máy tính như đầu ra.

$ fping -d 173.194.117.69
sin01s16-in-f5.1e100.net is alive

Với tùy chọn -D, fping sẽ thêm tem thời gian trước các dòng kết quả được phát sinh trong chế độ lặp hoặc đếm (-l, -c hoặc -C).

fping -C 4 -D google.com.vn
[1422633979.685383] google.com.vn : [1], 84 bytes, 21.3 ms (21.3 avg, 50% loss)
[1422633980.697740] google.com.vn : [2], 84 bytes, 32.2 ms (26.8 avg, 33% loss)
[1422633981.702084] google.com.vn : [3], 84 bytes, 34.5 ms (29.3 avg, 25% loss)
google.com.vn : - 21.32 32.28 34.52

Để hiển thị Round Trip Time (RTT) của các gói tin, sử dụng tùy chọn -e như bên dưới:

$ fping -e google.com.vn
google.com.vn is alive (22.0 ms)

8. Giới hạn số gói tin gửi đi

Để quy định số gói tin mà fping sẽ gửi đi, sử dụng các tùy chọn sau:

  • -c n => Thống kê  cho mỗi mục tiêu được hiển thị khi tất cả yêu cầu đã được gửi (hoặc khi bị gián đoạn).
$ fping -c 2 google.com.vn
google.com.vn : [0], 84 bytes, 20.8 ms (20.8 avg, 0% loss)
google.com.vn : [1], 84 bytes, 21.0 ms (20.9 avg, 0% loss)

google.com.vn : xmt/rcv/%loss = 2/2/0%, min/avg/max = 20.8/20.9/21.0

hoặc

$ fping -c 2 google.com google.com.vn
google.com.vn : [0], 84 bytes, 20.8 ms (20.8 avg, 0% loss)
google.com : [0], 84 bytes, 75.0 ms (75.0 avg, 0% loss)
google.com.vn : [1], 84 bytes, 21.0 ms (20.9 avg, 0% loss)
google.com : [1], 84 bytes, 68.3 ms (71.6 avg, 0% loss)
google.com : xmt/rcv/%loss = 2/2/0%, min/avg/max = 68.3/71.6/75.0

google.com.vn : xmt/rcv/%loss = 2/2/0%, min/avg/max = 20.8/20.9/21.0
  • -C n =>  Thống kê cho mỗi mục tiêu được hiển thị theo định dạng thời gian phản hồi.
$ fping -C 2 google.com. google.com.vn
google.com : [0], 84 bytes, 67.1 ms (67.1 avg, 0% loss)
google.com.vn : [0], 84 bytes, 66.9 ms (66.9 avg, 0% loss)
google.com : [1], 84 bytes, 74.3 ms (70.7 avg, 0% loss)
google.com.vn : [1], 84 bytes, 75.2 ms (71.1 avg, 0% loss)

google.com : 67.18 74.39
google.com.vn : 66.98 75.22

hoặc

$ fping -C 5 -q google.com.vn
google.com.vn : 27.45 29.97 33.11 - 32.63

Dấu – chỉ ra rằng không nhận được phản hồi ở yêu cầu thứ 4.

 9. Đọc danh sách địa chỉ từ tập tin

Để ping 1 danh sách các địa chỉ từ 1 tập tin, sử dụng tùy chọn -f như sau:

# fping -f list_file

Lưu ý: Tùy chọn này chỉ có thể sử dụng bởi tài khoản root. Các tài khoản thường có thể truyền danh sách IP từ 1 tập tin bằng cách:

$ fping < target_file

 10. Ping theo lớp mạng

Để ping các địa chỉ IP trong 1 lớp mạng, chúng ta sử dụng các tùy chọn sau

  • -g addr/mask => Tạo ra 1 danh sách mục tiêu từ 1 lớp mạng được cung cấp.
$ fping -g 192.168.1.0/24
  • -g first_ip last_ip => Tạo ra 1 danh sách mục tiêu từ 1 IP bắt đầu và 1 IP kết thúc.
$ fping -g 192.168.1.1 192.168.1.254

Lưu ý:

Nếu 1 lớp mạng với netmask được cung cấp, địa chỉ mạng (192.168.1.0) và địa chỉ broadcast (192.168.1.255) sẽ được bỏ qua.

11. Thiết lập số lần thử lại và thời gian chờ

Để thiết lập số lần thử lại của fping, sử dụng tùy chọn -r như sau:

$ fping -r n addr

Trong đó, n là số lần thử lại (mặc định là 3). Đây là số lần cố gắng để ping 1 địa chỉ, không bao gồm lần thử đầu tiên.

Với tùy chọn -i, chúng ta có thể thiết lập thời gian tối thiểu (tính theo mili giây) cho việc gửi 1 gói tin ping đến 1 mục tiêu bất kỳ, giá trị mặc định là 25.

$ fping -i n addr

Trong chế độ lặp hoặc đếm (-l, -c hoặc -C), để thiết lập thời gian theo mili giây mà fping chờ giữa các gói tin kế tiếp đến 1 mục tiêu cụ thể, sử dụng tùy chọn -p. Giá trị mặc định là 1000.

$ fping -p n addr

Ở chế độ mặc định, fping gửi nhiều gói tin đến 1 địa chỉ trước khi dừng việc gửi, chờ phản hồi lâu hơn trên mỗi yêu cầu tiếp theo, tức là thời gian chờ giữa các gói tin không bằng nhau, những gói tin về sau sẽ có thời gian chờ lâu hơn những gói tin đầu. Thông số này là giá trị mà thời gian chờ sẽ được nhân với nó trên mỗi yêu cầu kế tiếp; nó phải được nhập dưới dạng số thực dấu chấm động (x.y). Mặc định là 1.5.

$ fping -B x.y addr

Để thiết lập thời gian chờ ban đầu (mặc định là 500), sử dụng tùy chọn -t. Trong chế động mặc định, đây là lượng thời gian mà fping chờ 1 phản hồi cho yêu cầu đầu tiên của nó, thời gian chờ tiếp theo sẽ được nhân với hệ số được khai báo với tùy chọn -B ở trên.

$ fping -t n addr

12. Các tùy chọn khác

Ngoài ra, fping còn cung cấp các tùy chọn khác như:

  • -m => Gửi các gói tin ping đến nhiều giao tiếp mạng của mỗi mục tiêu.
  • -h => In ra hướng dẫn của fping
  • -v => In ra thông tin phiên bản của fping.
  • -l => Lặp việc gửi các gói tin đến từng mục tiêu vô thời hạn. Có thể bị gián đoạn bởi Ctrl – C; thống kê về các phản hồi cho từng mục tiêu được hiển thị sau đó.
  • -s => In ra thống kê tích lũy đến khi thoát.

Ví dụ:

$ fping -s google.com.vn 
google.com.vn is alive
1 targets
1 alive
0 unreachable
0 unknown addresses

0 timeouts (waiting for response)
1 ICMP Echos sent
1 ICMP Echo Replies received
0 other ICMP received

20.7 ms (min round trip time)
20.7 ms (avg round trip time)
20.7 ms (max round trip time)
0.021 sec (elapsed real time)

13. Giới hạn

Nếu vài tùy chọn cụ thể được dùng (ví dụ như giá trị thấp cho -i và -t, và giá trị cao cho -r) có thể gây ảnh hưởng đến mạng. Chương trình này phải được cài đặt bằng tài khoản root để mở 1 socket, hoặc phải được chạy bởi root. Những tài khoản người dùng thường không thể khai báo các giá trị sau:

  • -i n => n < 10 giây
  • -r n => n > 20
  • -t n => n < 250 mili giây

Chúng ta kết thúc bài tìm hiểu về lệnh fping trong Linux tại đây. Chúc các bạn thành công!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.