Các vấn đề với mạng Xen và định tuyến


2

Tôi đã dành những ngày Severn cuối cùng để cố gắng làm việc này nhưng hướng dẫn ngoài kia còn mơ hồ hoặc lỗi thời ở cuối bài này. Tôi đã thêm liên kết đến một số hướng dẫn mà tôi đã cố gắng làm theo. Tôi có một máy chuyên dụng tại hetzner và tôi muốn thiết lập ảo hóa Tôi có thể tạo ra vm không có vấn đề gì với mạng, trên mạng hetzner bạn không thể sử dụng một cây cầu đơn giản vì chúng định tuyến bất kỳ mạng con bổ sung nào đến máy chủ chính của bạn ip và sẽ không chấp nhận các gói nếu địa chỉ mac không khớp với máy chủ.

Tôi đã nhận ra rằng tôi cần sử dụng các mạng được định tuyến để định tuyến mạng con của mình thông qua kết nối eth0 của tôi. Tôi đã thử đi thử lại và tôi không bao giờ có thể làm cho mạng hoạt động. thường có thể ssh vào các máy chủ từ địa chỉ tôi đã gán nó từ dom0 Tôi đã chạy tcpdump và các gói ping đang đạt tới dom0 khi chúng không có nghĩa là một domU nhưng nó chỉ dừng ở đó và không truy cập vào domU.

Một giải pháp tôi đã thử là sử dụng virtualizor và lần đầu tiên tôi nghĩ rằng đó là lấy cấu hình của nó và sao chép nó mà không cần bảng điều khiển vì tôi không cần và trả tiền cho một thứ tôi không cần có vẻ vô nghĩa với tôi vì tôi là người dùng duy nhất của máy này và vm của nó.

Tôi đang sử dụng các hệ điều hành dựa trên debian và công cụ xl vì tôi chủ yếu sử dụng Debian Jessie, tôi muốn HĐH nằm trong phạm vi hỗ trợ hợp lý cho các cập nhật bảo mật, tôi cũng đã thử Ubuntu từ 14.04 trở lên. Tôi nghĩ vấn đề là thiết lập tập tin giao diện nhưng tôi không biết có gì sai.

bất kì sự trợ giúp nào đều được đánh giá cao

Định tuyến XEN VM dựa trên LVM
Mạng con Hetzner Xen IPv4 + Mạng con IPv6
Thiết lập XEN trên máy chủ chuyên dụng Hetzner
Thiết lập Ubuntu 12.04 và Xen trên Hetzner


Bạn có muốn VM của bạn có một địa chỉ IP công cộng không?
Daniel B

Có, tôi có một mạng con gồm các địa chỉ ipv4 công cộng
bobthemac

Đã được một thời gian kể từ khi tôi có một mạng con. Với các IP riêng lẻ, giờ đây bạn có thể sử dụng nút tự phục vụ trong giao diện người dùng Robot để gán địa chỉ MAC khác. Có lẽ bạn cũng có thể làm điều đó với các IP riêng lẻ từ mạng con?
Daniel B

Không vì lý do nào đó họ không cho phép bạn làm điều đó trên mạng con. Tôi đã kiểm tra với bộ phận hỗ trợ mặc dù tôi đã có các IP riêng lẻ trên hộp cũ của mình vài năm trước và bạn có thể vào MAC ảo
bobthemac

Câu trả lời:


2

Cấu hình mạng máy ảo cho chế độ định tuyến trên các máy chủ Hetzner, OVH và Online.net là phản trực giác vì bạn có các mạng giống như thế này:

Host IP:       192.168.0.2
Host Netmask:  255.255.255.0 (/24)
Host Gateway:  192.168.0.1

Guest IP:      10.0.0.1
Guest Netmask: 255.255.255.255 (/32)
Guest Gateway: 192.168.0.1
Guest MAC:     02:00:00:01:02:03

Ví dụ trên chỉ là một minh họa, không phải là địa chỉ IP mẫu mà bạn có thể mong đợi từ bất kỳ nhà cung cấp dịch vụ lưu trữ nào đã nói ở trên.

Huh? Gì? Làm thế nào bạn có thể có một mạng con chỉ một địa chỉ IP ( 10.0.0.1/32 )? Không có chỗ cho một cổng! Tại sao cổng trên một mạng con rất khác nhau ( 192.168.0.0/24 )?

Đây là những câu hỏi khiến Linux và Windows thất bại trong việc kiểm tra độ tỉnh của mạng, vì các mạng không có ý nghĩa gì với chúng. Họ nghĩ rằng cổng sẽ không thể truy cập được.

Hetzner, OVH và Online.net sử dụng một số mánh khóe mạng để làm cho cổng có thể truy cập được.

