Buộc một số ứng dụng nhất định sử dụng VPN


3

Trong vài ngày nay, tôi đã cố gắng chỉ buộc một số ứng dụng nhất định sử dụng VPN. Cho đến nay tôi thấy khá đơn giản khi buộc tất cả các ứng dụng sử dụng nó hoặc không có ứng dụng nào sử dụng nó.

Tôi không được đặt trên kịch bản hay bất cứ điều gì. Tôi chỉ muốn điều này làm việc. Bất kỳ điều nào sau đây đều được chấp nhận:

  • Buộc các ứng dụng từ một người dùng nhất định sử dụng giao diện tun0
  • Buộc một số cổng nhất định sử dụng giao diện tun0
  • Buộc các quy trình cụ thể sử dụng giao diện tun0 (đây là mục đích ban đầu của tôi nhưng tôi hiểu chức năng này đã không tồn tại trong iptables một thời gian)

Tôi cũng không bắt đầu sử dụng các tuyến đường / tường lửa cho giải pháp, đó chỉ là hầu hết các thông tin mà tôi quản lý tìm thấy dường như cho thấy đó là cách để đi.

Tôi đang chạy Fedora và sử dụng OpenVPN.

Tôi đã làm việc với kịch bản này:

#!/bin/sh

DEV1=wlp0s20u2
IP1=192.168.0.200
GW1=192.168.0.1
TABLE1=internet
TABLE2=vpn
DEV2=tun0
IP2=`ifconfig | egrep -o '192.168.179.[0-9]{1,3}' | head -n1`
GW2=`ifconfig | egrep -o '192.168.179.[0-9]{1,3}' | tail -n1`

ip route flush table $TABLE1
ip route flush table $TABLE2
ip route show table main | grep -Ev ^default | while read ROUTE ; do
    ip route add table $TABLE1 $ROUTE
    ip route add table $TABLE2 $ROUTE
done
ip route add table $TABLE1 $GW1 dev $DEV1 src $IP1
# Error "RTNETLINK answers: File exists" at below line
ip route add table $TABLE2 $GW2 dev $DEV2 src $IP2
ip route add table $TABLE1 default via $GW1
ip route add table $TABLE2 default via $GW2

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "2" > /proc/sys/net/ipv4/conf/tun0/rp_filter

ip rule add from $IP1 lookup $TABLE1
ip rule add from $IP2 lookup $TABLE2
ip rule add fwmark 1 lookup $TABLE1
ip rule add fwmark 2 lookup $TABLE2

iptables -t nat -A POSTROUTING -o $DEV1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING -o $DEV2 -j SNAT --to-source $IP2

iptables -t nat -A PREROUTING           -m state --state ESTABLISHED,RELATED          -j CONNMARK --restore-mark
iptables        -A OUTPUT               -m state --state ESTABLISHED,RELATED          -j CONNMARK --restore-mark
iptables -t nat -A PREROUTING -i $DEV1  -m state --state NEW                          -j CONNMARK --set-mark 1
iptables -t nat -A PREROUTING -i $DEV2  -m state --state NEW                          -j CONNMARK --set-mark 2
iptables -t nat -A PREROUTING           -m connmark --mark 1                          -j MARK --set-mark 1
iptables -t nat -A PREROUTING           -m connmark --mark 2                          -j MARK --set-mark 2
iptables -t nat -A PREROUTING           -m state --state NEW -m connmark ! --mark 0   -j CONNMARK --save-mark

# ADD PORTS HERE!
iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport  80 -j CONNMARK --set-mark 2
#iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport 443 -j CONNMARK --set-mark 2

route del default
route add default gw $GW1 $DEV1

thay đổi một chút từ một tìm thấy đây .

Điều này không hoạt động. Nó được lưu lượng truy cập vào internet không dây của tôi theo mặc định, nhưng không chuyển hướng lưu lượng truy cập từ cổng 80 sang VPN. Gợi ý duy nhất tôi nhận được là bí ẩn

RTNETLINK answers: File exists

Điểm nó xảy ra được đánh dấu trong tập lệnh. Tôi không chắc điều đó có nghĩa là gì. Tôi có thể ngăn chặn nó bằng cách xóa vòng lặp ngay trước khi xảy ra lỗi, nhưng tập lệnh không đột ngột hoạt động nếu tôi làm vậy.

Cứu giúp? Tôi biết một chút về mạng / tường lửa nhưng đây là đường vượt quá khả năng của tôi, và tôi thực sự thậm chí không biết gì về một phần ba kịch bản đó làm .

Câu trả lời:


1

Thông thường bạn có thể liên kết một ứng dụng mạng với IP: Cổng trong tệp .conf của nó. Bạn có thể thêm các IP khác nhau vào mỗi giao diện trong PC và sau đó liên kết mỗi ứng dụng với một IP khác nhau, mỗi trường hợp bạn có thể có một máy chủ thư được liên kết với IP 192.168.7.100 trong thẻ NIC và một số ứng dụng khác được liên kết với 192.168.7.101 trong giao diện tun0.


Cảm ơn bạn đã trả lời, nhưng câu hỏi này đặc biệt về một số nội dung mạng trên máy tính xách tay của tôi. Tôi không có bất kỳ dịch vụ web nào cần sử dụng VPN. Như vậy, tôi cần một giải pháp chung chung hơn.
Dylan

0

Tuy nhiên, bất kỳ ứng dụng nào sử dụng mạng đều bị ràng buộc với giao diện / ip, không thành vấn đề nếu đó là dịch vụ mạng hoặc ứng dụng máy khách đồ họa nếu bạn có thể đặt giao diện, nó sẽ sử dụng bạn đã giải quyết vấn đề của bạn, nếu không các gói sẽ đi qua giao diện định trước.


Chắc chắn, nhưng phần khó khăn là bản chất máy tính của bạn muốn sử dụng một giao diện trừ khi đích đặc biệt chỉ có thể truy cập bởi người khác. Và hầu hết các ứng dụng không có tùy chọn rõ ràng để chọn giao diện. Hơn nữa, một ứng dụng tôi thấy rằng đã làm - máy khách torrent mặc định của hệ thống của tôi, không cần VPN dù sao - thậm chí không hoạt động! Hãy thử hình dung tôi làm, giả sử, Firefox và chỉ Firefox sử dụng VPN. Thực tế đó là những gì tôi đang cố gắng kiểm tra trước khi tôi thực hiện nó một cách tổng quát hơn. Tôi đánh giá cao sự cố gắng, mặc dù.
Dylan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.