Score:0

OpenVPN และ IPTABLES - วิธีกำหนดเกตเวย์ lan (vpn) ให้กับลูกค้า

ธง cn

ฉันกำลังพยายามตั้งค่าเครือข่าย openvpn แต่ฉันมีปัญหา

การกำหนดค่า LAN ของฉันเป็นดังนี้:

  • เราเตอร์หลัก Zyxel 192.168.1.1 ทำหน้าที่เป็นเกตเวย์ (เชื่อมต่อ vdsl) และ จุดเชื่อมต่อ;
  • เราเตอร์ openwrt TD-W8970 192.168.1.2 ทำหน้าที่เป็นการเข้าถึง จุดและเซิร์ฟเวอร์ VPN (10.212.79.1)

สิ่งที่ฉันต้องการทำคือสร้างเครือข่าย VPN กับไคลเอนต์ที่ต้องส่งคำขออินเทอร์เน็ตผ่านเกตเวย์ LAN ของฉันเท่านั้น (192.168.1.1); ฉันต้องการให้ IP สาธารณะของไคลเอ็นต์ที่แสดงบนอินเทอร์เน็ตเป็นหนึ่งในเกตเวย์ LAN ของฉัน (192.168.1.1) และไม่ใช่ IP ที่กำหนดให้โดย ISP ของพวกเขา

ด้านล่างการกำหนดค่า openvpn ของฉัน

เซิร์ฟเวอร์.conf

ผู้ใช้ไม่มีใคร
กลุ่มโนกรุ๊ป
ทุนพัฒนา
พอร์ต 1194
โปรโตคอล udp
เซิฟเวอร์ 10.212.79.0
255.255.255.0
ซับเน็ตโทโพโลยี
ลูกค้าต่อลูกค้า
Keepalive 10 60
คงอยู่-tun
คีย์คงอยู่
กริยา 3
กด "คงอยู่-tun"
กด "perist-key"
กด "dhcp-option DNS 8.8.8.8"
กด "dhcp-option DNS 8.8.4.4"
กด "เส้นทาง 192.168.1.0 255.255.255.0"
แคลิฟอร์เนีย /etc/easy-rsa/pki/ca.crt
ใบรับรอง /etc/easy-rsa/pki/issued/server.crt
คีย์ /etc/easy-rsa/pki/private/server.key
dh /etc/easy-rsa/pki/dh.pem
tls-auth /etc/easy-rsa/pki/ta.key 0

ลูกค้า.conf

ทุนพัฒนา
โปรโตคอล udp
myserver_xyz.com ระยะไกล 1194 udp
resolv-retry ไม่มีที่สิ้นสุด
ไม่ผูกมัด
ผู้ใช้ไม่มีใคร
กลุ่มโนกรุ๊ป
คีย์คงอยู่
คงอยู่-tun
แคลิฟอร์เนีย ca.crt
ใบรับรอง client1.crt
คีย์ client1.key
เซิร์ฟเวอร์ระยะไกล cert-tls
tls-auth ta.key 1
รหัส AES-256-CBC
กริยา 3

เครือข่าย openvpn ถูกสร้างขึ้นอย่างถูกต้อง และไคลเอ็นต์ 10.212.79.2 สามารถ ping เซิร์ฟเวอร์ VPN 10.212.79.1 และนำทางในอินเทอร์เน็ตได้

ปัญหาคือ IP ไคลเอ็นต์สาธารณะที่แสดงบนอินเทอร์เน็ตเป็น IP ที่กำหนดโดย ISP ไม่ใช่หนึ่งในเกตเวย์ LAN (192.168.1.1) ซึ่งเป็นที่ตั้งของเซิร์ฟเวอร์ VPN (192.168.1.2 / 10.212.79.1)

ฉันพยายามทำการเปลี่ยนแปลงบางอย่างในการกำหนดค่าเซิร์ฟเวอร์ แต่ไม่สำเร็จ

ฉันยังพยายามกด "redirect-gateway def1" หรือ push "redirect-gateway autolocal" แต่ในกรณีนี้ไคลเอ็นต์จะหยุดนำทางในอินเทอร์เน็ตเลย

หากไม่ใช่ปัญหา openvpn เป็นปัญหาที่เกี่ยวข้องกับการกำหนดค่าที่ถูกต้องของ IPTABLES หรือไม่

คุณช่วยฉันได้ไหม?

ขอบคุณล่วงหน้า :)

Score:0
ธง bd

หากเราเข้าใจความต้องการของคุณ แพ็กเก็ต IP ของไคลเอ็นต์ของคุณควรถูกส่งไปยังไคลเอนต์เราเตอร์ จากนั้นผ่านอินเทอร์เน็ตในอุโมงค์ ไปยังเราเตอร์เซิร์ฟเวอร์ จากนั้นกลับไปที่อินเทอร์เน็ต

