Làm cách nào để định tuyến lưu lượng truy cập từ VirtualBox VM chỉ qua VPN?


10

Tôi đã có VirtualBox VM (cả máy chủ và khách Ubuntu Maverick). Nhà cung cấp VPN của tôi sử dụng OpenVPN để thiết lập TUN. Tôi muốn thiết lập mọi thứ để lưu lượng truy cập từ VM chỉ đi qua VPN và sẽ bị hủy nếu VPN bị hỏng (điều đó đã xảy ra). Gợi ý? Iptables-fu của tôi hơi yếu

Những gì tôi đã thử: sử dụng "mạng chỉ lưu trữ" của VirtualBox, cung cấp cho bạn giao diện vòng lặp vboxnet0 trên máy chủ cho khách, nhưng không thể hiểu đúng về iptables / tuyến. Tôi muốn tránh NAT trên VM, vì tôi đã tăng gấp đôi NAT (ISP & bộ định tuyến gia đình) và một cấp độ nữa sẽ khiến đầu tôi bật lên.

Các khả năng khác: chuyển sang TAP (làm thế nào?) Và bắc cầu sang VM. Tạo VPN bên trong VM và lọc tất cả lưu lượng eth0 ngoại trừ VPN kết nối với iptables (nhưng xem bên dưới)

Điểm thưởng: nếu bạn có thể cho tôi biết cách sử dụng các điểm thoát VPN khác nhau trên máy chủ và khách mà không cần lưu lượng truy cập hai lần từ khách thông qua VPN của máy chủ.

Câu trả lời:


4

Sẽ có những giải pháp khác, nhưng đây là những gì tôi nghĩ:

  1. Thiết lập VM ở chế độ cầu. Điều này sẽ cung cấp cho máy ảo của bạn một địa chỉ IP trong cùng mạng với máy chủ của bạn.
  2. Thiết lập VPN trên máy chủ, giả sử đó là tun0.
  3. Cho phép định tuyến trên máy chủ echo 1 > /proc/sys/net/ipv4/ip_forward
  4. Thiết lập VM với địa chỉ IP máy chủ làm gw mặc định.

Tại thời điểm này, máy chủ lưu trữ có kết nối VPN và VM sẽ định tuyến tất cả lưu lượng truy cập đến máy chủ. Tất cả những gì còn lại phải làm là hạn chế máy chủ lưu trữ để nó không cho phép khách định tuyến bất kỳ lưu lượng truy cập nào sẽ không đi qua thiết bị tun0. Bạn có thể làm điều đó với một bộ quy tắc iptables giống như thế này:

iptables -P FORWARD DROP
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

Điều đó nên làm việc. Quy tắc đầu tiên đặt chính sách mặc định cho các gói DROP trong chuỗi FORWARD. Điều này chỉ ảnh hưởng đến các gói mà máy chủ của bạn sẽ định tuyến chứ không phải các gói đến máy chủ (INPUT) hoặc từ máy chủ (OUTPUT). Quy tắc thứ hai cho phép bất kỳ lưu lượng truy cập nào đang định tuyến tun0 - bạn có thể thắt chặt nó với - nguồn nếu bạn muốn. Và quy tắc cuối cùng sẽ cho phép trả lời trở lại từ tun0 để định tuyến trở lại VM.

VPN của bạn có mong đợi tất cả các gói trên giao diện điều chỉnh là từ một IP không? Nếu vậy, bạn cũng sẽ muốn thêm quy tắc NAT. Có lẽ một cái gì đó như:

iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source {your host tun0 ip}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.