Tôi có một giọt Digital Ocean (tương tự như phiên bản Amazon EC2) đang chạy Ubuntu Server 12.04.3 x64 với cả mạnh mẽ 5.1.1 (được xây dựng từ nguồn) và mực 3.4.2 (cũng được xây dựng từ nguồn) được cài đặt.
Cả VPN mạnh mẽ và chức năng proxy mực chỉ hoạt động tốt, với một số thay đổi quy tắc iptables nhỏ giữa thử nghiệm, tất nhiên.
Những gì tôi muốn làm là có thể bắt đầu kết nối VPN từ máy tính / thiết bị của tôi và có lưu lượng truy cập VPN đi tự động định tuyến thông qua proxy mực cục bộ.
Đó là, lưu lượng giao thông sẽ trông giống như thế này:
Máy khách -> VPN -> Proxy -> Internet
Thật không may, tôi dường như không thể tìm ra một cách tốt để làm cho loại kết nối này hoạt động. Một người bạn đã chỉ ra rằng chuỗi đầu ra của bảng NAT trong iptables có thể là giải pháp của tôi, gợi ý một quy tắc như thế này:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128
Mặc dù nó hợp lý với tôi về cách thức hoạt động của nó, nhưng nó dường như không làm như vậy. Tôi không thấy bất kỳ gói tin nào tuân theo quy tắc (kiểm tra định kỳ số lượng gói đến / đi bằng lệnh iptables-save) khi tôi cố tải nội dung trong khi kết nối với VPN.
Xin lưu ý bạn, tôi không phải là chuyên gia về iptables hoặc linux, vì vậy xin vui lòng đồng ý với tôi ở đây nếu điều tôi nói (hoặc điều tôi nói) là vấn đề ngớ ngẩn / ngu ngốc / rõ ràng là chết tiệt. ;)
Tôi cởi mở với bất kỳ đề xuất nào về cách giải quyết vấn đề này, nhưng loại bỏ một thành phần không phải là một giải pháp. Tôi cần cả VPN và Proxy chạy như thế này. Thay đổi phiên bản của một trong hai thành phần cũng không lý tưởng, mặc dù khả thi hơn nhiều.
Tôi đã cung cấp cả ipsec.conf và squid.conf, cũng như tập lệnh quy tắc iptables hiện tại của tôi.
PS Nếu bạn để ý, có một số thứ liên quan đến việc sử dụng RADIUS để xác thực. Đừng lo lắng về nó. Nó hiện không được sử dụng và không có bất kỳ ảnh hưởng nào đến câu hỏi này.
tập lệnh iptables:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
export WAN=eth0
export vpnclients=10.100.0.0/255.255.0.0
# Allow access to our SSH server from the WAN
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# Add the rules for NAT
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
iptables-save
ipsec.conf:
config setup
ca ipsec
cacert=ca.pem
auto=add
conn %default
ikelifetime=60m
keylife=20m
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
leftcert=vpn-server.crt
leftauth=pubkey
rightsendcert=never
leftsendcert=always
eap_identity=%identity%
leftfirewall=yes
auto=add
conn ikev1
keyexchange=ikev1
rightauth=pubkey
rightauth2=xauth
rightsourceip=10.100.0.0/16
right=%any
rightid=%any
rightdns=8.8.8.8,8.8.4.4
leftsourceip=<my_server_ip>
leftsubnet=0.0.0.0/1,128.0.0.0/1,::/1,8000::/1
conn ikev2
keyexchange=ikev2
rightsourceip=10.100.0.0/16
right=%any
rightid=%any
rightauth=eap-radius
mực
#dummy name used
cache deny all
forwarded_for off
#for debugging, enable in production
strip_query_terms off
cache_effective_user proxy
cache_effective_group proxy
client_dst_passthru on
host_verify_strict off
http_port 3130 intercept
http_port 3128
https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/dev/squid.pem
always_direct allow all
ssl_bump server-first all
# the following two options are unsafe and not always necessary:
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
# Change these to your local DNS servers
dns_nameservers 8.8.8.8 8.8.4.4
coredump_dir /var/cache/squid
http_access allow all
http_reply_access allow all
PREROUTING
chuỗi nhận xét? Tôi nghĩ rằng nó sẽ làm việc và không phải là OUTPUT
chuỗi. Ngoài ra, tôi điều gì xảy ra nếu bạn thử cổng 3130 thay vì 3128? Vì vậy, tôi sẽ thửiptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3130