Sử dụng VirtualBox trên Ubuntu, tôi muốn kết nối hai máy ảo Linux (debian 9) với nhau, để máy đầu tiên hoạt động như một bộ định tuyến cho máy thứ hai (VM2), có lưu lượng truy cập được chuyển hoàn toàn qua máy ảo thứ nhất (VM1). VM1 (gateway) được kết nối với dịch vụ VPN và do đó tất cả lưu lượng truy cập từ VM2 được kết nối với VPN.
Tôi đã quản lý để VM2 ping thành công các IP bên ngoài, chẳng hạn như 8.8.8.8. Nhưng tất cả các mạng khác đều thất bại. Tôi nghĩ vấn đề là độ phân giải DNS, vì một số lý do mà tôi không biết là không được giải quyết bởi VM1.
Đây là những gì tôi đã làm cho đến nay:
Trên VirtualBox, VM1 được kết nối với giao diện NAT và giao diện thứ hai, là mạng nội bộ có tên "testvpn". VM2 chỉ được kết nối với mạng nội bộ này, không kết nối với NAT.
VM1 có cấu hình / etc / network / giao diện sau:
auto lo
iface lo inet loopback
allow-hotplug enp0s3
iface enp0s3 inet dhcp
allow-hotplug enp0s8
iface enp0s8 inet static
address 10.152.152.10
netmask 255.255.192.0
VM2 có cấu hình / etc / network / giao diện sau:
auto lo
iface lo inet loopback
allow-hotplug enp0s3
iface enp0s3 inet static
address 10.152.152.15
gateway 10.152.152.10
netmask 255.255.255.0
dns-nameservers 10.152.152.10
/Etc/resolv.conf của VM2 trỏ tới VM1:
nameserver 10.152.152.10
Với cấu hình đơn giản này, VM2 có thể ping VM1, nhưng không có quyền truy cập vào internet bên ngoài. Để làm điều này, tôi phải cho phép chuyển tiếp ip và định cấu hình iptables trên VM1:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o enp0s8 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp0s8 -o tun0 -j ACCEPT
Lưu ý rằng tôi sử dụng trên mục đích tun0 cho giao diện mạng VPN, nhưng kết quả hoàn toàn giống với enp0s3 thay vì tun0 mà không kích hoạt đường hầm VPN. Bây giờ tôi có thể ping địa chỉ bên ngoài trên VM2, nhưng tất cả các kết nối mạng khác đều thất bại:
$ curl google.com
curl: (6) Could not resolve host: google.com
Sau khi đọc trực tuyến, tôi đã cố gắng thêm các quy tắc iptables được cho là liên quan đến DNS trên VM cổng đầu tiên:
iptables -t nat -A PREROUTING -i enp0s8 -p udp --dport 53 -j REDIRECT
iptables -t nat -A PREROUTING -i enp0s8 -p tcp --dport 53 -j REDIRECT
Nó không hoạt động. Lưu ý rằng mạng hoạt động tốt trên VM1, có hoặc không có VPN.
Tôi không thử nghiệm nhiều với iptables và tôi thực sự không biết phải làm gì tiếp theo. Tôi đã thử tìm kiếm các giải pháp trực tuyến hàng giờ nhưng không thể tìm ra giải pháp. Tôi không muốn sử dụng các giải pháp dhcp / dnsmasq vì tôi khá chắc chắn rằng iptables là đủ.
T