May mắn thay, trên cả Linux và Windows, bạn có thể ghi đè kiểm tra độ tỉnh táo và đặt cấu hình giao diện ở trên.


Phương pháp khả thi

Địa chỉ tĩnh

Đây là cách dễ nhất để làm. Cấu hình nhất bạn cần làm trên máy chủ là tạo một cây cầu.

Chủ nhà

Trên Debian / Ubuntu , nếu giao diện quản lý / Internet của bạn là eth0, bạn có thể chỉnh sửa /etc/network/interfaces để có một cây cầu br0 như vậy

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.2   # Host IP
        netmask 255.255.255.0 # Host Netmask
        gateway 192.168.0.1   # Host Gateway
        metric 0
        bridge_ports eth0
        bridge_stp on
        bridge_fd 0
        bridge_maxwait 0

Chạy sudo service networking restart để làm cho cấu hình mạng cầu nối có hiệu lực.

Trên RĂNG / CentOS , nếu giao diện quản lý / Internet của bạn là eth0, bạn có thể chỉnh sửa /etc/sysconfig/network-scripts/ifcfg-eth0 sử dụng cầu br0 như vậy

TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="no"
BRIDGE="br0"

Sau đó tạo một tệp mới /etc/sysconfig/network-scripts/ifcfg-br0 để cấu hình cầu:

DEVICE="br0"
BOOTPROTO="static"
IPADDR="192.168.0.2"    # Host IP
NETMASK="255.255.255.0" # Host Netmask
GATEWAY="192.168.0.1"   # Host Gateway
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Chạy sudo service network restart để làm cho cấu hình mạng cầu nối có hiệu lực.

Nếu bạn vẫn kết nối với máy chủ của mình, xin chúc mừng, bạn đã có một cây cầu hoạt động!

Hypervisor

Về tinh khiết Xen xl (libxenlight), đây là tất cả những gì bạn cần viết cho cấu hình giao diện ảo:

vif=[ 'mac=02:00:00:01:02:03,bridge=br0' ]

Lưu ý rằng 02:00:00:01:02:03 là địa chỉ MAC mà Hetzner, OVH hoặc Online.net đã cung cấp cho bạn cho mạng khách và br0 là cây cầu mà chúng ta vừa cấu hình ở trên.

Nếu bạn đang sử dụng sinh nhật , bên trong <devices> gắn thẻ, thêm giao diện này:

<interface type='bridge'>
  <mac address='02:00:00:01:02:03'/>
  <source bridge='br0'/>
</interface>

Khi bạn đã cấu hình giao diện ảo này với đúng địa chỉ MAC và cầu nối, hãy khởi động máy khách của bạn và kết nối với bảng điều khiển của nó ( xl console domU, virsh console domUhoặc đính kèm với phiên VNC của khách, nếu có).

Khách

Đây là phần xấu xí. Nó thay đổi tùy theo hệ điều hành về cách ghi đè kiểm tra độ vệ sinh mạng. Tôi sẽ che Debian / Ubuntu , RĂNG / CentOS Microsoft Windows NT .

Trên Debian / Ubuntu , nếu giao diện được gọi eth0, viết cái này vào /etc/network/interfaces:

auto eth0
iface eth0 inet static
        address 10.0.0.1    # Guest IP
        broadcast 10.0.0.1  # Guest IP
        netmask 255.255.255.255
        gateway 192.168.0.1 # Guest Gateway, a.k.a. Host Gateway
        post-up route add 192.168.0.1 dev eth0
        post-up route add default gw 192.168.0.1
        pre-down route del 192.168.0.1 dev eth0
        pre-down route del default gw 192.168.0.1

Các post-uppost-down Các lệnh iproute2 báo cho hệ điều hành dù sao cũng áp dụng cổng, mặc dù nó trên một mạng con khác.

Sau khi chạy sudo service networking restart, bây giờ bạn có thể tiếp cận khách của mình thông qua IP khách 10.0.0.1.

Trên RĂNG / CentOS , nếu giao diện được gọi eth0, viết cái này vào /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
USERCTL="no"
PEERDNS="yes"
TYPE="Ethernet"
NETMASK="255.255.255.255"
IPADDR="10.0.0.1"          # Guest IP
GATEWAY="192.168.0.1"      # Guest Gateway, a.k.a. Host Gateway
ARP="yes"
HWADDR="02:00:00:01:02:03" # Guest MAC

Sau đó, viết như sau vào /etc/sysconfig/network-scripts/route-eth0:

192.168.0.1 dev eth0
default via 192.168.0.1 dev eth0

