公司在武汉与北京分别有两个源站,但只有openvpn,没法用l2tp组网,怎么办?
~这篇文章几乎白写了,原来在Windows上用openvpn创建连接后,VMware的虚拟机走nat模式可以直接通过openvpn访问后面的服务器~。
公司最后用上了,开心。
虽然公司正在逐步从北京搬到武汉,但公司的内部资源站仍然在北京,并且只提供openvpn。但研发的同学要编译必须要用centos+docker从公司服务器拉取最新资源才能编译。
在武汉本地建一个镜像站虽然可行,但太浪费硬盘资源(况且压根还缺。)
因此可以在武汉本地搭一个透明代理。来将北京资源站“搬到”武汉。
透明代理分为TCP与HTTP透明代理,由于tcp透明代理只能代理单个服务器,因此我在这里使用的是http透明代理,配合北京公司内部的dns,就可以解决武汉研发同学的docker不方便通过openvpn访问北京服务器的问题了。
(为什么不用iptables,因为我不会啊。)
openvpn
准备ubuntu 20.04 desktop版,这个版本连接openvpn简单点。
先准备好openvpn的配置文件,然后从如图所示的方式导入配置文件,点击连接后输入密码就可以用了。
gost
使用之前编译好的gost文件,这个自己编译的gost文件才支持http+https透明代理
给了777权限后,放入/usr/bin/目录内:
cp gost /usr/bin/gost
创建启动配置文件:
nano /etc/systemd/system/gost.service
[Unit]
Description=gost
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/gost -L http://:80 -L sni://:443
Restart=on-failure
[Install]
WantedBy=multi-user.target
配置开机启动,然后启动,完事。
systemctl start gost
systemctl enable gost
路由配置
这个坑了我快一天时间,在最开始我原计划用瘦终端内装Ubuntu+vnc来进行访问。
我首先使用ubuntu20.04+gnome+tigervnc+systemctl,想实现半自动(除了输入密码)系统,但折腾了半天,最终确认了tigervnc+gnome不能使用systemctl自动启动,而手动启动没事。这个是gnome桌面的一个bug。
于是我准备用手动启动tigervnc,但当我连接了openvpn后,vnc瞬间断开。我彻底失去了与瘦终端的联系。
因此我最后还是弄了个垃圾服务器装VMware,然后VMware装了个桌面版的Ubuntu虚拟机,这样操作都在Ubuntu里进行。
并且准备了一个USB有线网卡挂载在虚拟机内。(因为我用的是ipmi的交换机,单口dhcp分配一个IP)。然后依然在openvpn连接后,ssh与gost断连。
通过搜索与排查,最后定位到openvpn的路由机制。当openvpn连接后,会往系统内写服务器推送过来的路由,并替换了网关。当gost/ssh接收到请求后,返回的数据包都经由openvpn的路由与网关而丢失,则表现为gost的日志是单向连接。
最好的办法就是手动绑定路由。
gost的dns解析机制是:当系统内有多个dns服务器时,会指定使用某个的dns服务,因此还要锁定使用dns服务器。
gost配置
修改后的gost配置如下所示:
有以下关键点:
1.针对http网站使用http代理。
2.当网站为ip时,给它一个域名,然后使用hosts文件解析
3.确认好各个网站与之对应的端口号。
openvpn配置
openvpn配置有以下关键点:
1.手动指定dns为远程服务器的dns。
2.关闭自动路由,手动设定路由。并且勾选仅对该网络上的资源使用此连接。
使用
你可以直接在hosts文件内将北京区的公司域名指向这个ip
172.20.10.35 release.dev.zettakit.com
172.20.10.35 workflow.dev.zettakit.com
172.20.10.35 wiki.dev.zettakit.com
172.20.10.35 gerrit.dev.zettakit.com
172.20.10.35 repo.dev.zettakit.com
也可以在dnsmasq内指向这个ip,然后在武汉的公司使用这个dnsmasq的ip,实现无感访问北京资源站。(当然也仅限http/https)
参考:
Prevent SSH connection lost after logging into VPN on server machine
How can I prevent OpenVPN from clobbering local route?
gost
版权属于:寒夜方舟
本文链接:https://www.wnark.com/archives/170.html
本站所有原创文章采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)。 您可以自由地转载和修改,但请注明引用文章来源和不可用于商业目的。声明:本博客完全禁止任何商业类网站转载,包括但不限于CSDN,51CTO,百度文库,360DOC,AcFun,哔哩哔哩等网站。