标签: openvpn

K8s:通过 Pod 将流量路由到子网(从 Pod 访问 VPN 客户端)

我正在 Kubernetes/GKE 上运行一个应用程序。

我有很多没有公共IP的设备。我需要从应用程序访问这些设备的 SSH 和 VNC。

最初的想法是在集群内运行 OpenVPN 服务器并连接设备,但后来遇到了问题:

似乎没有任何优雅/惯用的方式将流量从应用程序路由到 VPN 客户端。

基本上,我所需要的就是能够告诉route 10.8.0.0/24 via vpn-pod

我发现的可能的解决方案:

  • 修改节点上的路由。我想让节点保持短暂状态,并且仅将所有内容都放在 K8s 清单中。

  • DaemonSet在具有 K8s 清单的节点上添加路由。然而,目前尚不清楚如何跟踪 OpenVPN pod IP 的变化。

  • 伊斯蒂奥。似乎有点矫枉过正,我无法在文档中找到问题的解决方案。L3路由好像不支持,所以必须涉及到端口映射。

  • 印花布。它在 GKE 上得到原生支持,并且确实支持 L3 路由,但我想避免对本来可以通过单个自定义路由解决的问题引入如此深远的更改。

  • OpenVPN 客户端边车。工作起来会非常优雅,只要允许客户端相互通信,VPN 服务器的托管位置和方式并不重要。但是,我想隔离客户端,并且可能需要从不同的 pod 访问客户端,这意味着必须将 sidecar 放置在多个位置,从而污染部署。可以通过将客户端分为不同 IP 范围的类别来实现隔离。

  • GCP / GKE 本身内的路由。它们只允许指定一个节点作为下一跳。这也意味着应用程序和 VPN 服务器都必须在 GCP 内运行。

我目前倾向于在简单的虚拟机上运行 OpenVPN 服务器并使用 GCP 路由。它可以工作,我可以从 K8s 应用程序 ping VPN 客户端,但它看起来仍然脆弱且硬连线。

然而,只有 sidecar 解决方案提供了一种完全分离关注点的方法。

是否有一种惯用的解决方案可以从其他 Pod 访问 Pod 专用网络?

networking routes openvpn kubernetes google-kubernetes-engine

7
推荐指数
1
解决办法
3119
查看次数

具有OpenVPN/privateinternetaccess.com端口转发的Docker容器内的传输守护进程

我一直在尝试将我的种子盒移动到Docker容器中,我认为我遇到了鸡/蛋问题:

