tôi có một máy chủ chạy Ubuntu 20.04 LTS được kết nối thông qua một giao diện ethernet vật lý với internet. Nhà cung cấp của tôi đã chỉ định cho tôi một IP4 chính tĩnh (tôi sẽ sử dụng A.A.A.A ở đây cho IP này), vì vậy tệp cấu hình systemd-networkd của tôi trông như thế này trước đây (kế hoạch mạng bị vô hiệu hóa để hoạt động trực tiếp với systemd-networkd):
# /etc/systemd/network/20-enp7s0.network
[Trận đấu]
Tên=enp7s0
[Mạng]
LinkLocalAddressing=ipv6
Địa chỉ=A.A.A.A/32
Cổng=fe80::1
DNS=X.X.X.1
DNS=X.X.X.2
[Tuyến đường]
Đích=0.0.0.0/0
Cổng=Y.Y.Y.Y
CổngOnlink=true
Nhà cung cấp của tôi cung cấp thêm một địa chỉ IP bổ sung vào máy chủ của tôi, địa chỉ này được định tuyến đến cùng một giao diện với IP chính. Khi thêm IP thứ hai này vào giao diện của tôi, tôi có thể ping nó. Vì tôi đang sử dụng các bộ chứa systemd-nspawn nên tôi đã nghĩ đến việc sử dụng IP bổ sung này để cung cấp cho một trong các bộ chứa của mình một IP4 tĩnh độc quyền (sẽ sử dụng B.B.B.B tại đây). Điều này thật tuyệt khi ánh xạ trực tiếp các mục nhập DNS tới một vùng chứa trên máy chủ của tôi, trong khi tất cả các ứng dụng khác trên máy chủ vẫn sử dụng địa chỉ IP chính.
Vì vậy, tôi bắt đầu làm theo các hướng dẫn hữu ích từ Arch wiki trên systemd-nspawn và systemd-mạngd. Tôi đã định cấu hình một cây cầu và chuyển tất cả địa chỉ từ giao diện vật lý sang nó:
/etc/systemd/network/br0.netdev
[NetDev]
Tên=br0
Loại = cầu
MACAddress=xx:xx:xx:xx:xx:xx # giống như địa chỉ vật lý của tôi. giao diện
/etc/systemd/network/20-br0.network
[Trận đấu]
Tên=br0
[Mạng]
LinkLocalAddressing=ipv6
Địa chỉ=A.A.A.A/32
Cổng=fe80::1
DNS=X.X.X.1
DNS=X.X.X.2
[Tuyến đường]
Đích=0.0.0.0/0
Cổng=Y.Y.Y.Y
CổngOnlink=true
/etc/systemd/network/20-enp7s0.network
[Trận đấu]
Tên=enp7s0
[Mạng]
Cầu=br0
Chuyển tiếp IP4 được bật:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Tôi bắt đầu bộ chứa nspawn của mình với cấu hình sau:
/etc/systemd/nspawn/mycontainer.nspawn
[Mạng]
VirtualEthernet=có
Cầu=br0
Bên trong vùng chứa (Debian 11 Bullseye), tôi đã bật systemd-networkd và sử dụng cấu hình sau để kết nối mạng:
# /etc/systemd/network/80-container-host0.network
[Trận đấu]
Tên=máy chủ0
[Mạng]
Địa chỉ=B.B.B.B/32
DNS=X.X.X.1
DNS=X.X.X.2
[Tuyến đường]
Đích=0.0.0.0/0
Cổng=Y.Y.Y.Y
CổngOnlink=true
Đây là kết quả của cấu hình này. Trên máy chủ:
$ip một
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 trạng thái Nhóm LÊN mặc định qlen 1000
liên kết/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 trạng thái qdisc noqueue UP nhóm mặc định qlen 1000
liên kết/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet A.A.A.A/32 phạm vi toàn cầu br0
hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
6: vb-mycontainer@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 trạng thái Nhóm LÊN mặc định qlen 1000
liên kết/ether yy:yy:yy:yy:yy:yy brd ff:ff:ff:ff:ff:ff link-netnsid 0
$ networkctl status -a
â 1: lo [...]
â 2: enp7s0
Tệp liên kết: /usr/lib/systemd/network/99-default.link
Tệp mạng: /etc/systemd/network/20-enp7s0.network
Loại: ether
Trạng thái: nô lệ (đã định cấu hình)
Đường dẫn: pci-0000:07:00.0
Trình điều khiển: igb
Nhà cung cấp: Tập đoàn Intel
Model: Kết nối mạng Gigabit I210
Địa chỉ CTNH: xx:xx:xx:xx:xx:xx
MTU: 1500 (tối thiểu: 68, tối đa: 9216)
Độ dài hàng đợi (Tx/Rx): 8/8
Đàm phán tự động: có
Tốc độ: 1Gbps
Duplex: đầy đủ
Cảng: tp
Chính sách kích hoạt: lên
Cần thiết cho trực tuyến: có
â 3: br0
Tệp liên kết: /usr/lib/systemd/network/99-default.link
Tệp mạng: /etc/systemd/network/20-br0.network
Loại: cầu
Trạng thái: có thể định tuyến (được định cấu hình)
Tài xế: cầu
Địa chỉ CTNH: xx:xx:xx:xx:xx:xx
MTU: 1500 (tối thiểu: 68, tối đa: 65535)
Chuyển tiếp chậm trễ: 15 giây
Thời gian chào: 2s
Tuổi tối đa: 20s
Thời gian lão hóa: 5 phút
Ưu tiên: 32768
STP: không
Phiên bản IGMP đa hướng: 2
Độ dài hàng đợi (Tx/Rx): 1/1
Địa chỉ: A.A.A.A
Cổng: Y.Y.Y.Y (Mạng Juniper)
fe80::1 (Mạng Juniper)
DNS: X.X.X.1
X.X.X.2
Chính sách kích hoạt: lên
Cần thiết cho trực tuyến: có
â 6: vb-mycontainer
Tệp liên kết: /usr/lib/systemd/network/99-default.link
Tệp mạng: n/a
Loại: ether
Trạng thái: xuống cấp (không được quản lý)
Tài xế: viet
Địa chỉ HW: yy:yy:yy:yy:yy:yy
MTU: 1500 (tối thiểu: 68, tối đa: 65535)
Độ dài hàng đợi (Tx/Rx): 1/1
Đàm phán tự động: không
Tốc độ: 10Gbps
Duplex: đầy đủ
Cảng: tp
Địa chỉ: fe80::xxxx:xxxx:xxxx:xxxx
Chính sách kích hoạt: lên
Cần thiết cho trực tuyến: có
tuyến đường $ ip
mặc định qua Y.Y.Y.Y dev br0 proto tĩnh onlink
Và bên trong container của tôi:
# ip a
1: lo: [...]
2: host0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 trạng thái qdisc noqueue nhóm LÊN mặc định qlen 1000
liên kết/ether yy:yy:yy:yy:yy:yy brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet B.B.B.B/32 phạm vi máy chủ toàn cầu0
hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
liên kết phạm vi inet6 fe80::xxxx:xxxx:xxxx:xxxx/64
hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
# trạng thái mạngctl -a
â 1: lo [...]
â 2: máy chủ0
Tệp liên kết: không có
Tệp mạng: /etc/systemd/network/80-container-host0.network
Loại: ether
Trạng thái: có thể định tuyến (được định cấu hình)
Địa chỉ HW: zz:zz:zz:zz:zz:zz
MTU: 1500 (tối thiểu: 68, tối đa: 65535)
QDisc: noqueue
Chế độ tạo địa chỉ IPv6: eui64
Độ dài hàng đợi (Tx/Rx): 1/1
Đàm phán tự động: không
Tốc độ: 10Gbps
Duplex: đầy đủ
Cảng: tp
Địa chỉ: B.B.B.B
fe80::xxxx:xxxx:xxxx:xxxx
Cổng: Y.Y.Y.Y
DNS: X.X.X.1
X.X.X.2
DUID máy khách DHCP6: DUID-EN/Nhà cung cấp:0000ab117511f183668420370000
Ngày 17 tháng 2 19:45:26 mycontainer systemd-networkd[25]: host0: Liên kết LÊN
Ngày 17 tháng 2 19:45:26 mycontainer systemd-networkd[25]: host0: Đã nhận được nhà cung cấp dịch vụ
Ngày 17 tháng 2 19:45:27 mycontainer systemd-networkd[25]: host0: Đạt được IPv6LL
# lộ trình ip
mặc định qua Y.Y.Y.Y dev host0 proto tĩnh onlink
Về tất cả các cài đặt khác, tôi tuân theo các giá trị mặc định của hệ thống. Nhưng nó không hoạt động, tôi không thể ping từ máy chủ đến khách, cũng như từ khách đến máy chủ, internet hoặc cổng, chỉ nhận được Máy chủ đích không thể truy cập. Vì vậy, tôi bỏ lỡ một cái gì đó ở đây? Tôi không thực sự hiểu sâu về mạng và đã dành nhiều thời gian cho việc này, nhưng tôi đã xin lỗi vì một số sai lầm ngu ngốc mà tôi có thể mắc phải. Mọi manh mối đều được chào đón. Cảm ơn bạn!
CHỈNH SỬA:
Tôi đã nhìn vào bảng hàng xóm:
Chủ nhà:
$ ip hàng xóm
Y.Y.Y.Y dev br0 lladdr 84:c1:c1:76:ae:9b CÓ THỂ ĐẠT ĐƯỢC <- cổng
fe80::f80b:aff:fe80:d92 dev vb-mycontainer KHÔNG THÀNH CÔNG
fe80::6c91:a7ff:fe1f:19a2 dev br0 KHÔNG THÀNH CÔNG
fe80::1 dev br0 lladdr 84:c1:c1:76:ae:9b bộ định tuyến STALE
fe80::f80b:aff:fe80:d92 dev br0 lladdr fa:0b:0a:80:0d:92 STALE
Khách:
$ ip hàng xóm
fe80::7e10:c9ff:fe21:ed87 dev host0 lladdr 7c:10:c9:21:ed:87 bộ định tuyến STALE
fe80::6c91:a7ff:fe1f:19a2 dev host0 KHÔNG THÀNH CÔNG
fe80::1 dev host0 lladdr 84:c1:c1:76:ae:9b bộ định tuyến STALE
fe80::6c91:a7ff:fe1f:19a2 là địa chỉ liên kết ngôn ngữ của giao diện ảo vb-mycontainer trên máy chủ. Vì vậy, dường như có sự cố kết nối giữa khách và chủ nhà mà tôi giả sử?