Score:0

เปลี่ยนเส้นทางการรับส่งข้อมูลจากอินเทอร์เฟซไปยังอินเทอร์เฟซ VPN tun ด้วย iptables

ธง ge

ฉันพยายามทำสิ่งที่ง่ายให้สำเร็จ แต่ดูเหมือนว่าฉันขาดอะไรไป

ในกล่องของฉัน ฉันมีไคลเอ็นต์ VPN ทำงานอยู่ซึ่งสร้างไฟล์ จูน0 อินเตอร์เฟซ. กล่องมีการรับส่งข้อมูลภายนอกที่มาจาก eth0.

ผมขอส่งต่อทราฟฟิกจาก eth0 ถึง จูน0. ฉันรันคำสั่งต่อไปนี้:

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.100.0/28 -j ยอมรับ
iptables -A FORWARD -i tun0 -o eth0 -m state --state ESTABLISHED,RELATED -j ยอมรับ
iptables -t nat -A โพสต์ -s 192.168.100.0/28 -o tun0 -j MASQUERADE

โปรดทราบว่าฉันเลือกช่วง IP ต้นทางเพราะฉันต้องการส่งต่อเฉพาะบางช่วงเท่านั้น

วิ่ง tcpdump บน eth0 อินเทอร์เฟซ ฉันเห็นทราฟฟิกที่มาจากเครื่องในช่วง 192.168.100.0/28 แต่ไม่เห็นรถเข้าเลย จูน0.

การส่งต่อ IP เปิดอยู่ตามธรรมชาติ

ฉันไม่แน่ใจว่าฉันพลาดอะไรไปจริงๆ

การกำหนดค่า IP ของ eth0 เป็น 192.168.10.93/24 ในขณะที่ จูน0 เป็น 10.8.8.15/24

