Điểm:2

Làm cách nào để kết nối thiết bị TAP với mạng lớp phủ?

lá cờ pe

Tôi muốn cho phép người dùng OpenVPN tiếp cận tất cả các bộ chứa Docker là một phần của mạng Lớp phủ như thể chúng ở trong cùng một mạng LAN. Ví dụ đơn giản nhất là 3 vùng chứa được phân phối trên 2 máy chủ và các máy chủ được kết nối thông qua mạng lớp phủ và cả 3 vùng chứa đều là một phần của mạng lớp phủ đó.

Để làm được điều đó, tôi đã chuẩn bị một bộ chứa OpenVPN (OpenVPN ở chế độ cầu nối với bộ điều hợp TAP) và trong bộ chứa đó, tôi đã tạo một cầu nối br0 và kết nối các giao diện eth0 và tap0 với br0. Bằng cách này, tôi muốn nói rằng tôi đã kết nối TAP của mình và tất cả các máy khách OpenVPN với mạng lớp phủ (tôi không chắc liệu tuyên bố này có đúng không).

Cho đến nay, khi người dùng OpenVPN của tôi kết nối với OpenVPN và cố gắng ping Dummy Container 1 (trên cùng một máy chủ với bộ chứa OpenVPN), người dùng có thể ping Dummy Container 1 (và tất nhiên có thể ping bộ chứa OpenVPN Mà còn). Càng xa càng tốt!

Tuy nhiên, người dùng không thể ping Dummy Container 2, tồn tại trên một khác biệt máy chủ lưu trữ (nhưng là một phần của cùng lớp phủ với bộ chứa OpenVPN như đã đề cập ở trên).

Vì vậy, tóm lại, người dùng VPN được kết nối với bộ chứa OpenVPN (được kết nối với mạng lớp phủ Docker) và cố gắng ping các bộ chứa khác chỉ có thể ping các bộ chứa trên cùng một máy chủ, không phải trên máy chủ khác, như thể bắc cầu chỉ hoạt động trên cục bộ cầu chứ không phải với mạng Lớp phủ.

Cũng cần phải nói rằng từ bên trong bộ chứa OpenVPN, tôi có thể ping Bộ chứa giả 2 (và tất nhiên cả Bộ chứa giả 1).

Con số này samarize toàn bộ câu chuyện tôi đã kể ở trên. Lưu ý mũi tên màu đỏ biểu thị kết nối mà tôi muốn đạt được nhưng hiện tại không hoạt động (Người dùng VPN kết nối với Máy chủ 1 qua OpenVPN sau đó thử ping Dummy Container 2).

nhập mô tả hình ảnh ở đây

Một số thông tin kỹ thuật chi tiết

Bộ chứa OpenVPN
/etc/openvpn # địa chỉ ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 trạng thái qdisc noqueue nhóm UNKNOWN mặc định qlen 1000
    liên kết/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    máy chủ phạm vi inet 127.0.0.1/8 lo
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: tap0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 trạng thái UP nhóm mặc định qlen 1000
    liên kết/ether 06:9b:33:89:85:81 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 trạng thái qdisc noqueue UP nhóm mặc định qlen 1000
    liên kết/ether 02:42:0a:08:00:04 brd ff:ff:ff:ff:ff:ff
    inet 10.8.0.4/24 phạm vi toàn cầu br0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
74: eth0@if75: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br0 trạng thái Nhóm LÊN mặc định
    liên kết/ether 02:42:0a:08:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
76: eth1@if77: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 trạng thái qdisc noqueue Nhóm LÊN mặc định
    liên kết/ether 02:42:ac:12:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet 172.18.0.4/16 brd 172.18.255.255 phạm vi toàn cầu eth1
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
/etc/openvpn # tuyến ip
mặc định qua 172.18.0.1 dev eth1
10.8.0.0/24 dev br0 liên kết phạm vi kernel proto src 10.8.0.4
172.18.0.0/16 dev eth1 liên kết phạm vi kernel proto src 172.18.0.4

Cấu hình máy chủ OpenVPN:

cổng 1194
proto udp
nhà phát triển tap0
ca ca.crt
máy chủ chứng chỉ.crt
key server.key # Tệp này phải được giữ bí mật
dh dh.pem
ifconfig-pool-persist ipp.txt
khách hàng đến khách hàng
lưu giữ 10 120
mật mã AES-256-GCM
nén lz4-v2
đẩy "nén lz4-v2"
phím kiên trì
kiên trì điều chỉnh
trạng thái /var/log/openvpn-status.log
động từ 3
rõ ràng-thoát-thông báo 1

