使用 OpenVPN,但 netflix.com 阻止访问

use*_*848 5 geolocation proxy openvpn netflix vps

我在美国的 VPS 上设置了 OpenVPN 服务器,并将其配置为通过它路由所有客户端流量。关于一般的 VPN 连接,一切似乎都正常。所有的 ip 查找站点都会向我显示美国服务器的 ip 地址,甚至 hulu.com 也可以工作(如果您不在美国,它将无法工作)。但出于某种原因,netflix.com 说“抱歉,Netflix 在您所在的国家/地区尚不可用。”。所以我认为 netflix 可能会使用一些更复杂的方法来确定您的位置,而不仅仅是您的 IP 地址。但是我找不到让它工作的方法,直到我放弃了使用 VPN 的想法,而是通过一个简单的 ssh 隧道连接到服务器,运行:

ssh -D 9999 user@serverip

我所要做的就是改变密钥

network.proxy.socks_remote_dns

在 Firefox 中从 false 变为 true 以防止 DNS 泄漏和设置 socks 代理。然后我终于可以看netflix.com了。结果我得出结论,浏览器(或系统时区之类的东西)中没有任何东西可以告诉 netflix 位置,因此它必须与 OpenVPN 配置有关。

之后,我使用 tcpdump 来记录服务器网络接口 venet0 (OpenVZ VPS) 上的所有流量,在首先连接到 VPN 时访问客户端上的 netflix.com,然后通过袜子隧道连接,然后比较两个输出。

唯一引起我注意的是,在使用袜子隧道时,服务器主要使用 ipv6 连接到 netflix,而当客户端连接到 OpenVPN 服务器时,它仅使用 ipv4。但我不明白这怎么会产生如此大的不同。

那么我错过了什么?尽管 VPS 和客户端之间只有 ipv4 连接,但有没有办法将 OpenVPN 配置为也使用 ipv6 连接到网站?

这是 OpenVPN 服务器(OpenVZ VPS)的 server.conf

local serverip
port 443
proto tcp
dev tun
ca ./easy-rsa2/keys/ca.crt
cert ./easy-rsa2/keys/vps1.crt
key ./easy-rsa2/keys/vps1.key  # This file should be kept secret
dh ./easy-rsa2/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
max-clients 4
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 3
Run Code Online (Sandbox Code Playgroud)

iptables 转发

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source serverip
Run Code Online (Sandbox Code Playgroud)

(启用ipv4转发)

我一直在 Win7 和只有 ipv4 连接的 Debian 客户端上尝试了所有方法,并始终确保它们使用正确的 DNS 服务器(使用 ipleak.net 和 tcpdump/wireshark 测试)。

客户端.conf:

client
dev tun
proto tcp
remote serverip 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-auth ta.key 1
cipher AES-256-CBC
comb-lzo
verb 3
Run Code Online (Sandbox Code Playgroud)