Bạn nên kiểm tra các quy tắc tường lửa của mình trên XMBC Pi. Lý do là vì, ngoài các hầm bảo mật, một số hộp được cấu hình sẵn ngăn chặn tất cả các kết nối có nguồn gốc từ bên ngoài mạng LAN của một người.
Lệnh để làm điều này là
iptables -t filter -L -n -v
và tương tự cho các bảng khác, nat và mangle . Nếu bạn có thể hành động theo các quy tắc này, thì đây là giải pháp đơn giản nhất.
Ngoài ra, nếu bộ định tuyến của bạn chạy phần mềm như dd-wrt, OpenWrt, Tomato, v.v., thì quy tắc sau trên bộ định tuyến
iptables -t nat -A POSTROUTING -o LAN_IFACE -s ! 192.168.0.0/24 -d 192.168.0.15 -p tcp --dport 22 -j MASQUERADE
Điều này giả định rằng mạng gia đình của bạn là 192.168.0.0/24, rằng Pi tính toán lại là 192.168.0.15 và giao diện LAN của bộ định tuyến được gọi là LAN_IFACE. Quy tắc chỉ đơn giản là viết lại nguồn gốc của gói đến từ chính bộ định tuyến (192.168.0.1 theo các giả định ở trên), do đó lừa XMBC để nghĩ rằng các kết nối được khởi tạo cục bộ, thay vì từ xa.
Cuối cùng, nếu bộ định tuyến của bạn không cho phép ở trên, nếu bạn có một số máy Linux khác (như, tôi đoán là Pi đầu tiên), bạn có thể
cổng chuyển tiếp các kết nối cho Pi2 tới một số cổng được đánh số cao của Pi1
chuyển hướng các gói này, sau khi giả mạo, đến Pi2 và cổng thích hợp của nó.
Lần này, trên mỗi cổng, bạn cần hai lệnh: chúng ta hãy xem xét lại ssh và chúng ta hãy nói rằng bộ định tuyến có các kết nối ssh chuyển tiếp cổng cho Pi2 đến cổng 51111 của Pi1 (192.168.0.10 giáp1111). Sau đó:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 51111 -j DNAT --to 192.168.0.15:22
iptables -A FORWARD -p tcp -d 192.168.0.15 --dport 22 -j ACCEPT
Chỉ cần đảm bảo rằng bạn đã cho phép chuyển tiếp trên Pi1,
sysctl net.ipv4.conf.eth0.forwarding=1