用date查看时间如果时间不对,安装时间调整包

apt-get update && apt-get install -y tzdata

选择Asir和Shanghai,安装完后再看date一般就正确了

1.开始安装

apt-get update
apt-get install strongswan
##下面这个是包含EAP_IDENTITY认证插件,不安装的话认证会失败:EAP_IDENTITY not supported, sending EAP_NAK
apt-get install -y libcharon-extra-plugins

2.编辑/etc/ipsec.conf

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
	# strictcrlpolicy=yes
	# uniqueids = no

# Add connections here.

# Sample VPN connections

#conn sample-self-signed
#      leftsubnet=10.1.0.0/16
#      leftcert=selfCert.der
#      leftsendcert=never
#      right=192.168.0.2
#      rightsubnet=10.2.0.0/16
#      rightcert=peerCert.der
#      auto=start

#conn sample-with-ca-cert
#      leftsubnet=10.1.0.0/16
#      leftcert=myCert.pem
#      right=192.168.0.2
#      rightsubnet=10.2.0.0/16
#      rightid="C=CH, O=Linux strongSwan CN=peer name"
#      auto=start
# 下面是新加的
conn hk2
        keyexchange=ikev2
        dpdaction=clear
        dpddelay=300s
        keyingtries=1
        eap_identity="你的连接vpn的用户名"
        leftauth=eap-mschapv2
        left=%defaultroute
        leftsourceip=%config
        right=你的vpn服务商提供的地址
        rightauth=pubkey
        rightsubnet=0.0.0.0/0
        rightid=你的vpn服务商提供的ID如pointtoserver.com
        rightsendcert=never
        type=tunnel
        auto=add

3./etc/ipsec.secrets

"你的vpn的用户名(如果没有特殊字符可以不带双引号)" : EAP "你的vpn的密码"

4.要把证书复制一下

cp /etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem /etc/ipsec.d/cacerts/
  1. 启动
ipsec restart
ipsec up hk2

请注意,这时虽然连上了vpn,strongswan加了一条高优先级的路由规则,将除的本地流量之外的所有请求都转到ipsec隧道了,导致dns解析失败,不说gg了,连baidu都ping不通了。

查看dns

resolvectl status

在这里插入图片描述
没有系统级的DNS,网络接口eth0有自己的dns:100.100.2.136 100.100.2.138

root@iZuf6hu0jwys1fu9mrwfktZ:/etc# ip rule list

在这里插入图片描述

cat /etc/iproute2/rt_tables

在这里插入图片描述
Linux允许使用数字标识路由表(从1到252),而不仅仅是名称。这意味着你可以直接通过数字引用一个路由表,而不必在 /etc/iproute2/rt_tables 文件中定义它的名称。

root@iZuf6hu0jwys1fu9mrwfktZ:/etc#  ip route show table 220

在这里插入图片描述
strongswan建立的隧道:

ipsec statusall

在这里插入图片描述
综上,strongswan加了一条高优先级220的路由规则,将除的本地流量之外的所有请求的源IP都标记为10.24.6.141(图上是10.24.5.107是因为多次编辑,多次启动strongswan,导致ip变了),而源IP都标记为10.24.6.141的流量都会经过ipsec隧道,发送到vpn远端的服务器上,而隧道远端的vpn服务器访问不了阿里云局域网dns(100.100.2.136 100.100.2.138),导致dns解析失败,所以ping任何域名都不行了。

根使用目的不同有不同的解决办法:
目的一:本地访问gg,baidu等
方法一(推荐)
修改/etc/systemd/resolved.conf
添加DNS=8.8.8.8 8.8.4.4
在这里插入图片描述
然后 运行下列命令,使其生效

systemctl restart systemd-resolved

方法二:不推荐
1.修改 /etc/resolv.conf(不建议,这是系统生成的文件,ipsec restart之后就恢复原状了),确保新加的两行在nameserver 127.0.0.53之前,先于其执行

nameserver 8.8.8.8 #这是新加的两行之一
nameserver 8.8.4.4 #这是新加的两行之二
nameserver 127.0.0.53
options edns0 trust-ad
search .

修改完之后通过命令查看nslookup 测试dns解析

nslookup www.baidu.com

2.添加路由(注意:ipsec stop之前一定要先删除添加的路由,否则服务器通不了网,只能通过云服务器提供商提供的vnc登录方式登录.我在aliyun服务器上没这步操作。也没问题)

sudo ip route add 0.0.0.0/1 via 10.24.7.112 dev eth0 metric 50
sudo ip route add 128.0.0.0/1 via 10.24.7.112 dev eth0 metric 50
对应的删除语句为
sudo ip route del 0.0.0.0/1 via 10.24.7.112 dev eth0 metric 50
sudo ip route del 128.0.0.0/1 via 10.24.7.112 dev eth0 metric 50

ipsec stop时也需要删除/etc/resolv.conf中新加的下面两行

nameserver 8.8.8.8 #这是新加的两行之一
nameserver 8.8.4.4 #这是新加的两行之二

在这里插入图片描述
目的二:客户端通过3proxy代理,访问gg等。而本机并不访问外部网络

  1. 3proxy里配置如下:

重要说明:external后地址须与strongswan生成的保持一致,否则通过3proxy访问不了,图上的说明错误,事实证明固定IP这种行不通。

在这里插入图片描述
2. 删除优先级为220的路由规则(strongswan生成的)

root@iZuf6hu0jwys1fu9mrwfktZ:/etc# ip rule list

在这里插入图片描述

ip rule del priority 220
  1. 增加三个路由规则,使其被220路由表命中,将对应的源IP改成ipsec隧道对应的地址,然后流量就通过ipsec隧道,进而访问外网(如果要删除这些规则的话,只需将add改成del再执行就可)
root@iZuf6hu0jwys1fu9mrwfktZ:~# ip rule add to 8.8.8.8 lookup 220 priority 200
root@iZuf6hu0jwys1fu9mrwfktZ:~# ip rule add to 8.8.4.4 lookup 220 priority 200
root@iZuf6hu0jwys1fu9mrwfktZ:~# ip rule add from 10.24.6.141 lookup 220 priority 200

执行后查看如下
在这里插入图片描述

每天8点重启ipsec服务

1.安装cron

gpt-get install -y cron

2.在/目录下(随便哪个目录)编写 restart_ipsec.sh

ipsec restart
sleep 8
ipsec up hk2

3.赋给执行权限

chmod +x restart_ipsec.sh

4.将当前用户的 crontab 列表 和 一条新的定时任务 合并,然后重新写入 crontab

(crontab -l 2>/dev/null; echo "0 8 * * * /restart_ipsec.sh >> /var/log/ipsec_cron.log 2>&1") | crontab -

5.启动cron

service cron start

6.查看cron是否启动

ps aux | grep cron
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