Computer >> Máy Tính >  >> Phần mềm >> Máy ảo

Cách thiết lập mạng cầu nối trong KVM - Hướng dẫn

Được rồi, bây giờ bạn đã khá thành thạo với KVM. Chúng tôi đã có một số hướng dẫn, bao gồm giới thiệu cơ bản, thiết lập và sử dụng trung gian, cấu hình mạng và lưu trữ cũng như thiết lập KVM cùng với VirtualBox. Bước hợp lý tiếp theo là tìm hiểu về kết nối mạng để chúng tôi có thể cung cấp cho các máy ảo của mình các địa chỉ IP bên ngoài có thể sử dụng được, trong trường hợp chúng tôi cần chuyển tiếp cổng, v.v.

Những gì tôi sắp cho bạn thấy hôm nay sẽ hơi khác một chút so với những gì bạn đã thấy trong hầu hết các hướng dẫn ở những nơi khác. Cụ thể là, tôi sẽ cố gắng khắc phục cách tiếp cận vũ phu mà bạn có thể đã thấy trong các hướng dẫn khác. Tôi sẽ chỉ cho bạn hai phương pháp khả thi để đưa máy ảo của bạn ra thế giới bên ngoài. Một trong những phương pháp là hack, nhưng nó hoàn toàn thiên tài. Bạn chưa bao giờ nhìn thấy nó trước đây! Và chúng ta sẽ nói một chút về những hạn chế và các vấn đề có thể xảy ra.

Lưu ý:Hình ảnh được lấy từ Wikipedia, được cấp phép theo CC BY-SA 3.0; chỉ mục trêu ghẹo, cùng một điều khoản.

Chuẩn bị cơ bản

Hãy để chúng tôi bắt đầu với một kiểm tra thực tế. Kết nối mạng hơi xấu và yêu cầu một số hiểu biết về dòng lệnh Linux. Tuy nhiên, đôi khi bắc cầu là cần thiết. Nếu bạn muốn chạy một số loại máy chủ bên trong một máy ảo, bạn có thể muốn cung cấp cho nó một địa chỉ IP bên ngoài để các máy chủ khác có thể giao tiếp trực tiếp với nó.

Ví dụ:Bộ định tuyến của bạn cấp địa chỉ trong phạm vi 10.0.0.X. Máy chủ vật lý của bạn sử dụng 10.0.0.4, nhưng máy ảo của bạn chạy với 192.168.2.133. Nếu không có một số thay đổi đối với cách hệ thống diễn giải các gói được gửi qua lại, các máy khách trên mạng 10.0.0 sẽ không thể nói chuyện với các máy khách trên mạng 192.168.2.

Bạn có thể giải quyết vấn đề bằng cách sử dụng bắc cầu. Điều này sẽ cho phép các máy ảo của bạn kết nối với bộ định tuyến và nhận địa chỉ IP bên ngoài. Trong ngữ cảnh này, bên ngoài có nghĩa là bất kỳ máy chủ vật lý nào của bạn đang sử dụng, không nhất thiết là các địa chỉ không riêng tư.

Theo mặc định, KVM tạo cầu nối riêng của mình, 192.168.122.1. Thiết bị này hoạt động như một bộ định tuyến ảo cho các máy ảo của bạn và sẽ cấp cho chúng địa chỉ IP trong phạm vi này. Tuy nhiên, chúng tôi muốn máy của chúng tôi thuê địa chỉ bên ngoài. Trong hướng dẫn này, đây là phạm vi 192.168.2.

Hai giải pháp thay thế

Có hai cách chúng ta có thể thử làm điều này.

Một, chúng ta sẽ tạo ra một cây cầu. Hai thiết bị sẽ được bắc cầu. Thiết bị vật lý của chúng tôi là eth1 và thiết bị ảo có tên là vnet0. Sau khi chúng tôi chắc chắn rằng cây cầu của chúng tôi hoạt động bình thường, chúng tôi sẽ chuyển giao các thay đổi đối với tệp cấu hình mạng trên đĩa. Các máy ảo sẽ thuê địa chỉ IP của chúng từ bộ định tuyến. Điều này tương tự như những gì chúng tôi đã làm với VirtualBox. Đây là phương pháp chúng tôi sẽ đề cập ở đây.

