ฉันสร้างการตั้งค่าต่อไปนี้โดยใช้คอนเทนเนอร์นักเทียบท่า
โฮสต์นักเทียบท่า
: เครื่องจริงที่รันคอนเทนเนอร์นักเทียบท่า
เปิด VPN
: คอนเทนเนอร์ที่ทำงาน openvpn และเชื่อมต่อกับ VPN โดยอัตโนมัติ
zbget
: คอนเทนเนอร์ที่รัน nzbget, เว็บอินเตอร์เฟสสามารถเข้าถึงได้ที่พอร์ต <นักเทียบท่า-โฮสต์-ip>:6789
ข้อเท็จจริง:
- ฉันสามารถเข้าถึงคอนเทนเนอร์ทั้งหมดโดยใช้ IP โฮสต์นักเทียบท่า
- การเชื่อมต่อ openvpn กำลังสร้างการเชื่อมต่อ VPN สำเร็จ
- เดอะ
zbget
พร้อมใช้งานแล้ว
ขั้นตอนที่สองของแผนของฉันคือการกำหนดเส้นทางการจราจรของ zbget
คอนเทนเนอร์ผ่าน เปิด VPN
คอนเทนเนอร์. ฉันทำได้สำเร็จโดยเพิ่มบรรทัดต่อไปนี้ใน docker-compose.yaml ของคอนเทนเนอร์ nzbget:
...
network_mode: "คอนเทนเนอร์: openvpn" `
...
หลังจากนี้ขอรับ ipinfo.io
แสดง IP ของ VPN ให้ฉันดู แต่หลังจากนี้ฉันสูญเสียการเข้าถึงเว็บอินเตอร์เฟส nzbget ผ่าน <นักเทียบท่า-โฮสต์-ip>:6789
(หมดเวลาการเชื่อมต่อ). เมื่อฉัน (เพื่อวัตถุประสงค์ในการทดสอบ) ไม่ปล่อยให้ เปิด VPN
คอนเทนเนอร์สร้างการเชื่อมต่อ VPN และรีสตาร์ทคอนเทนเนอร์ทั้งสอง ฉันสามารถเชื่อมต่อกับอินเทอร์เฟซ nzbget ได้โดยใช้ <นักเทียบท่า-โฮสต์-ip>:6789
. ดังนั้นฉันจึงดูเหมือนว่าการเชื่อมต่อ VPN นั้นขัดขวางไม่ให้ฉันเชื่อมต่อกับคอนเทนเนอร์ nzbget
ตอนนี้คำถามคือ: ฉันจะกำหนดค่า openvpn ได้อย่างไรเพื่อให้ฉันเชื่อมต่อกับ nzbget webinterface โดยใช้ <นักเทียบท่า-โฮสต์-ip>:6789
.
ฉันสังเกตเห็นการมองไปที่ บันทึกนักเทียบท่า
ของ เปิด VPN
คอนเทนเนอร์ที่เมื่อสร้างการเชื่อมต่อ VPN เส้นทางบางเส้นทางจะถูกเพิ่ม:
...
2021-11-16 19:03:38 เปิดอุปกรณ์ TUN/TAP tun0
2021-11-16 19:03:38 /sbin/ip link set dev tun0 up mtu 1500
2021-11-16 19:03:38 /sbin/ip link set dev tun0 up
16-11-2021 19:03:38 /sbin/ip addr เพิ่ม dev tun0 10.7.2.7/24
2021-11-16 19:03:38 /sbin/ip เส้นทางเพิ่ม <vpn-ip-address>/32 ผ่าน 172.18.0.1
2021-11-16 19:03:38 /sbin/ip เส้นทางเพิ่ม 0.0.0.0/1 ผ่าน 10.7.2.1
2021-11-16 19:03:38 /sbin/ip เส้นทางเพิ่ม 128.0.0.0/1 ผ่าน 10.7.2.1
...
ฉันคิดว่าการกำหนดค่าผิด/เส้นทาง IP ที่ขัดแย้งกันเป็นสาเหตุของปัญหาของฉัน นี่คือข้อมูลเพิ่มเติม
อินเตอร์เฟสบน เปิด VPN
คอนเทนเนอร์:
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 ขอบเขตโฮสต์ lo
valid_lft ตลอดไป reserved_lft ตลอดไป
2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast สถานะ UNKNOWN qlen 500
ลิงค์/[65534]
inet 10.7.2.7/24 ขอบเขต global tun0
valid_lft ตลอดไป reserved_lft ตลอดไป
85: eth0@if86: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue สถานะ UP
ลิงค์/อีเธอร์ 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 brd 172.18.255.255 ขอบเขต global eth0
valid_lft ตลอดไป reserved_lft ตลอดไป
รายการเส้นทาง IP เมื่อเปิดใช้งาน VPN เปิด VPN
คอนเทนเนอร์:
root@cf64c3dd2846:/# รายการเส้นทาง ip
0.0.0.0/1 ผ่าน 10.7.2.1 dev tun0
ค่าเริ่มต้นผ่าน 172.18.0.1 dev eth0
10.7.2.0/24 dev tun0 ลิงค์ขอบเขต src 10.7.2.7
<vpn-ip-address> ผ่าน 172.18.0.1 dev eth0
128.0.0.0/1 ผ่าน 10.7.2.1 dev tun0
172.18.0.0/16 dev eth0 ลิงค์ขอบเขต src 172.18.0.2
รายการเส้นทาง IP เมื่อเป็น VPN ไม่ ใช้งานอยู่ เปิด VPN
คอนเทนเนอร์ (ในสถานการณ์นี้ฉันสามารถเข้าถึงเว็บอินเตอร์เฟส nzbget):
ค่าเริ่มต้นผ่าน 172.18.0.1 dev eth0
172.18.0.0/16 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.18.0.2
มีใครทราบกฎเส้นทาง IP ที่ฉันสามารถใช้เพื่ออนุญาตให้เข้าถึง nzbget webinterface ได้บ้าง ในขณะที่มีการเชื่อมต่อ VPN ที่ใช้งานอยู่? ตัวอย่างเช่น มีวิธีอนุญาต (เฉพาะ) ทราฟฟิกขาเข้าบนพอร์ต 6789 เพื่อกำหนดเส้นทาง "ปกติ" (ไม่ผ่าน VPN)
ขอบคุณสำหรับความช่วยเหลือของคุณ!