Câu trả lời:
Tại sao không phải là tùy chọn hệ thống -> mạng -> (Chọn mạng ở phía bên trái của cửa sổ và chọn Nâng cao ở dưới cùng bên phải) -> Proxy (tab ở trên cùng) hoạt động cho bạn?
Mặc dù cài đặt cài đặt proxy toàn hệ thống là một khởi đầu tốt, bạn cũng có thể muốn xem xét việc sử dụng iptables để đảm bảo rằng tất cả lưu lượng truy cập đều đi qua proxy. Một số ứng dụng không sử dụng cài đặt cấu hình toàn hệ thống (Firefox trong số chúng) và do đó bắt buộc bạn phải điều chỉnh quy tắc của mình không cho phép kết nối trực tiếp và chỉ định tuyến lưu lượng truy cập thông qua proxy.
EDIT: Trong khi cá nhân tôi sử dụng iptables
các quy tắc để quản lý "rò rỉ" tiềm năng từ VPN của mình, ban đầu tôi thực sự bị nhầm lẫn khi nghĩ rằng iptables có thể hoạt động trực tiếp với proxy vớ. Bạn sẽ cần một cái gì đó như tun2socks để tạo giao diện đường hầm ảo (chẳng hạn như sử dụng vpn).
Theo đó, bạn có thể thiết lập một tập lệnh iptables tương tự như sau:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
# name of primary network interface (before tunnel)
PRIMARY=eth0
# gateway ip address (before tunnel - adsl router ip address)
# automatically determine the ip from the default route
GATEWAY=`route -n | grep $PRIMARY | egrep "^0\.0\.0\.0" | tr -s " " | cut -d" " -f2`
# provided by tun2socks: interface name
TUNNEL=tun0
# If you'd like, putting the tun2socks command here is a good idea. It may or may not be necessary to do so, but either way is more convenient than running the two commands separately.
# iptables rules - important!
LOCAL_NET=192.168.0.0/16
#LOCAL_NET=$GATEWAY
# Flush all previous filter rules, you might not want to include this line if you already have other rules setup
iptables -t filter --flush
iptables -t filter -X MYVPN
iptables -t filter -N MYVPN
# Add local routes to routing table
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -host 23.21.163.237 dev eth0 gw 192.168.1.1
# Add ssh routes to routing table
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1
# Exceptions for local traffic & vpn server
iptables -t filter -A MYVPN -o lo -j RETURN
iptables -t filter -A MYVPN -o ${TUNNEL} -j RETURN
iptables -t filter -A MYVPN --dst 127.0.0.1 -j RETURN
iptables -t filter -A MYVPN --dst $LOCAL_NET -j RETURN
iptables -t filter -A MYVPN --dst ${SERVER} -j RETURN
iptables -t filter -A MYVPN --dst ${VPN_SERVER} -j RETURN
# Add extra local nets here as necessary
iptables -t filter -A MYVPN -j DROP
# MYVPN traffic leaving this host:
iptables -t filter -A OUTPUT -p tcp --syn -j MYVPN
iptables -t filter -A OUTPUT -p icmp -j MYVPN
iptables -t filter -A OUTPUT -p udp -j MYVPN
Đương nhiên, bạn sẽ muốn tạo tập lệnh này phản ánh mạng cụ thể của mình (nghĩa là, nếu bạn đang sử dụng một cái gì đó như mạng con 192.168.0.0/24, hãy điều chỉnh cho phù hợp). Ngoài ra, nó rất chặt chẽ dựa trên tập lệnh tôi sử dụng với VPN, do đó, tất cả các đề cập MYVPN hoặc VPN - trong khi bạn không sử dụng VPN, tun2socks
hoạt động hiệu quả như thể bạn là vậy, vì vậy mọi thứ sẽ hoạt động như nhau.
Và đặc biệt cảm ơn câu trả lời này tại Unix.SE đã giúp tôi đi đúng hướng để trả lời câu hỏi này.
EDIT một lần nữa: Vì vậy, có vẻ như OS X thực sự sẽ làm điều này với ipfw
chứ không phải iptables (xin lỗi, tôi chủ yếu là một người linux và nghĩ rằng OS X có sẵn iptables). Có những sự tương đương như vậy mà kịch bản có thể được điều chỉnh, một số trong đó được chỉ ra ở đây . man ipfw
nên đặt bạn thẳng vào cú pháp. Tôi sẽ để lại iptables
kịch bản gốc dưới dạng mẫu để bạn có thể thấy những gì đang diễn ra theo khái niệm. WaterRoust có vẻ như có thể giúp sử ipfw
dụng thân thiện hơn với người dùng một chút; kết thúc khác có thể là có sẵn là tốt.
tun2socks
không yêu cầu SSH và máy chủ; ví dụ trên trang web của họ là sử dụng SSH để tạo proxy SOCKS ở vị trí đầu tiên. Nếu bạn đã có proxy SOCKS, điều đó hoàn toàn không cần thiết. Và vâng, iptables
là một cách sai về phía tôi. OS X, dựa trên BSD, sử dụng ipfw
chứ không phải iptables
, dành cho nhân Linux. Vì nó phức tạp, bạn có thể tìm thấy một lối vào sẽ thiết lập nó cho bạn theo cách dễ sử dụng hơn, nhưng tôi không có kinh nghiệm về vấn đề này. Nó đang phức tạp ở mức độ thấp dù sao cũng có liên quan đến lý do tại sao nó có khả năng cho công việc như vậy.
ipfw
dễ dàng hơn.
Nếu bạn có thể đặt cho mình một máy chủ SSH, thì sshript miễn phí có thể tạo đường hầm cho tất cả lưu lượng TCP thông qua kết nối, thực hiện tất cả các công việc tường lửa cho bạn.
Để chuyển tiếp tất cả lưu lượng TCP và yêu cầu DNS đến máy chủ SSH từ xa, lệnh này đủ đơn giản:
sshuttle --dns -vr ssh_server 0/0
Bên cạnh TCP và DNS, sshript không chuyển tiếp các yêu cầu khác như UDP, ICMP, ping, v.v.
Để biết thêm thông tin và ví dụ, xem bài viết Sử dụng Sshript trong công việc hàng ngày .
Có một số giải pháp có sẵn. Không có cách nào đơn giản như thay đổi một số cài đặt: lý do là điều này đánh bại toàn bộ mục tiêu ủy quyền, đó là định tuyến một số ứng dụng cụ thể thông qua một tuyến khác (vì mục đích tàng hình, bảo mật, bảo vệ danh tính ...) trong khi rời khỏi bạn truy cập vào tuyến đường địa phương (được cho là nhanh hơn).
Một số sẽ bị loại bỏ vì yêu cầu của bạn, nhưng hãy để tôi đề cập đến chúng vì mục đích hoàn chỉnh: VPN, đường hầm SSH, sử dụng pfctl (bộ lọc gói và giao diện điều khiển NAT). Ngoài ra, Tor, mặc dù chắc chắn không được thiết kế cho mục đích sử dụng mà bạn có trong đầu, cho phép bạn định tuyến tất cả lưu lượng truy cập thông qua proxy của họ .
Tất cả các ứng dụng này đều miễn phí và đòi hỏi nhiều nhất là sự khéo léo để đưa chúng đi. Mặt khác, có những ứng dụng trả tiền, trong đó phần lớn công việc đã được thực hiện bởi người khác, mặc dù ở một mức giá.
cho phép bạn chuyển hướng kết nối mạng của máy tính thông qua các máy chủ proxy. Bạn có thể nói với ProxyCap những ứng dụng nào sẽ kết nối với Internet thông qua proxy và trong hoàn cảnh nào. Điều này được thực hiện thông qua giao diện thân thiện với người dùng mà không cần phải cấu hình lại bất kỳ ứng dụng khách Internet nào của bạn
Ngoài ra, có Proxifier cho Mac (cẩn thận: chỉ hỗ trợ tối đa 10.8). mà
cho phép các ứng dụng mạng không hỗ trợ làm việc thông qua các máy chủ proxy hoạt động thông qua proxy và chuỗi SOCKS hoặc HTTPS.