เปลี่ยนเส้นทางเกตเวย์ def1 ดูเหมือนจะเพียงพอ แต่เพื่อความแน่ใจ จะดีกว่าหากแสดงให้เราเห็น เส้นทาง IP เอาต์พุตบนโหนดทั้งหมด (ไคลเอนต์พีซี, เราเตอร์ไคลเอ็นต์, เราเตอร์เซิร์ฟเวอร์) ผลลัพธ์เหล่านี้จะทำให้เราแน่ใจว่าตารางเส้นทางต่างๆ นั้นถูกต้อง https://openvpn.net/community-resources/how-to/ เสนอ ท้องถิ่น ค่าสถานะขึ้นอยู่กับการกำหนดค่าที่แน่นอนของคุณ

ควรใส่คำสั่งปลอมบนเซิร์ฟเวอร์ VPN โดยทั่วไปบนเราเตอร์เซิร์ฟเวอร์: iptables -t nat -A โพสต์ -o eth0 -j MASQUERADE โดยที่ eth0 คืออุปกรณ์ภายนอก (ใกล้กับอินเทอร์เน็ตมากที่สุด) ดู https://linuxhacks.org/what-is-ip-masquerade-and-how-to-rule-it-with-iptables/ หรือ https://bobcares.com/blog/iptables-nat-masquerade/ คุณต้องเปิดใช้งานการส่งต่อด้วย (ดูบทความเหล่านี้)

Francesco avatar
cn flag
ก่อนอื่นขอขอบคุณสำหรับการสนับสนุน ผมแก้ด้วยวิธีนี้ ใน openvpn server.conf: กด "redirect-gateway def1" ในเราเตอร์ OpenWRT ที่โฮสต์เซิร์ฟเวอร์ openvpn: sysctl net.ipv4.ip_forward=1, iptables -I FORWARD -j ACCEPT, iptables -t nat -I POSTROUTING -s 10.212.79.0/24 -o br-lan -j MASQUERADE ฉันยังลบออกจาก server.conf: push "dhcp-option DNS 8.8.8.8", push "dhcp-option DNS 8.8.4.4", push "route 192.168.1.0 255.255.255.0" ตอนนี้ฉันสงสัยว่าฉันจะได้ผลลัพธ์เดียวกันโดยไม่ต้องใช้ iptables แต่ใช้การกำหนดค่า openvpn เฉพาะบนเซิร์ฟเวอร์และไคลเอ็นต์เท่านั้น
Frédéric Loyer avatar
bd flag
หากการกำหนดค่าของคุณมี 2 เครือข่ายที่มีคำนำหน้าเหมือนกัน (192.168.1.0/24) ฉันเดาว่าจำเป็นต้องมีการปลอมแปลง วิธีนี้จะหลีกเลี่ยงไม่ให้แพ็กเก็ตหนึ่งจากหนึ่งในเครือข่ายเหล่านี้มาในแพ็กเก็ตที่สองที่ไม่มีการเปลี่ยนแปลง ซึ่งจะบ่งบอกถึงปัญหาการกำหนดเส้นทาง (เครือข่ายปลายทางเชื่อว่าแพ็กเก็ตนั้นมาจากเพื่อนบ้าน ไม่ใช่จากอีกด้านหนึ่งของ VPN) ฉันไม่สามารถยืนยันมากขึ้น จากนั้นให้สวมหน้ากากหรือเปลี่ยนหนึ่งใน 192.168.1.0 โดยสมมติว่าเป็น 192.168.2.0
Francesco avatar
cn flag
ฉันไม่สามารถควบคุมการกำหนดค่าเครือข่ายไคลเอ็นต์ได้เนื่องจากไคลเอ็นต์เชื่อมต่อกับ VPN ของฉันจากเครือข่ายสาธารณะ (โรงแรม, ดองเกิล LTE, ...) สิ่งที่ฉันสามารถทำได้เพื่อหลีกเลี่ยงปัญหาการกำหนดเส้นทางคือเปลี่ยนการกำหนดค่า IP ในเซิร์ฟเวอร์ lan หลีกเลี่ยง 192.168.x.x ทั่วไป และเลือกใช้บางอย่างที่อยู่ตรงกลางของ 10.x.x.x ซึ่งลดความเป็นไปได้ที่ IP ขัดแย้งกับเครือข่ายไคลเอนต์ในกรณีนี้ (แลนเซิร์ฟเวอร์และไคลเอนต์ที่มีการกำหนดค่า IP ต่างกัน) เป็นไปได้ไหมที่จะได้ผลลัพธ์เดียวกันโดยไม่ต้องใช้ iptables แต่ตั้งค่าเฉพาะ server.conf และ client.conf อย่างถูกต้อง
Frédéric Loyer avatar
bd flag
ด้วยไคลเอ็นต์รายเดียวสิ่งนี้จะได้ผล ด้วยไคลเอนต์สองเครื่องที่มีช่วงที่อยู่ 192.16.1.0 เหมือนกัน จึงจำเป็นต้องมีการปลอมแปลง โปรดทราบว่ามีการประกาศเส้นทาง 193.168.1.0 ซึ่งควรปรากฏที่ไหนสักแห่ง และคุณยังต้องมีการปลอมแปลงระหว่างที่อยู่ส่วนตัวและอินเทอร์เน็ตทั้งหมดของคุณ แต่ฉันคิดว่ามันจะทำที่อื่น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา