Hệ thống Linux cung cấp rất nhiều lệnh hữu ích để xem cấu hình và kết nối mạng. Một số ví dụ bao gồm ifquery, ifup, ifdown và ifconfig.Có rất nhiều lệnh có sẵn trên Linux để kiểm tra các thiết lập và kết nối mạng. Hôm nay, chúng ta sẽ xem qua một số lệnh rất hữu ích và chúng hoạt động như thế nào.
1. Lệnh ifquery
Một lệnh rất hữu ích đó là lệnh ifquery. Lệnh này sẽ cung cấp cho bạn một danh sách nhanh các giao diện mạng. Tuy nhiên, bạn có thể chỉ thấy đại loại như thế này chỉ hiển thị port loopback:
$ ifquery --list
lo
Nếu bạn chỉ thấy kết quả hiển thị màn hình như trên, tệp /etc/network/interface của bạn không có thông tin về các port mạng, ngoại trừ port loopback. Bạn có thể thêm hai dòng cuối cùng trong ví dụ bên dưới - giả sử DHCP được sử dụng để gán địa chỉ.
Nếu đúng như vậy, tệp / etc / network / interface của bạn không có thông tin về các giao diện mạng ngoại trừ
giao diện loopback. Bạn có thể thêm hai dòng cuối cùng trong ví dụ bên dưới - giả sử DHCP được sử dụng để gán địa chỉ.
# interfaces(5) file used by ifup( and ifdown(
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
2. Lệnh ifup và ifdown
Các lệnh ifup và ifdown có thể được sử dụng để kích hoạt các kết nối mạng, hoặc tắt chúng với điều kiện là tệp này có dữ liệu mô tả cần thiết. Phải nhớ rằng, “if” có nghĩa là “interface”, không phải “if” nghĩa là “nếu”. lệnh ifconfig
Mặt khác, lệnh ifconfig hoàn toàn không đọc tệp /etc/network/interface. Nhưng nó vẫn cung cấp khá nhiều thông tin hữu ích về các giao diện mạng - dữ liệu cấu hình cùng với số lượng gói. Cho bạn biết “busy each interface”. Lệnh ifconfig cũng có thể được sử dụng để tắt và khởi động lại giao diện mạng (ví dụ: ifconfig eth0 down).
$ ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:1e:4f:c8:43:fc
inet addr:192.168.0.6 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::b44b:bdb6:2527:6ae9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:60474 errors:0 dropped:0 overruns:0 frame:0
TX packets:33463 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:43922053 (43.9 MB) TX bytes:4000460 (4.0 MB) Interrupt:21 Memory:fe9e0000-fea00000
Số gói RX và TX trong kết quả này rất thấp. Ngoài ra, không có lỗi hoặc xung đột gói nào đã được báo cáo. Lệnh thời gian hoạt động có thể sẽ xác nhận rằng hệ thống này chỉ mới được khởi động lại gần đây.
Địa chỉ (Broadcast - Bcast) và network mask (Mask) được hiển thị ở trên cho biết rằng hệ thống đang hoạt động trên mạng tương đương loại C (mặc định) nên địa chỉ cục bộ sẽ nằm trong khoảng từ 192.168.0.1 đến 192.168.0.254.
3. Lệnh netstat
Lệnh netstat cung cấp thông tin về định tuyến và kết nối mạng. Khi không có đối số, nó sẽ hiển thị danh sách các socket đang mở. Gần như tất cả sẽ liên quan đến các quy trình trên hệ thống cục bộ. Ví dụ, trong kết quả bị cắt ngắn bên dưới, chúng ta chỉ thấy hai kết nối ssh đến với hệ thống cục bộ đã được thiết lập.
$ netstat | head -4
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 64 dragonfly:ssh dragonfly:8812 ESTABLISHED
tcp 0 0 dragonfly:ssh dragonfly:33505 ESTABLISHED
4. Lệnh netstat -rn
Sử dụng -rn, netstat sẽ hiển thị bảng định tuyến của hệ thống.
$ netstat -rn
KerNel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Địa chỉ 192.168.0.1 là gateway cục bộ (Flags = UG). Mục 169.254.0.0 trong kết quả ở trên chỉ cần thiết nếu bạn đang sử dụng hoặc dự định sử dụng link-local. Bạn có thể không sử dụng các dòng liên quan (bằng cách sử dụng comment #) trong tệp /etc/network/if-up.d/avahi-autoipd như trong ví dụ dưới đây:
$ tail -12 /etc/network/if-up.d/avahi-autoipd #if [ -x /bin/ip ]; then
# # route already present?
# ip route show | grep -q ‘^169.254.0.0/16[[:space:]]’ && exit 0
#
#
#/bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#elif [ -x /sbin/route ]; then
# # route already present?
# /sbin/route -n | egrep -q “^169.254.0.0[[:space:]]” && exit 0
#
#
# /sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE #metric 1000
#fi
5. Lệnh netstat -a
Lệnh netstat -a sẽ hiển thị tất cả các kết nối mạng. Để chỉ lắng nghe và thiết lập các kết nối (thường hữu ích hơn nhiều), hãy sử dụng lệnh netstat -at để thay thế.
$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp 0 256 192.168.0.6:ssh 192.168.0.32:53550 ESTABLISHED
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN
6. Lệnh host
Lệnh máy chủ hoạt động giống nslookup bằng cách tra cứu địa chỉ IP của hệ thống từ xa, nhưng cũng cung cấp trình xử lý thư của hệ thống.
$ host world.std.com
world.std.com has address 192.74.137.5
world.std.com mail is handled by 10 smtp.theworld.com.
7. Lệnh nslookup
Nslookup cũng cung cấp thông tin về hệ thống (trong trường hợp này là hệ thống cục bộ) đang cung cấp dịch vụ tra cứu DNS.
$ nslookup world.std.com
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer: Name: world.std.com Address: 192.74.137.5
8. Lệnh dig
Lệnh dig cung cấp nhiều thông tin về cách kết nối với hệ thống từ xa - bao gồm máy chủ định danh mà chúng ta đang giao tiếp và thời gian trả lời truy vấn, thường được sử dụng để khắc phục sự cố.
$ dig world.std.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> world.std.com ;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28679
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION:
;world.std.com. IN A
;; ANSWER SECTION:
world.std.com. 78146 IN A 192.74.137.5
;; Query time: 37 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Oct 09 13:26:46 EDT 2017 ;; MSG SIZE rcvd: 58
9. Lệnh nmap
Lệnh nmap được sử dụng thường xuyên nhất để thăm dò các hệ thống từ xa, nhưng cũng có thể được sử dụng để báo cáo về các dịch vụ được cung cấp bởi hệ thống cục bộ. Trong kết quả bên dưới, chúng ta có thể thấy rằng ssh có sẵn để đăng nhập, smtp đang phục vụ email, trang web đang hoạt động và dịch vụ in ipp đang chạy.
$ nmap localhost
Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-09 15:01 EDT Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency). Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
Hệ thống Linux cung cấp rất nhiều lệnh hữu ích để kiểm tra cấu hình mạng và kết nối của chúng. Nếu bạn hết lệnh để khám phá, hãy nhớ rằng apropos network có thể hướng bạn đến nhiều hơn nữa.
1. Lệnh ifquery
Một lệnh rất hữu ích đó là lệnh ifquery. Lệnh này sẽ cung cấp cho bạn một danh sách nhanh các giao diện mạng. Tuy nhiên, bạn có thể chỉ thấy đại loại như thế này chỉ hiển thị port loopback:
$ ifquery --list
lo
Nếu bạn chỉ thấy kết quả hiển thị màn hình như trên, tệp /etc/network/interface của bạn không có thông tin về các port mạng, ngoại trừ port loopback. Bạn có thể thêm hai dòng cuối cùng trong ví dụ bên dưới - giả sử DHCP được sử dụng để gán địa chỉ.
Nếu đúng như vậy, tệp / etc / network / interface của bạn không có thông tin về các giao diện mạng ngoại trừ
giao diện loopback. Bạn có thể thêm hai dòng cuối cùng trong ví dụ bên dưới - giả sử DHCP được sử dụng để gán địa chỉ.
# interfaces(5) file used by ifup( and ifdown(
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
2. Lệnh ifup và ifdown
Các lệnh ifup và ifdown có thể được sử dụng để kích hoạt các kết nối mạng, hoặc tắt chúng với điều kiện là tệp này có dữ liệu mô tả cần thiết. Phải nhớ rằng, “if” có nghĩa là “interface”, không phải “if” nghĩa là “nếu”. lệnh ifconfig
Mặt khác, lệnh ifconfig hoàn toàn không đọc tệp /etc/network/interface. Nhưng nó vẫn cung cấp khá nhiều thông tin hữu ích về các giao diện mạng - dữ liệu cấu hình cùng với số lượng gói. Cho bạn biết “busy each interface”. Lệnh ifconfig cũng có thể được sử dụng để tắt và khởi động lại giao diện mạng (ví dụ: ifconfig eth0 down).
$ ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:1e:4f:c8:43:fc
inet addr:192.168.0.6 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::b44b:bdb6:2527:6ae9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:60474 errors:0 dropped:0 overruns:0 frame:0
TX packets:33463 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:43922053 (43.9 MB) TX bytes:4000460 (4.0 MB) Interrupt:21 Memory:fe9e0000-fea00000
Số gói RX và TX trong kết quả này rất thấp. Ngoài ra, không có lỗi hoặc xung đột gói nào đã được báo cáo. Lệnh thời gian hoạt động có thể sẽ xác nhận rằng hệ thống này chỉ mới được khởi động lại gần đây.
Địa chỉ (Broadcast - Bcast) và network mask (Mask) được hiển thị ở trên cho biết rằng hệ thống đang hoạt động trên mạng tương đương loại C (mặc định) nên địa chỉ cục bộ sẽ nằm trong khoảng từ 192.168.0.1 đến 192.168.0.254.
3. Lệnh netstat
Lệnh netstat cung cấp thông tin về định tuyến và kết nối mạng. Khi không có đối số, nó sẽ hiển thị danh sách các socket đang mở. Gần như tất cả sẽ liên quan đến các quy trình trên hệ thống cục bộ. Ví dụ, trong kết quả bị cắt ngắn bên dưới, chúng ta chỉ thấy hai kết nối ssh đến với hệ thống cục bộ đã được thiết lập.
$ netstat | head -4
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 64 dragonfly:ssh dragonfly:8812 ESTABLISHED
tcp 0 0 dragonfly:ssh dragonfly:33505 ESTABLISHED
4. Lệnh netstat -rn
Sử dụng -rn, netstat sẽ hiển thị bảng định tuyến của hệ thống.
$ netstat -rn
KerNel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Địa chỉ 192.168.0.1 là gateway cục bộ (Flags = UG). Mục 169.254.0.0 trong kết quả ở trên chỉ cần thiết nếu bạn đang sử dụng hoặc dự định sử dụng link-local. Bạn có thể không sử dụng các dòng liên quan (bằng cách sử dụng comment #) trong tệp /etc/network/if-up.d/avahi-autoipd như trong ví dụ dưới đây:
$ tail -12 /etc/network/if-up.d/avahi-autoipd #if [ -x /bin/ip ]; then
# # route already present?
# ip route show | grep -q ‘^169.254.0.0/16[[:space:]]’ && exit 0
#
#
#/bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#elif [ -x /sbin/route ]; then
# # route already present?
# /sbin/route -n | egrep -q “^169.254.0.0[[:space:]]” && exit 0
#
#
# /sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE #metric 1000
#fi
5. Lệnh netstat -a
Lệnh netstat -a sẽ hiển thị tất cả các kết nối mạng. Để chỉ lắng nghe và thiết lập các kết nối (thường hữu ích hơn nhiều), hãy sử dụng lệnh netstat -at để thay thế.
$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp 0 256 192.168.0.6:ssh 192.168.0.32:53550 ESTABLISHED
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN
6. Lệnh host
Lệnh máy chủ hoạt động giống nslookup bằng cách tra cứu địa chỉ IP của hệ thống từ xa, nhưng cũng cung cấp trình xử lý thư của hệ thống.
$ host world.std.com
world.std.com has address 192.74.137.5
world.std.com mail is handled by 10 smtp.theworld.com.
7. Lệnh nslookup
Nslookup cũng cung cấp thông tin về hệ thống (trong trường hợp này là hệ thống cục bộ) đang cung cấp dịch vụ tra cứu DNS.
$ nslookup world.std.com
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer: Name: world.std.com Address: 192.74.137.5
8. Lệnh dig
Lệnh dig cung cấp nhiều thông tin về cách kết nối với hệ thống từ xa - bao gồm máy chủ định danh mà chúng ta đang giao tiếp và thời gian trả lời truy vấn, thường được sử dụng để khắc phục sự cố.
$ dig world.std.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> world.std.com ;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28679
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION:
;world.std.com. IN A
;; ANSWER SECTION:
world.std.com. 78146 IN A 192.74.137.5
;; Query time: 37 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Oct 09 13:26:46 EDT 2017 ;; MSG SIZE rcvd: 58
9. Lệnh nmap
Lệnh nmap được sử dụng thường xuyên nhất để thăm dò các hệ thống từ xa, nhưng cũng có thể được sử dụng để báo cáo về các dịch vụ được cung cấp bởi hệ thống cục bộ. Trong kết quả bên dưới, chúng ta có thể thấy rằng ssh có sẵn để đăng nhập, smtp đang phục vụ email, trang web đang hoạt động và dịch vụ in ipp đang chạy.
$ nmap localhost
Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-09 15:01 EDT Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency). Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
Hệ thống Linux cung cấp rất nhiều lệnh hữu ích để kiểm tra cấu hình mạng và kết nối của chúng. Nếu bạn hết lệnh để khám phá, hãy nhớ rằng apropos network có thể hướng bạn đến nhiều hơn nữa.