Phương pháp thứ hai không được đảm bảo sẽ hoạt động, nhưng nó chỉ có thể. Nếu bộ điều hợp mạng của bạn hỗ trợ bắc cầu ngay lập tức, thì bạn có thể sử dụng nó trực tiếp. Thay đổi duy nhất bạn cần thực hiện là chỉ định một mạng con nhỏ gồm các địa chỉ cho cầu ảo của bạn trong KVM, mạng này không trùng lặp với các địa chỉ được sử dụng bởi các máy chủ vật lý trên mạng.

Hạn chế

Có rất nhiều điều có thể đi sai. Bộ định tuyến của bạn có thể không hỗ trợ bắc cầu. Giao diện mạng của bạn có thể không hỗ trợ bắc cầu. Nhóm hợp đồng thuê địa chỉ IP có sẵn của bạn có thể bị hạn chế. Bạn có thể có một tường lửa can thiệp. Cuối cùng, đặc biệt đối với Ubuntu, bạn có thể gặp sự cố và xung đột nếu Trình quản lý mạng đang quản lý giao diện bắc cầu.

Để đọc thêm, vui lòng xem tài liệu sau:

Thiết lập cầu trên Linux Foundation

Mạng KVM - Tài liệu Cộng đồng Ubuntu

Được rồi, bây giờ bạn biết những gì ở phía trước của chúng tôi. bắc cầu chắc chắn không phải là điều đơn giản. Có một số điều bạn cần phải tính đến. Đầu tiên, bộ điều hợp mạng của bạn có hỗ trợ bắc cầu không? Chẳng hạn, trên một số máy tính xách tay, Bộ điều hợp không dây không thực sự hỗ trợ chế độ làm việc này. Thứ hai, bạn có thấy thoải mái khi thay đổi cài đặt mạng không? Thứ ba, bạn đang cố gắng đạt được điều gì? Có lẽ NAT là đủ tốt cho bạn?

Các khái niệm mạng cơ bản

Mặc dù hộp kiểm tra của tôi là Ubuntu, nhưng tôi muốn hướng dẫn này là bất khả tri. Làm theo tài liệu cộng đồng Ubuntu KVM là một điều tốt, nhưng nó sẽ chỉ hoạt động cho các hệ thống dựa trên Debian. Do đó, hãy đi chệch hướng một chút và giới thiệu các khái niệm mạng có thể áp dụng cho cả hệ thống RedHat và SUSE.

Trên các hệ thống dựa trên Debian như Ubuntu, các cấu hình mạng cố định được giữ trong /etc/network/interfaces. Trên các hệ thống dựa trên RedHat cộng với SUSE bạn bè và gia đình, cấu hình mạng được lưu trữ trong các tệp riêng lẻ trong /etc/sysconfig/network, thường có tiền tố là ifcfg-ethX hoặc ifcfg-eth-MAC-address. Thay thế eth chung bằng tên giao diện tương ứng khi bạn nhìn thấy chúng trên hệ thống của mình bằng lệnh ifconfig.

Bạn cũng có thể tạo cầu nối bằng tiện ích brctl trên dòng lệnh mà không thực hiện thay đổi đối với tệp cấu hình của mình, nhưng cài đặt sẽ bị mất mỗi khi bạn khởi động lại dịch vụ mạng. Đây là cách được khuyến nghị để kiểm tra mọi thứ trước khi chỉnh sửa bất kỳ tệp hệ thống nào. Và đừng quên sao lưu cấu hình của bạn trước khi thay đổi. Để biết thêm chi tiết về thiết lập mạng, vui lòng xem bài viết về lệnh Linux của tôi.

Tạo cầu nối

Bây giờ, chúng tôi đã sẵn sàng để chơi. Tôi khuyên bạn nên bắt đầu bằng cách sử dụng các lệnh brctl, ifconfig và dhclient. Bạn sẽ thứ lỗi cho tôi nếu tôi không đi vào quá nhiều chi tiết về cách chúng được sử dụng. Nếu có nhu cầu phổ biến, sẽ có thêm phần hướng dẫn. Nói chung, trình tự như sau (với sudo hoặc quyền root) - giả sử br0, thiết bị vật lý và/hoặc thiết bị ảo eth0/1 và DHCP thuê từ bộ chuyển mạch hoặc bộ định tuyến:

ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
dhclient br0