Tệp này báo cho iproute2 dù sao cũng áp dụng cổng, mặc dù trên mạng con khác.

Sau khi chạy sudo service network restart, bây giờ bạn có thể tiếp cận khách của mình thông qua IP khách 10.0.0.1.

Trên Microsoft Windows NT , đi đến Kết nối mạng trong Bảng điều khiển, nhấp chuột phải vào giao diện và nhấp vào "Thuộc tính". Trong tab "Kết nối mạng", chọn "Giao thức Internet Phiên bản 4 (TCP / IPv4)", sau đó nhấp vào "Thuộc tính". Điền vào các trường như được hiển thị:

Internet Protocol Version 4 (TCP/IPv4) Properties

Khi bạn nhấp vào "OK", bạn sẽ nhận được cảnh báo này:

Microsoft TCP/IP: Warning - The default gateway is not on the same network segment (subnet) that is defined by the IP address and subnet mask. Do you want to save this configuration?

Nhấp vào "OK" để xác nhận rằng bạn muốn sử dụng cổng nào.

Sau vài giây, bạn sẽ có thể tiếp cận khách của mình thông qua IP khách 10.0.0.1.

Địa chỉ động DHCP

Thật không may, điều này là không thể. Không có máy chủ DHCP sẽ chỉ định bạn 10.0.0.1/32 và cho bạn biết cổng là 192.168.0.1, ngay cả khi bạn bằng cách nào đó đã chặn DHCPDISCOVER của khách. Và không có máy khách DHCP nào chấp nhận cấu hình kỳ quái này.

Bạn cần một mạng có cấu trúc đúng với một cổng bên trong mạng con của bạn để thiết lập DHCP. Cách duy nhất để làm điều này là tạo một mạng riêng ( 172.16.0.0/12 ) và thực hiện dịch địa chỉ mạng giữa địa chỉ IP riêng của khách của bạn ( 172.16.0.2 ) và địa chỉ IP công cộng của nó ( 10.0.0.1 ) qua cổng ( 172.16.0.1 ).

Mạng riêng và NAT

Mặc dù tôi đã xác minh tất cả các bước trên, tôi chưa bao giờ tạo thành công một-một / cơ bản NAT từ IP riêng sang IP công cộng. Một phần lý do là có rất nhiều việc phải làm để xây dựng mạng lưới.

Mạng của bạn có thể trông như thế này:

Guest Public IP:  10.0.0.1
Guest Private IP: 172.16.0.2
Guest Netmask:    255.240.0.0 (/12)
Guest Gateway:    172.16.0.1

Sau đó, máy chủ sẽ chuyển tiếp lưu lượng giữa IP Công cộng của Khách 10.0.0.1 và IP cá nhân của khách 172.16.0.2 qua Cổng khách 172.16.0.1.

OpenStack (mà hỗ trợ Xen qua libvirt ) có khả năng cung cấp thiết lập NAT này cũng như máy chủ DHCP mạng con riêng thông qua sự trừu tượng hóa mạng của nó, OpenStack neutron , nhưng tự thiết lập OpenStack khá rắc rối.

Tôi đã có thể nhận cài đặt OpenStack một nút và mạng riêng neutron chạy cho các phiên bản / khách / máy chủ Nova, nhưng tôi không thể tìm ra cách NAT các địa chỉ IP riêng ( 172.16.0.0/12 ) đến địa chỉ IP mạng bên ngoài ( 10.0.0.1/32, 10.0.0.2/32, v.v.) vì OpenStack không hỗ trợ cấu trúc mạng bất thường của Hetzner, OVH và Online.net cho các máy ảo bên ngoài. Đây vẫn là một vấn đề chưa được giải quyết.


Tài nguyên bổ sung


Tôi đánh giá cao câu trả lời và mặc dù tôi đã sử dụng một mạng con rất rõ ràng và họ không gán địa chỉ mac cho mạng con
bobthemac

@bobthemac: Tôi đoán thông tin của tôi về Hetzner hơi sai, nhưng bạn có thể sử dụng bất kỳ địa chỉ MAC tùy ý nào với Hetzner. Hetzner có một đề nghị khác nhau theo tài liệu riêng của họ . Họ cũng có một tập lệnh NAT trong bài viết đó, vì vậy điều đó có thể hữu ích nếu bạn chọn đi theo tuyến mạng riêng.
Deltik

Tôi đã thử sử dụng kịch bản của họ trước đây nhưng không có may mắn. Tôi cần kiểm tra xem tôi có thể có bao nhiêu ip đơn lẻ khi tôi phát hiện ra bạn có thể gán mac cho họ, có thể là cách đơn giản nhất để khiến nó hoạt động.
bobthemac
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.