当前的种子箱设置通过privateinternetaccess.com运行OpenVPN(所有互联网都通过VPN).我有一个脚本(https://github.com/firecat53/pia_transmission_monitor),用PIA检查分配的转发端口,然后使用端口和绑定地址相应地更新传输守护进程.

问题是每小时检查分配的转发端口,它可以随时更改...我需要在运行Docker容器之前知道端口,以便知道哪些端口要传入/传出容器.我打算在容器内运行OpenVPN,但事先不知道分配给容器的端口我不确定这是否会起作用.

一个非常 hackish的解决方案可能是在一个容器内运行OpenVPN和另一个Docker守护进程,然后在OpenVPN容器内运行传输容器.这似乎很复杂,但我还没有尝试过.

我错过了一些非常明显的东西吗?还有其他想法吗?

谢谢!

斯科特

transmission openvpn docker

6
推荐指数
1
解决办法
6159
查看次数

在 Chrome 扩展程序中连接 OpenVPN?

是否可以通过 Chrome 扩展 API 以编程方式连接 openVPN?我在 Chrome 扩展 API 文档中找到的所有内容都是chrome.proxychrome.socket

我相信可以使用运行外部程序,NPAPI并且该外部程序将创建必要的 openVPN 连接。

UPD: OpenVPN似乎有TCP/Socket管理接口(参见http://openvpn.net/index.php/open-source/documentation/miscellaneous/79-management-interface.html),所以连接起来相当容易以编程方式从 Chrome 扩展程序中获取。

javascript openvpn google-chrome-extension

6
推荐指数
1
解决办法
4万
查看次数

VM(Parallels)不使用主机上的VPN连接(osx mavericks)

我在Mac上运行Tunnelblick.
我的本地网络是192.168.0.0/32,我尝试连接的网络是192.168.252.0/22.
此外,我正在使用运行Windows 8.1的VM(Parallels).
我想从我的Mac连接到VPN并与我的VM共享此网络.

所以,我面临着一些问题.他们去了:

  • 当我连接到VPN时,我的IP地址不会从VPN网络更改为IP地址.我的IP仍然是192.168.0.132.
  • 尽管ip地址有问题,但我仍然可以从网络"ping"主机,我正在尝试连接写'ping host.domain.com'.但'ping主机'不起作用.
  • 我已经在Parallels的设备菜单中将网络设置为"共享".但是,即使这样,我的VM的IP地址是10.211.55.4.
  • 在我的VM中,我甚至无法从其他网络ping主机

如果我不够清楚,我很抱歉.所有这些问题都有点复杂.
重要的事情:当我使用Windows机器时,我正在使用的相同配置文件完美运行(没有IP和DNS问题).

vpn networking parallels openvpn

6
推荐指数
1
解决办法
5323
查看次数

如何在nodejs中使用openvpn?

我有 NodeJS 应用程序并想开始在其中使用 OpenVPN 连接。为此,我在 npm 上找到了 2 个模块(openvpn-client 和 openvpn-bin)——但它们中的任何一个都没有好的文档和示例,但我尽可能地使用它们,但没有成功。

我有带有 540 个 .opvn 文件的 Ipvanish 帐户(登录名/密码),我可以使用它。我试试这个:

var openvpnmanager = require('node-openvpn');
 var openvpnBin = require('openvpn-bin');
 var path = require('path');

 var filePath = path.normalize('../geo/ipvanish/ipvanish-AU-Sydney-syd-a16.ovpn');

    var opts = {
        host: 'syd-a16.ipvanish.com', // normally '127.0.0.1', will default to if undefined
        port: 443, //port openvpn management console
        timeout: 60000, //timeout for connection - optional, will default to 1500ms if undefined
        config: filePath
    };
    var auth = {
        user: 'email@gmail.com',
        pass: 'password'
    };

    var …
Run Code Online (Sandbox Code Playgroud)

openvpn node.js

6
推荐指数
1
解决办法
8690
查看次数

使用特定的OpenSSL版本构建OpenVPN

之前已经提出了类似的问题,但由于配置脚本的标志已更改,因此答案似乎不再适用.我试图在x86和x64上从Ubuntu 14.04.5上的git源编译OpenVPN.我已经在/ usr/local/ssl中构建并安装了OpenSSL 1.0.1t.我已经尝试了配置选项的各种组合,编译器似乎认识到了

./configure OPENSSL_LIBS="-L/usr/local/ssl/ -lssl -lcrypto" OPENSSL_CFLAGS="-I/usr/local/ssl/include/"
Run Code Online (Sandbox Code Playgroud)

完成没有错误,但./configure OPENSSL_LIBS="-L/usr/local/ssl/" OPENSSL_CFLAGS="-I/usr/local/ssl/include/"结果configure: error: openssl check failed.一旦你做了make并进行安装,它仍然会报告OpenSSL的系统版本:

root@anonymous:/usr/local/src/openvpn# openvpn --version
OpenVPN 2.3_git [git:master/d1bd37fd508ee046] x86_64-unknown-linux-gnu [SSL (OpenSSL)]
[LZO] [LZ4] [EPOLL] [MH] [IPv6] built on Aug 16 2016
library versions: OpenSSL 1.0.1f 6 Jan 2014, LZO 2.06
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes
enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dlopen=unknown
enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes
enable_fragment=yes enable_iproute2=no enable_libtool_lock=yes enable_lz4=yes
enable_lzo=yes enable_management=yes enable_multi=yes …
Run Code Online (Sandbox Code Playgroud)

c linux openssl compilation openvpn

6
推荐指数
1
解决办法
1万
查看次数

VPN客户端用于解析AWS中的私有DNS主机名

我最近在AWS EC2实例上设置了OpenVPN服务器,以便将我的办公室连接到AWS VPC环境.

我使用TunnelBlick作为VPN客户端,一切都很好!我可以ssh到VPC中的私有IP.但是,从我的办公室主机解析DNS VPC名称(如果我从VPC中的EC2实例运行它,我就可以).

我目前的解决方案是在EC2实例上使用Unbound设置DNS转发器(这恰好是我运行OpenVPN服务器的实例) - 但由于某种原因它不起作用.一旦连接到VPN服务器以便能够解析VPC中的私有主机名,您将如何启用VPN客户端?

我很失落,所以如果你有任何其他的想法,或者可以根据我目前的设置弄清楚什么是错的,我会永远感激:)

OpenVPN服务器配置

port 1194 #- change the port you want

proto udp #- protocol can be tcp or udp

dev tun

tun-mtu 1500

tun-mtu-extra 32

mssfix 1450

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt

cert /etc/openvpn/easy-rsa/2.0/keys/server.crt

key /etc/openvpn/easy-rsa/2.0/keys/server.key

dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem

server 10.8.0.0 255.255.255.0

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"

push "dhcp-option DNS <PUBLIC_IP_OF_THE_SERVER_RUNNING_OPENVPN_AND_UNBOUND>"

keepalive 5 30

comp-lzo

persist-key

persist-tun

status server-tcp.log

verb 3
Run Code Online (Sandbox Code Playgroud)

未绑定的服务器配置

172.31.0.2是VPC DNS服务器

server:
        interface: 0.0.0.0
        access-control: 0.0.0.0/0 …
Run Code Online (Sandbox Code Playgroud)

dns openvpn amazon-web-services aws-vpc

6
推荐指数
1
解决办法
3595
查看次数

连接到 VPN 时 Docker 暴露的端口停止工作

我正在尝试创建一个 Docker 映像,它将通过 VPN 转发端口。我创建了一个公开端口 5144 的简单图像,并测试了它是否正常工作:

sudo docker run -t -d -p 5144:5144 \
                --name le-bridge \
                --cap-add=NET_ADMIN \
                --device=/dev/net/tun \
                bridge
sudo docker exec -it le-bridge /bin/bash
Run Code Online (Sandbox Code Playgroud)

我检查端口是否正确暴露,如下所示:

[CONTAINER] root@6116787b1c1e:~# nc -lvvp 5144
[HOST] user$ nc -vv 127.0.0.1 5144
Run Code Online (Sandbox Code Playgroud)

然后,我输入的任何内容都会在容器的终端中正确回显。但是,一旦我启动 openvpn 守护进程,这就不再起作用:

[CONTAINER] root@6116787b1c1e:~# openvpn logger.ovpn &
[1] 33
Sun Apr  5 22:52:54 2020 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on May 14 2019
Sun Apr  5 22:52:54 2020 library versions: OpenSSL …
Run Code Online (Sandbox Code Playgroud)

openvpn docker

6
推荐指数
1
解决办法
1407
查看次数

Kubernetes Pod 中的 OpenVPN 客户端

我正在研究如何使 OpenVPN 客户端在 Pod 的容器上工作,我解释了我所做的事情,但是您可以跳过我的所有解释并直接提供您的解决方案,如果可行的话,我不在乎将以下所有内容替换为您的步骤,我想让我的容器以外部和内部网络都可以工作的方式使用 VPN(例如 ExpressVPN)。

我有一个作为 OpenVPN 客户端的 docker 镜像,它可以与以下命令配合使用:

docker run --rm -it --cap-add=NET_ADMIN --device=/dev/net/tun my-app /bin/bash
Run Code Online (Sandbox Code Playgroud)

docker 镜像有一个入口点 bash 脚本:

curl https://vpnvendor/configurations.zip -o /app/configurations.zip
mkdir -p /app/open_vpn/ip_vanish/config
unzip /app/configurations.zip -d /app/open_vpn/config
printf "username\npassword\n" > /app/open_vpn/vpn-auth.conf
cd /app/open_vpn/config
openvpn --config ./config.ovpn --auth-user-pass /app/open_vpn/vpn-auth.conf

Run Code Online (Sandbox Code Playgroud)

它工作正常,但是当我将它部署为 K8S Pod 中的容器时,它崩溃了,这是可以理解的,K8S 集群需要节点之间的内部网络通信,因此 VPN 破坏了它......我该如何让它工作?谷歌搜索很令人沮丧,没有一个解决方案有效,而且只有几个,有一个有类似的问题:OpenVPN-Client Pod on K8s - Local network unreachable 但不太明白,请帮忙。

由于 IPVanish 众所周知,让我们以他们的 ovpn 为例,我使用其他供应商,但可以访问 IPVanish 帐户,但它也不起作用:

client
dev tun
proto udp
remote lon-a52.ipvanish.com 443
resolv-retry infinite
nobind …
Run Code Online (Sandbox Code Playgroud)

vpn networking openvpn kubernetes

6
推荐指数
1
解决办法
7598
查看次数

openvpn3:会话启动:如何传递用户名和密码

目前我正在使用 openvpn3 客户端连接到 vpn 服务器

openvpn3 session-start --config /home/user/client.ovpn
Run Code Online (Sandbox Code Playgroud)

然后它要求输入用户名和密码。

有没有简单的方法来传递用户名和密码。因为每次都要输入用户名和密码很烦人

openvpn

6
推荐指数
2
解决办法
5465
查看次数