Một sai lầm phổ biến khi debug Modbus TCP là chỉ nhìn vào cấu hình Modbus (IP, port, Unit ID) mà bỏ qua tầng mạng bên dưới nó. Modbus TCP chạy trên nền TCP/IP tiêu chuẩn, nghĩa là trước khi khung Modbus đầu tiên được gửi đi, kết nối phải vượt qua toàn bộ các lớp hạ tầng mạng: định tuyến, firewall, NAT, và cả tầng liên kết dữ liệu (switch). Lỗi ở bất kỳ lớp nào trong số này đều biểu hiện giống nhau ở phía người dùng cuối — “Modbus timeout” — nhưng nguyên nhân và cách sửa hoàn toàn khác nhau.

Firewall chặn port 502
Ping dùng giao thức ICMP, hoàn toàn tách biệt với TCP port 502 mà Modbus TCP sử dụng — một thiết bị hoặc firewall hoàn toàn có thể cho phép ICMP đi qua trong khi chặn kết nối TCP tới port 502 theo policy bảo mật. Đây là lý do “ping thành công” không chứng minh được gì về khả năng kết nối Modbus, và là bước debug sai phổ biến nhất. Cách kiểm tra đúng là dùng công cụ test port TCP cụ thể (telnet tới địa chỉ:502, hoặc công cụ port scan), nếu kết nối TCP tới port 502 bị từ chối hoặc treo, nguyên nhân gần như chắc chắn là firewall/ACL chặn port này ở đâu đó trên đường đi.
Gateway hai LAN định tuyến sai VLAN
VLAN phân chia một hạ tầng switch vật lý thành nhiều mạng logic tách biệt — hai thiết bị ở hai VLAN khác nhau không thể thấy nhau ở tầng 2 dù cắm chung switch, trừ khi có thiết bị định tuyến nối hai VLAN đó. Khi Gateway có hai cổng LAN (một cổng nối mạng OT, một cổng nối mạng IT/SCADA phía trên), cấu hình sai VLAN tag trên một trong hai cổng khiến gói tin Modbus TCP không bao giờ tới được đích dù về mặt vật lý dây vẫn nối đúng — dấu hiệu điển hình là ping cũng không qua được (khác với lỗi firewall ở trên, nơi ping vẫn qua nhưng port bị chặn).
NAT giữa hai mạng làm sai địa chỉ
NAT (Network Address Translation) dịch địa chỉ IP giữa hai vùng mạng — phổ biến khi mạng OT dùng dải IP riêng (private) và cần truy cập từ mạng IT hoặc Internet qua một thiết bị NAT/router trung gian. Vấn đề với Modbus TCP là địa chỉ IP cấu hình trên phần mềm SCADA phải là địa chỉ IP nhìn thấy được từ phía nó (địa chỉ sau NAT), không phải địa chỉ thật của thiết bị Modbus trong mạng OT — cấu hình nhầm địa chỉ IP nội bộ thay vì địa chỉ đã NAT là lỗi rất phổ biến khi hai mạng được thiết lập bởi hai đội kỹ thuật khác nhau (đội OT và đội IT) không trao đổi rõ ràng về sơ đồ NAT.
Trùng địa chỉ IP tĩnh trên mạng OT
Trên mạng Ethernet, khi hai thiết bị cùng dùng một địa chỉ IP tĩnh, giao thức ARP (dùng để ánh xạ IP sang địa chỉ MAC) có thể trả lời không nhất quán — có lúc gói tin đi đến đúng thiết bị, có lúc đi đến thiết bị trùng IP kia, tùy vào thiết bị nào trả lời ARP request gần nhất. Kết quả là kết nối Modbus TCP “lúc được lúc không” một cách khó dự đoán, khác hẳn với lỗi firewall hay VLAN vốn gây lỗi hoàn toàn nhất quán. Kiểm tra bảng ARP trên switch hoặc dùng lệnh arping để phát hiện trùng IP là bước chẩn đoán nhanh khi gặp lỗi kết nối “ngẫu nhiên” kiểu này.
Switch không hỗ trợ IGMP snooping ảnh hưởng multicast SCADA
Nhiều hệ thống SCADA hiện đại dùng multicast (một nguồn gửi tới nhiều đích cùng lúc) bên cạnh giao tiếp Modbus TCP unicast thông thường. Nếu switch không hỗ trợ IGMP snooping (cơ chế giúp switch chỉ chuyển tiếp lưu lượng multicast tới đúng các cổng đã đăng ký, thay vì tràn broadcast tới toàn bộ mạng), lưu lượng multicast từ SCADA sẽ tràn ra toàn bộ switch, chiếm băng thông và có thể gây nghẽ n khiến các kết nối Modbus TCP khác trên cùng switch bị delay hoặc timeout gián tiếp — đây là nguyên nhân dễ bị bỏ qua nhất vì bản thân Modbus TCP không dùng multicast, lỗi chỉ là hệ quả gián tiếp từ lưu lượng khác trên cùng hạ tầng.
Cách phân biệt nhanh 5 loại lỗi mạng này
- Ping không qua – nghi VLAN/routing trước tiên.
- Ping qua nhưng port 502 timeout – nghi firewall/ACL.
- Kết nối tới sai địa chỉ hoặc không thấy thiết bị từ mạng ngoài – nghi cấu hình NAT.
- Kết nối chập chờn ngẫu nhiên không theo quy luật thời gian cố định – nghi trùng IP, kiểm tra bảng ARP.
- Mạng chậm/nghẽn tổng thể ảnh hưởng nhiều kết nối cùng lúc kèm hệ thống có dùng multicast – nghi IGMP snooping.
Việc tách đúng nhóm lỗi trước khi hành động giúp tránh việc đổi cấu hình Modbus (vốn không phải nguyên nhân) trong khi vấn đề thực sự nằm ở hạ tầng mạng.
Gateway PROTO có tính năng log kết nối TCP riêng biệt với log Modbus (ghi rõ TCP handshake thành công hay thất bại trước khi tới bước gửi khung Modbus), giúp phân biệt nhanh lỗi mạng và lỗi ứng dụng ngay trên giao diện quản lý mà không cần công cụ mạng bên ngoài.
