นี่คือ 'วิธีการ' ที่สมบูรณ์แบบสำหรับ NOOBS (โดยใช้เดเบียน) เพื่อให้แน่ใจว่ากลุ่มผู้ใช้ที่ส่งผ่านเดเบียน (เช่นการส่งข้อมูล) จะกำหนดเส้นทางข้อมูลผ่าน VPN เท่านั้น
อย่าใช้ 'วิธีการ' ที่ยาวขึ้นสำหรับ vpn โดยใช้สคริปต์ของระบบที่ซับซ้อน ... ! iptables เป็นวิธีที่ดีที่สุด (และเข้าใจผิดได้) !!! - การใช้กฎ IPTABLE เพียงเล็กน้อยตามผู้ใช้การส่งและกลุ่มเพื่อควบคุม vpn (ไม่เหมือนกับวิธีการแฮ็คที่ซับซ้อนกว่าซึ่งใช้สคริปต์ systemd สคริปต์ขึ้นและลง ฯลฯ )และมันง่ายมาก!
ขั้นตอนที่ 1 - การติดตั้ง: (สมมติว่ามีการติดตั้งการส่งผ่านและผู้ใช้ส่งผ่านเดเบียนจึงมีอยู่!)
sudo apt-get install iptables
sudo apt-get install iptables-persistent
ขั้นตอนที่ 2 - สร้างไฟล์ transmission-ip-rules
sudo nano transmission-ip-rules
และเพิ่มข้อความในบล็อครหัสด้านล่างโดยเริ่มจาก #!/bin/bash
สิ่งสำคัญ
- หากเครือข่ายท้องถิ่นของคุณไม่อยู่ในรูปแบบ 192.168.1.x เปลี่ยนตัวแปร NET เพื่อให้สอดคล้องกับรูปแบบที่อยู่เครือข่ายท้องถิ่นของคุณ !!
- นอกจากนี้ยังต้องระวังของการเล่นโวหารที่ 192.168.1.0/25 ให้จริงช่วงที่ 192.168.1.0-255!
- บางครั้งอินเทอร์เฟซของคุณ eth0, tun0 (ซึ่งเป็น vpn) ฯลฯ อาจแตกต่างกัน - ตรวจสอบด้วย 'ifconfig' และเปลี่ยนหากจำเป็น
#!/bin/bash
# Set our rules so the debian-transmission user group can only route through the vpn
NET=192.168.1.0/25
GROUP=debian-transmission
IFACE_INTERNAL=eth0
IFACE_VPN=tun0
ALLOW_PORT_FROM_LOCAL=9091
iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT
# not needed - but added these to properly track data to these interfaces....when using iptables -L -v
iptables -A INPUT -i $IFACE_VPN -j ACCEPT
iptables -A INPUT -i $IFACE_INTERNAL -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# track any forward (NAT) data for completeness - don't care about interfaces
iptables -A FORWARD
บันทึกไฟล์แล้วเรียกใช้
sudo iptables -F
sudo chmod +x transmission-ip-rules
sudo ./transmission-ip-rules
จากนั้นตรวจสอบให้แน่ใจว่ากฎเหล่านี้ยังคงอยู่ระหว่างการรีบูตด้วย:
sudo dpkg-reconfigure iptables-persistent
และแตะใช่เพื่อแจ้งให้ทั้งสอง ทำ!
สิ่งที่ดีเกี่ยวกับสคริปต์นี้คือมันจะติดตามข้อมูลทั้งหมดผ่านอุปกรณ์! เมื่อคุณออก
sudo iptables -L -v
มันจะแสดงจำนวนข้อมูลที่จะไปที่อินเตอร์เฟสและด้านใด INPUT หรือ OUTPUT เพื่อให้คุณมั่นใจได้ว่าสคริปต์ vpn ทำงานได้อย่างถูกต้อง เช่น;
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1749K 661M ACCEPT all -- tun0 any anywhere anywhere
3416K 3077M ACCEPT all -- eth0 any anywhere anywhere
362K 826M ACCEPT all -- lo any anywhere anywhere
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 all -- any any anywhere anywhere
Chain OUTPUT (policy ACCEPT 2863K packets, 2884M bytes)
pkts bytes target prot opt in out source destination
1260 778K ACCEPT tcp -- any eth0 anywhere 192.168.1.0/ 25 tcp spt:9091 owner GID match debian-transmission
0 0 ACCEPT udp -- any eth0 anywhere 192.168.1.0/ 25 udp spt:9091 owner GID match debian-transmission
1973K 1832M ACCEPT all -- any tun0 anywhere anywhere owner GID match debian-transmission
8880 572K ACCEPT all -- any lo anywhere anywhere owner GID match debian-transmission
13132 939K REJECT all -- any any anywhere anywhere owner GID match debian-transmission reject-with icmp-port-unreachable
สคริปต์นี้ได้รับการทดสอบอย่างละเอียดในการเชื่อมต่อตัดการเชื่อมต่อเริ่มต้นใหม่จาก vpn มันใช้งานได้ดี การส่งสามารถใช้ VPN เท่านั้น ข้อได้เปรียบที่ดีของสคริปต์นี้เหนือผู้อื่นคือฉันได้ทำให้แน่ใจว่าคุณสามารถดู (ผ่านiptables -L -v
) ว่าข้อมูลของคุณนับเป็นสิ่งที่ดึงผ่านการส่งข้อมูล (โดยเพิ่มกฎ INPUT (ทั้งหมด) และส่งต่อ (ทั้งหมด) สำหรับแต่ละอินเตอร์เฟส eth0, vpn (tun0)) ดังนั้นคุณรู้ว่าเกิดอะไรขึ้น !!! ผลรวมของข้อมูลจะไม่ตรงกับการส่ง - น่าเสียดายที่ฉันไม่สามารถแยกแยะด้าน INPUT ลงไปยังผู้ใช้ที่ส่งเดเบียนและจะมีทั้งค่าใช้จ่ายเพิ่มเติมและกระบวนการอื่น ๆ ที่ใช้ VPN เดียวกัน แต่คุณจะเห็นข้อมูลคร่าวๆ ทางด้านอินพุตและอยู่ประมาณครึ่งหนึ่งของเอาท์พุทสำหรับ VPN ที่ยืนยันการทำงาน สิ่งอื่นที่ควรทราบ - ใช้เวลาสักครู่ในการยกเลิกการเชื่อมต่อ VPN (การรับส่งข้อมูลทั้งหมดหยุดลงเมื่อมีการส่งสัญญาณ) และเชื่อมต่อใหม่เพื่อส่งข้อมูลเพื่อ 'รับไป' บน VPN ใหม่ดังนั้นไม่ต้องกังวลหากใช้เวลาประมาณ 5 นาที .
เคล็ดลับ - google 'MAN iptables' และดูบทความเกี่ยวกับการตรวจสอบแบนด์วิดท์หากคุณต้องการทราบทีละบรรทัดว่าสคริปต์นี้ทำงานอย่างไร ...