Vấn đề sau đây chỉ là một phần của giải pháp lớn hơn mà tôi có vấn đề. Tất cả các yếu tố khác dường như hoạt động cho đến nay, vì vậy tôi sẽ cố gắng mô tả phần rất nhỏ mà tôi gặp vấn đề.
Tôi đã có một máy linux, với tun0 (giao diện đường hầm) và eth0 (phù thủy là cổng mặc định của tôi vào internet).
Mục tiêu: mục tiêu của tôi là nhận các gói đến từ tun0 và chuyển tiếp chúng đến cổng mặc định. Vì vậy, trường hợp NAT thực sự khá đơn giản, nơi tôi muốn "chia sẻ" internet với tun0 giả mạo giao diện vật lý.
Tun đã được tạo bằng cách sử dụng
sudo openvpn --mktun --dev tun0 --user USER
sudo ip addr add 10.2.0.1/24 dev tun0
sudo ip link set tun0 up
Vì vậy, tôi có nó và chạy, tôi có thể ping nó, v.v. Hơn nữa, tôi có ứng dụng C ++, gắn với thiết bị TUN này, có thể đọc và ghi vào nó. (fti: đây là hướng dẫn tôi đã theo dõi: http://backreference.org/2010/03/26/tuntap-interface-tutorial/ )
Tôi đã bỏ một số yêu cầu ICMP (ping) chính xác được thực hiện đến 8.8.8.8 vào mảng byte trong C ++. Bây giờ, sử dụng chương trình của tôi, tôi viết nó cho thiết bị tun0. Yêu cầu ICMP có
- nguồn (10.2.0.10) - vì vậy kernel biết tuyến đường trở lại (cùng mạng con)
- đích (8.8.8.8) - DNS của Google
- tổng kiểm tra chính xác, v.v. (trong Wireshark / TShark, nó xuất hiện chính xác trên tun0)
Sau đó, tôi có các tuyến đường sau:
iptables -F # flush
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface tun0 -j ACCEPT
Và ở đây tôi bị kẹt :( Gói không được chuyển tiếp đến gw mặc định (tshark chỉ nhìn thấy nó trên tun0 khi nhận được mà tôi đoán là chính xác)
Cái gì còn thiếu? Có thể một số cách tiếp cận khác (nhưng nó phải được thực hiện bằng cách sử dụng thiết bị tun, và tôi phải có khả năng r / w với nó). Thông tin bổ sung:
- chuyển tiếp được bật (/ Proc / sys / net / ipv4 / ip_forward)
- Có thể truy cập 8.8.8.8 thông qua eth0 (từ địa phương)
- cổng mặc định là chính xác (từ ISP qua eth0)
- Tôi đã thử tắt rp_tables (echo 0> / Proc / sys / net / ipv4 / conf / eth5 / rp_filter)
- và nhiều người khác ...
Cảm ơn trước cho bất kỳ gợi ý!