â ~ ไอพีอาร์
ค่าเริ่มต้นผ่าน 192.168.10.1 dev eth0 เมตริก 100
10.8.8.0/24 dev tun0 ลิงค์ขอบเขต src 10.8.8.15
172.17.0.0/16 dev docker0 ลิงค์ขอบเขต src 172.17.0.1
172.30.32.0/23 ลิงค์ขอบเขต dev hassio src 172.30.32.1
192.168.10.0/24 dev eth0 ลิงค์ขอบเขต src 192.168.10.93 เมตริก 100
ge flag
การจราจรที่เข้าสู่กล่องไม่มีปลายทาง `192.168.100.0/28` แต่มีต้นทาง `192.168.100.0/28` ปลายทางคืออินเทอร์เน็ต
ge flag
การกำหนดค่า IP ของ `eth0` คือ `192.168.10.93/24` ในขณะที่ `tun0` คือ `10.8.8.15/24`
ge flag
`â ~ ไอพีอาร์ ค่าเริ่มต้นผ่าน 192.168.10.1 dev eth0 เมตริก 100 10.8.8.0/24 dev tun0 ลิงค์ขอบเขต src 10.8.8.15 172.17.0.0/16 dev docker0 ลิงค์ขอบเขต src 172.17.0.1 172.30.32.0/23 ลิงค์ขอบเขต dev hassio src 172.30.32.1 192.168.10.0/24 dev eth0 ลิงค์ขอบเขต src 192.168.10.93 เมตริก 100 `
ge flag
แน่นอน. เพิ่มการเปลี่ยนแปลงที่จำเป็น
ge flag
ปลายทางของการรับส่งข้อมูลคือ IP ภายนอกทั่วไปของอินเทอร์เน็ต โดยทั่วไปแล้วเครื่องจะสร้างทราฟฟิกทางอินเทอร์เน็ตที่ส่งต่อไปยังอินเทอร์เฟซ `eth0' ของกล่องนี้ และจาก 'eth0' จะต้องส่งต่อไปยัง 'tun0' และสุดท้ายก็ส่งไปยังอินเทอร์เน็ต สิ่งที่สำคัญที่สุดคือทราฟฟิกออกจาก `tun0` เพราะเป็น VPN
in flag
คุณพูดถึงการส่งต่อจาก `eth0` (อินเทอร์เน็ต) ไปยัง `tun0` ฉันไม่สามารถเข้าใจได้ว่าคุณต้องการไปที่ใด คุณอาจยกตัวอย่างที่ดีกว่าของแพ็กเก็ตที่ใช้งานไม่ได้ แพ็คเก็ตที่จะไปถึงอินเทอร์เน็ตควรส่งต่อไปยัง `eth0` เนื่องจากนั่นคืออินเทอร์เน็ตของคุณ
ge flag
โดยพื้นฐานแล้วเป็นอินเทอร์เฟซ `tun0` ของ VPN ทราฟฟิกควรเข้าถึงอินเทอร์เน็ตผ่าน `tun0` ดังนั้นการเชื่อมต่อ VPN จะถูกปลอมแปลง โดยพื้นฐานแล้วเป็นภาษาอังกฤษล้วน ๆ สิ่งที่ฉันพยายามทำคือ: การรับส่งข้อมูลขาเข้าทั้งหมดไปยังอินเทอร์เฟซ 'eth0' ที่มี IP ต้นทางเฉพาะจะต้องส่งต่อไปยังอินเทอร์เน็ตผ่านอินเทอร์เฟซ 'tun0' ดังนั้นมันจึงจะปรากฏหลังการเชื่อมต่อ VPN
in flag
คุณสามารถเข้าถึงอินเทอร์เน็ตผ่าน `tun0` ได้หรือไม่ ฉันคิดว่าความเข้าใจของคุณเกี่ยวกับสิ่งที่ส่งต่อนั้นไม่ถูกต้อง คุณช่วยกรุณายืนยันว่าคุณแน่ใจว่าต้นทางและปลายทางอยู่ในสถานการณ์ที่คุณกำลังคิดอยู่ หากคุณมีทราฟฟิกที่มีปลายทางเป็น "อินเทอร์เน็ต" เข้ามามากกว่า `tun0` และต้องการให้ส่งต่อไปยังอินเทอร์เน็ต ดังนั้น `eth0` จึงควรทำ MASQUERADE แต่นั่นใช้ไม่ได้กับคำอธิบายช่วงแหล่งที่มาของคุณ
ge flag
ตกลง ฉันจะตรวจสอบสมมติฐานทั้งหมดของฉันและจะแจ้งให้คุณทราบ
ge flag
นอกจากนี้ ฉันจะตรวจสอบ https://serverfault.com/questions/571801/tunneling-traffic-from-eth0-to-tun0-openvpn-ububtu-12-04 เพราะมันเป็นสิ่งที่ฉันพยายามจะบรรลุ ขอบคุณอย่างไรก็ตาม
ge flag
แต่เพื่ออธิบายให้คุณฟังเพราะฉันคิดว่าฉันได้สิ่งที่คุณไม่เข้าใจ เครื่องที่มีอินเทอร์เฟซ `eth0` และ `tun0` จะต้องทำงานเป็นผู้ส่ง รับทราฟฟิกที่เข้ามาในอินเทอร์เฟซ `eth0` แล้วส่งไปยังอินเทอร์เน็ตผ่านอินเทอร์เฟซ `tun0`
in flag
ตอนนี้ tun0 คืออินเทอร์เน็ต ไม่ใช่ eth0 IP ของเกตเวย์บน tun0 คืออะไร
Score:1
ธง in

เนื่องจากในตอนท้ายนี้อาจเกี่ยวกับการเข้าชมจาก 192.168.100.0/28 ออกไปข้างนอก จูน0 สิ่งนี้สามารถแก้ไขได้ด้วยสิ่งต่อไปนี้:

กฎ ip เพิ่มจาก 192.168.100.0/28 ค้นหา 10,000
เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน ${tun0gwip} ตาราง 10,000

เก็บ iptables MASQUERADE ไว้ซึ่งจำเป็น เว้นแต่ tun0 gw จะสามารถกำหนดเส้นทางกลับไปยังเครือข่ายอื่นของคุณได้

ge flag
ขอบคุณ ฉันจะลองดูว่ามันใช้ได้ไหม แต่คำถามของฉันคือแพ็กเก็ตจาก eth0 ควรส่งต่อไปยัง tun0 ทำไมคำสั่งไปข้างหน้าของฉันไม่ทำงาน
in flag
`iptables` ไม่รับผิดชอบต่อตำแหน่งที่ทราฟฟิกถูกกำหนดเส้นทาง นั่นคืองานของ `routing table'
ge flag
ฉันไม่คุ้นเคยกับคำสั่ง `ip rule add` ดังนั้นฉันจึงต้องสำรวจมัน แต่นี่คือสิ่งที่ฉันได้รับ `กฎ ip เพิ่มจาก 192.168.100.0/28 ค้นหา 10,000 ip: อาร์กิวเมนต์ไม่ถูกต้อง '10,000' เป็น 'table ID' `
ge flag
ฉันต้องติดตั้งเครื่องมือ `iproute2` นอกจากนี้ฉันยังพบคำสั่งทั้งหมดที่จำเป็นและ `iptables` เป็นสิ่งจำเป็นเมื่อสิ้นสุดวัน มิฉะนั้นจะไม่มีการ NATing https://unix.stackexchange.com/questions/490662/how-to-route-traffic-from-br0-to-tun0-when-tun0-is-not-the-default-route-of-the
ge flag
ฉันจะโหวตคำตอบของคุณ @NiKiZe แต่ในกรณีของฉันยังไม่ถูกต้องทั้งหมด ในความเป็นจริงโดยไม่มี `iptables` จะไม่ทำงาน
in flag
คุณมีส่วนของ MASQURADE ถูกต้องแล้ว จึงไม่ได้รวมส่วนนั้นไว้ จะปรับปรุงเพื่อพูดถึงสิ่งนั้นเช่นกัน
Score:0
ธง ge

นี่คือการรวมกันของคำสั่งที่แก้ไขปัญหา:

สร้างตารางเส้นทางใหม่ชื่อ วีพีเอ็น ภายใต้

â ~ cat /etc/iproute2/rt_tables
#
#ค่าสงวน
#
255 ท้องถิ่น
254 หลัก
253 ค่าเริ่มต้น
0 ไม่ระบุ
#
# ท้องถิ่น
#
#1 inr.ruhep
1 VPN

แล้วเรียกใช้:

iptables -t nat -A โพสต์ -o tun0 -j MASQUERADE

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.100.0/28 -j ยอมรับ
iptables -A FORWARD -i tun0 -o eth0 -j ยอมรับ

iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ยอมรับ

เส้นทาง ip เพิ่มค่าเริ่มต้น dev tun0 ตาราง VPN
เส้นทาง ip เพิ่ม 192.168.100.0/28 dev eth0 ตาราง vpn

กฎ ip เพิ่มจาก 192.168.100.0/28 ตาราง VPN

โพสต์คำตอบ

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