Xin lưu ý rằng bộ điều hợp ảo có thể không khả dụng cho đến khi bạn tạo và khởi động máy ảo. Do đó, bạn chưa cần thêm bộ điều hợp ảo. KVM sẽ tự động làm điều đó cho bạn nếu bạn chọn kết nối mạng bắc cầu trong các tùy chọn nâng cao.

Nếu bạn thấy giao diện cầu nối của mình cho thuê địa chỉ bên ngoài từ máy chủ DHCP, thì bạn đang đi đúng hướng. Đối với người dùng gia đình, máy chủ DHCP sẽ là bộ định tuyến. Nếu bạn có kết nối Internet trực tiếp, điều này có thể không thực hiện được vì ISP của bạn có thể không cho phép nhiều hơn một địa chỉ IP cho mỗi người dùng.

Khi giao diện cầu nối xuất hiện, hãy đảm bảo chức năng mạng của bạn không thay đổi. Bạn có thể cần chỉnh sửa /etc/resolv.conf và có thể sửa bảng định tuyến.

Nếu điều này hoạt động, bạn có thể muốn thực hiện các thay đổi đối với tệp cấu hình mạng. Xin lưu ý rằng ví dụ của tôi là chung chung, rất giống với ví dụ được hiển thị trong tài liệu cộng đồng. Ví dụ:bạn có thể cần bật Giao thức cây kéo dài (STP) trên cầu nối của mình để xử lý đúng cách nhiều bước nhảy hoặc tuyến đường theo chu kỳ.

Cụ thể, trong trường hợp của chúng tôi, chúng tôi muốn chỉnh sửa /etc/network/interface và thêm br0 vào đó. Nếu bạn yêu cầu STP, vui lòng thay đổi bridge_stp off thành bridge_stp on. Bạn có thể xác minh những gì cây cầu của bạn làm bằng cách phát lệnh btctl show.

Cách thiết lập mạng cầu nối trong KVM - Hướng dẫn

Và một số niềm vui STP - nghe có vẻ nghịch ngợm, phải không.

Cách thiết lập mạng cầu nối trong KVM - Hướng dẫn

Tạo máy ảo

Chúng tôi đã học cách làm điều này trước đây, vì vậy nó không phải là một điều mới. Ở giai đoạn cuối cùng, bên dưới Tùy chọn nâng cao, hãy thay đổi việc gán địa chỉ mạng và đảm bảo rằng bộ điều hợp ảo có một địa chỉ MAC duy nhất không xung đột với bất kỳ địa chỉ nào khác.

Cách thiết lập mạng cầu nối trong KVM - Hướng dẫn

Cách thiết lập mạng cầu nối trong KVM - Hướng dẫn

Nếu may mắn, bạn thậm chí có thể không cần thiết lập cầu nối đặc biệt; bộ điều hợp mạng của bạn có thể hỗ trợ nó ngay lập tức và sau đó bạn sẽ ổn thôi! Nhưng bạn có thể sẽ không may mắn, vì vậy hãy mong đợi một số bàn phím lao động chăm chỉ.

Để đảm bảo mọi thứ hoạt động:

Cách thiết lập mạng cầu nối trong KVM - Hướng dẫn

Nếu bạn có thể ping nó, bạn có thể hack nó. Điều này gần giống với những gì chúng tôi đã làm với VirtualBox. Bây giờ, bạn có thể hiển thị các dịch vụ, chia sẻ dữ liệu và bất cứ thứ gì bạn cần. Vui thích.

Thiết lập thay thế (có thể không hoạt động, nhưng rất tuyệt)

Bạn có thể không được may mắn như vậy. Trình quản lý mạng có thể từ chối hợp tác và có thể có rất nhiều vấn đề khác với thiết lập của bạn. Để làm được điều này, bạn có thể muốn tạo một bộ điều hợp mạng ảo riêng biệt và định tuyến nó đến một thiết bị vật lý mà bạn tin rằng có hỗ trợ kết nối ngay lập tức. Lưu ý các địa chỉ IP xung đột.

Cuối cùng, nếu cách này phù hợp với bạn, thì bạn có thể thử một bản hack rất bẩn. Tạo một mạng ảo chia sẻ cùng một không gian /24 với mạng của bạn. Ví dụ:nếu bộ định tuyến của bạn sử dụng mạng 192.168.2.0, hãy tạo một mạng ảo bắt đầu từ 192.168.2.160 và chỉ cung cấp cho nó một phạm vi nhỏ, có thể là 16 địa chỉ. Đảm bảo rằng bộ định tuyến của bạn không bao giờ cung cấp các địa chỉ đó cho các máy khách khác trên mạng.

Đây là một ví dụ:Tôi đã tạo một mạng 192.168.2.160/28. Tôi không mong đợi bộ định tuyến của mình sẽ thuê một địa chỉ trong phạm vi đó, nhưng tôi có thể giới hạn việc gán DHCP của nó. Sau đó, định tuyến mạng ảo đến thiết bị vật lý, trong trường hợp này là Bộ điều hợp không dây eth1.

Và bây giờ, hãy tạo máy ảo của bạn và định tuyến đến eth1, giống như trên. Khi nó trực tuyến, hãy chú ý đến sự hợp tác đáng yêu. Máy chủ có địa chỉ .102, NIC ảo virbr1 có địa chỉ .161, trong khi máy ảo có địa chỉ .168.

Và đây là tín hiệu ping từ hộp Windows 7 vật lý trên cùng một mạng, với địa chỉ .103, ping bộ điều hợp ảo có địa chỉ .161 trên hộp Ubuntu Lucid, cả Không dây, cả hai đều được kết nối qua cùng một bộ định tuyến, cho thấy tính năng này dễ thương và thông minh như thế nào thiết lập thực sự là. Bây giờ, không phải lúc nào nó cũng hoạt động, nhưng khi nó hoạt động, đó là thiên tài.

Máy ảo hiện có

Đối với các máy ảo đã tồn tại, bạn cũng có thể chỉnh sửa cài đặt bằng cách thay đổi chỉ thị trong /etc/libvirt/. Mỗi máy ảo có một tệp cấu hình .xml riêng biệt. Bạn sẽ cần cấp nguồn cho các máy ảo của mình để mọi thay đổi có hiệu lực. Ví dụ:


<địa chỉ mac='00:11:22:33:44:55'/>

Kết luận

Thiết lập mạng cầu nối KVM không thực sự trực quan. Nó thân thiện như VirtualBox cách đây hai hoặc ba năm. Nhưng nó có thể quản lý được, mặc dù những hạn chế thực sự của bạn sẽ là sự hiểu biết và chức năng của cấu trúc liên kết mạng. Nó chắc chắn sẽ trở nên tốt hơn với thời gian.

Nếu bạn may mắn, bộ điều hợp mạng của bạn sẽ hỗ trợ bắc cầu ngay lập tức. Nếu không, bạn sẽ cần tạo một bộ điều hợp cầu nối và chỉ định các thiết bị mạng ảo và vật lý. Sau đó, giải quyết mọi sự cố tiềm ẩn với DNS, DHCP hoặc định tuyến. Cuối cùng, như một thủ đoạn bẩn thỉu, bạn có thể muốn thử lạm dụng phạm vi mạng của mình và tạo một mạng con trong một mạng con, đảm bảo rằng các địa chỉ IP không bao giờ trùng lặp, sau đó định tuyến bộ điều hợp ảo tới thiết bị thực của bạn.

Hướng dẫn này khá cơ bản nhưng có một bước ngoặt xảo quyệt, nhưng có thể có nhiều vấn đề chưa được khám phá. Nếu bạn có câu hỏi, đề xuất hoặc cần mẹo khắc phục các thiết lập mạng khó khăn trong KVM, hãy gửi thư cho tôi và tôi có thể soạn thảo phần tiếp theo về cách giải quyết các sự cố mới này.

Chúc mừng.