วิธีการตั้งค่า OpenVPN เพื่อให้ไคลเอนต์ VPN สามารถเข้าถึงเซิร์ฟเวอร์ทั้งหมดภายใน LAN เซิร์ฟเวอร์ได้อย่างไร


12

เซิร์ฟเวอร์ LAN IP ของฉันคือ 192.168.1.1 และมีเว็บเซิร์ฟเวอร์อินทราเน็ตใน 192.168.1.2 OpenVPN daemon ได้รับการกำหนดค่าให้มอบไคลเอ็นต์ 192.168.2

มีpush "route 192.168.1.0 255.255.255.0"บรรทัดในการกำหนดค่าที่ฉันคาดว่าจะเปิดใช้งานไคลเอนต์ VPN เพื่อเข้าถึง 192.168.1.0 สุทธิทั้งหมด แต่พวกเขาสามารถเข้าถึง 192.168.1.1 เท่านั้น - เซิร์ฟเวอร์ VPN เอง

ฉันได้พยายามเปิดใช้งานnet.ipv4.ip_forward = 1ใน/etc/sysctl.confแต่นี้ไม่ได้ช่วย

ความคิดใด ๆ

PS: เซิร์ฟเวอร์รัน Ubuntu 12.04
PPS: OpenVPN ทำงานในtunโหมดเหนือ UDP


เรียน @FrandsHansen ฉันยอมรับเฉพาะคำตอบที่ในเวลาเดียวกัน 1. เป็นคำตอบที่ถูกต้องในเชิงตรรกะสำหรับคำถาม 2. ได้รับการทดสอบโดยฉันเพื่อทำงาน
Ivan

คำตอบ:


19

ตรวจสอบให้แน่ใจว่าการส่งต่อ IP เปิดใช้งานโดยอัตโนมัติ

echo 1 > /proc/sys/net/ipv4/ip_forward

นอกจากนี้เพื่อให้การกำหนดเส้นทางทำงานได้เซิร์ฟเวอร์ภายในจะต้องทราบเส้นทางไปยังที่อยู่ IP ไคลเอนต์ OpenVPN ของคุณ ดังนั้นพวกเขาจะต้องรู้เส้นทางไปที่ 192.168.2.0/24

คุณสามารถทำให้ iptables ทำการกำหนดเส้นทางผ่าน masquerade โดยใช้

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forwardให้-bash: /proc/sys/net/ipv4/ip_forward: Permission denied- มันหมายถึงอะไรในกรณีนี้
อีวาน

มีโอกาสมากที่หมายความว่าคุณไม่ได้ทำตามที่เป็นราก ลองทำมันในฐานะ root
Frands Hansen

sudoมันเป็นเพียงผลเช่นเดียวกันกับ ผลลัพธ์ที่ตั้งใจจะทำคืออะไร?
อีวาน

1
การใส่ sudo ไว้ข้างหน้าคำสั่งจะไม่เพิ่มสิทธิพิเศษให้กับไฟล์ (หลังเครื่องหมาย>) ดังนั้นคุณต้องยกระดับเป็นรูทแล้วทำ
Frands Hansen

1
หรือใช้echo 1 | sudo tee
ygrek

2

หากเครือข่าย LAN ของคุณเป็น 192.168.1.0/24 จริงๆคุณจะพบปัญหามากมาย เพราะเราเตอร์ส่วนใหญ่มีเครือข่ายเริ่มต้นนั้น ดังนั้นเมื่อคุณอยู่บนเครือข่ายแขกคอมพิวเตอร์ของคุณสามารถรับไอพีได้จากเครือข่าย 192.168.1.0/24 ดังนั้นคุณไม่สามารถเข้าถึงเครือข่ายระยะไกลของคุณ แต่เป็นเครือข่ายแขก ฉันแนะนำให้เลือกเครือข่ายอื่นสำหรับ LAN และ VPN ของคุณ เช่น 192.170.15.0/24 สำหรับ LAN และ 10.0.5.0/xx สำหรับ vpn xx ขึ้นอยู่กับจำนวนลูกค้า VPN ที่เชื่อมต่อกับ LAN

นี่คือสคริปต์ fw ของฉันสำหรับ openvpn

#!/bin/sh

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

# Allow packets from private subnets
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

# i have multiple vpn networks
# 192.123.123.0/24 = LAN
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.9.0.0/30 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.9.1.0/30 -o eth1 -d 192.123.123.39 -j MASQUERADE # to single server access only

echo 1 > /proc/sys/net/ipv4/ip_forward

ไม่มันไม่ใช่ 192.168.1.0 จริง ๆ แล้วแค่ 192.168 ที่ต่างกัน 2 ตัว #. 0 มุ้ง ขอบคุณสำหรับคำตอบ
อีวาน

หากคุณต้องการฉันสามารถแบ่งปันการกำหนดค่าเซิร์ฟเวอร์ openvpn และการกำหนดค่าไคลเอนต์ของฉัน
Guntis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.