##### Xác thực #####
# Chứng chỉ ứng dụng khách không bắt buộc. Khách hàng chỉ cần xác thực bằng tên người dùng/mật khẩu.
verify-client-cert không có
# Vô hiệu hóa đàm phán lại khóa. Giá trị mặc định là một giờ, ngắt kết nối người dùng mỗi giờ và khiến người dùng cuối bị thách thức ủy quyền lại bằng OTP mới.
reneg-giây 0
# Tải và sử dụng cấu hình plugin LDAP.
plugin /usr/lib/openvpn/plugins/openvpn-auth-ldap.so /etc/openvpn/auth-ldap.conf
# Tải và sử dụng plugin PAM-auth (chủ yếu cho 2FA).
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so "đăng nhập openvpn TÊN NGƯỜI DÙNG mật khẩu Mã pin MẬT KHẨU OTP"

Kết nối được thực hiện như thế này:

openvpn --mktun --dev tap0
ip link set tap0 promisc on up

liên kết ip thêm tên br0 loại cầu
thiết lập liên kết ip dev br0 lên
bộ liên kết ip dev tap0 master br0
bộ liên kết ip dev eth0 master br0
ip addr flush dev eth0
địa chỉ ip thêm 10.8.0.4/24 dev br0

OpenVPN được bắt đầu bằng lệnh

VPN_SERVER_HOST_IP_ADDRESS=10.8.0.254
VPN_NETMASK=255.255.255.0
VPN_POOL_START_IP_ADDRESS=10.8.0.50
VPN_POOL_END_IP_ADDRESS=10.8.0.100

openvpn\
    --config server.conf \
    --cầu nối máy chủ $VPN_SERVER_HOST_IP_ADDRESS $VPN_NETMASK $VPN_POOL_START_IP_ADDRESS $VPN_POOL_END_IP_ADDRESS

My Dummy Container 2 (rất giống với Dummy Container 1 nhưng khác IP):

/ # địa chỉ ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    liên kết/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    máy chủ phạm vi inet 127.0.0.1/8 lo
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
35: eth0@if36: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc trạng thái mới hàng đợi LÊN
    liên kết/ether 02:42:0a:08:00:05 brd ff:ff:ff:ff:ff:ff
    inet 10.8.0.5/24 brd 10.8.0.255 phạm vi toàn cầu eth0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
37: eth1@if38: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc trạng thái mới hàng đợi LÊN
    liên kết/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.3/16 brd 172.18.255.255 phạm vi toàn cầu eth1
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
/ # ip lộ trình
mặc định qua 172.18.0.1 dev eth1
10.8.0.0/24 liên kết phạm vi dev eth0 src 10.8.0.5
172.18.0.0/16 liên kết phạm vi dev eth1 src 172.18.0.3
vidarlo avatar
lá cờ ar
Bạn có cần kết nối L2 không? Nếu không, chạm và bắc cầu * luôn * là câu trả lời sai.
Mohammed Noureldin avatar
lá cờ pe
@vidarlo vâng, tôi cần nó. Về cơ bản, tôi sẽ có một bộ điều khiển miền trên máy chủ khác, có thể phục vụ một số nhu cầu L2, chẳng hạn như máy in.
vidarlo avatar
lá cờ ar
Bộ điều khiển miền và máy in không yêu cầu kết nối L2. Chúng hoạt động tốt trên L3. L2 thường được ngụ ý nếu bạn muốn thực hiện lưu lượng truy cập không phải TCP/IP.
Mohammed Noureldin avatar
lá cờ pe
@vidarlo Cảm ơn bạn về thông tin đó. Tôi vừa đọc ở đâu đó rằng một số máy in có thể gặp sự cố nếu không được sử dụng trong L2. Dù sao, thật thú vị nếu tôi có thể tìm ra lý do tại sao nó không hoạt động khi sử dụng thiết lập này.
Mohammed Noureldin avatar
lá cờ pe
@vidarlo bạn có thể xem qua các chi tiết mới và cho tôi biết liệu bạn có thể tìm ra điều gì sai không và tại sao tôi không thể ping các vùng chứa trên host2 bởi người dùng VPN?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.