岱岳之上的天 发表于 2024-1-5 15:38:15

教你在debian上用五分钟搭建好 openconnect server

这篇文章的主要内容是,让你用最短的时间让你在debian系统的服务器上搭建好openconnect server,以供openconnect或者anyconnect客户端连接(黑莓手机、只能登录中国大陆AppleID的账号的IPhone对此是刚需):

具体方法:

第一步:使用apt安装所需的软件包

[*]apt-get install iptables-persistent ocserv复制代码

第二步:修改配置文件

首先,需要修改 /etc/sysctl.conf,以用于开启IP转发。(对于扶墙服务器而言,这是必要的。确保以下内容存在于文件中,若不存在将以下内容添加到配置文件末尾即可)

[*]net.ipv4.ip_forward = 1
[*]net.ipv4.ip_forward_update_priority = 0
[*]net.ipv4.ip_forward_use_pmtu = 1
[*]net.ipv6.conf.all.forwarding = 1复制代码

然后,继续需要修改 /etc/ocserv/ocserv.conf,以用于设置服务器基本配置参数。(这是必要的,以下贴出的配置文件中的信息可以按需修改,再编辑文件之前,建议将原始文件备份,以用作参考)

[*]# openconnect server user
[*]run-as-user = ocserv
[*]run-as-group = ocserv
[*]
[*]# require file while server run
[*]socket-file = /run/ocserv-socket
[*]chroot-dir = /var/lib/ocserv
[*]
[*]# isolate sub proccess control
[*]isolate-workers = true
[*]
[*]# net interface for server
[*]device = op
[*]
[*]# mtu size for server
[*]mtu = 1480
[*]
[*]# log level
[*]log-level = 1
[*]
[*]# auth method
[*]auth = "plain"
[*]
[*]# maximum users allowed connect
[*]max-clients = 10
[*]
[*]# maximum client allowed connect for per user
[*]max-same-clients = 5
[*]
[*]# server listen address (default is all)
[*]# listen-host =
[*]
[*]# server listen ports (default is 443, but can modified)
[*]tcp-port = 443
[*]udp-port = 443
[*]
[*]# mtu auto discovery for per tunnel
[*]try-mtu-discovery = true
[*]
[*]# user certificate type
[*]# cert-user-oid = 2.5.4.3
[*]
[*]# certificate and private key for server
[*]server-cert = /etc/ocserv/server.pem
[*]server-key = /etc/ocserv/server.key
[*]
[*]# dns while clients connected use
[*]dns = 8.8.8.8
[*]dns = 9.9.9.9
[*]tunnel-all-dns = true
[*]
[*]# route option (set it to default as a gateway)
[*]#route = 192.168.1.0/255.255.255.0
[*]route = default
[*]
[*]# enable cisco anyconnect compatible
[*]cisco-client-compat = true
[*]
[*]# keep alive interval
[*]keepalive = 32400
[*]dpd = 60
[*]mobile-dpd = 120
[*]
[*]# other option
[*]output-buffer = 0
[*]rate-limit-ms = 0
[*]
[*]# access control
[*]restrict-user-to-routes = false
[*]restrict-user-to-ports = ""
[*]
[*]# disconnected idle time
[*]# idle-timeout = 1200
[*]# mobile-idle-timeout = 1800
[*]
[*]# dtls protocol control
[*]dtls-legacy = true
[*]switch-to-tcp-timeout = 30
[*]tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.2"
[*]
[*]# compression control
[*]compression = true
[*]no-compress-limit = 0
[*]
[*]# speed limit by per client
[*]rx-data-per-sec = 0
[*]tx-data-per-sec = 0
[*]
[*]# client auth control
[*]auth-timeout = 240
[*]min-reauth-time = 300
[*]max-ban-score = 80
[*]ban-reset-time = 1200
[*]
[*]# client status control
[*]cookie-timeout = 600
[*]rekey-time = 172800
[*]deny-roaming = false
[*]use-occtl = true
[*]
[*]# internal network settings
[*]ipv4-network = 10.255.255.0/24
[*]ipv6-network = fd09::/80
[*]ipv6-subnet-prefix = 128
[*]client-bypass-protocol = false
[*]predictable-ips = true
[*]ping-leases = true
[*]net-priority = 3复制代码

第三步:签发自签名SSL证书、设置相应的iptables转发规则

首先,运行以下命令来签发一个自签名SSL证书。(命令运行后会提示填写相应信息,按照自己的需要按需填写即可,若未修改上述配置文件中的SSL证书私钥保存路径,则应将生成的文件放置在 /etc/ocserv 下)

[*]openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout server.key -out server.pem复制代码

之后,为了确保客户端连接后能正常访问互联网,我们需要设置相应的规则以用作开启NAT转发。

[*]# 这几句话的意思是,允许相应网段的流量经过机器转发,如果不正确配置此规则,则客户端到公网的UDP连接是不通的
[*]iptables -I FORWARD -s 10.255.255.0/24 -j ACCEPT
[*]iptables -I FORWARD -d 10.255.255.0/24 -j ACCEPT
[*]ip6tables -I FORWARD -s fd09::/80 -j ACCEPT
[*]ip6tables -I FORWARD -d fd09::/80 -j ACCEPT
[*]# 这几句话的意思是,对于来源于扶墙服务器的网段的流量,NAT之后再到公网
[*]iptables -A POSTROUTING -s 10.255.255.0/24 ! -o op+ -j MASQUERADE
[*]ip6tables -A POSTROUTING -s fd09::/80 ! -o op+ -j MASQUERADE复制代码

设置完成规则后,需要将其保存到配置文件中才能永久生效,以下是具体方法(若服务器原本已经存在相应的配置文件,则此类方法可能不适用,请考虑将上述规则转换后直接写入配置文件)

[*]iptables-save >> /etc/iptables/rules.v4
[*]ip6tables-save >> /etc/iptables/rules.v6复制代码

第四步:添加用户

如果没有修改配置文件中用户验证的方法的话,默认是需要手动添加用户的,此时就需要添加用户到指定的配置文件中。(格式为 ocpasswd -c /etc/ocserv/ocpasswd 用户名,运行命令后会提示给相应的用户设置一个密码,若以后需要删除相应用户的话,直接修改对应的文件,删除相应行即可)

[*]ocpasswd -c /etc/ocserv/ocpasswdboss复制代码

第五步:开启相应端口

若服务器本身存在防火墙白名单规则的话,则需要按需开放防火墙端口,以下是对于iptables而言的方法。

[*]iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT
[*]iptables -I INPUT -p udp --dport 端口号 -j ACCEPT复制代码

第六步:重启服务器

完成上述步骤后,就可以使用openconnect或者anyconnect客户端测试是否能正常连接了。

可选步骤: 若能将服务器端的ocserv版本升级到1.2.1以上的话,还可以开启入口伪装功能,以让外界更难发现这是一个扶墙服务器,若可以确认版本在此之上,只需要向配置文件添加以下内容到末尾,就可以开启伪装功能。(开启此功能后 客户端只能通过 https //SERVER/?secret 的方式连接到服务器)

[*]# camouflage
[*]camouflage = true
[*]camouflage_secret = "dark"
[*]camouflage_realm = "router admin panel"复制代码

常见疑问:

1.为什么搭建的服务连接速度特别慢?
这一般是由于客户端到服务器的网络质量不好导致的。若确认不是网络质量导致的问题,则可以通过修改配置文件的方式,将传输压缩功能关闭就可以了。

2.我想要在iphone上连接,但是它登录的是中国大陆的appleid,我应该怎么做?
只需要在大陆区应用商店下载安装cisco anyconnect客户端,然后填写相应信息连接即可。

3.我在河南省,这个方法在我这不可用怎么办?
不要尝试使用域名的方式连接,直接填写服务器IP连接就可以了。(若开启了伪装功能则将URL中的地址替换为服务器本身的IP地址就可以了)
页: [1]
查看完整版本: 教你在debian上用五分钟搭建好 openconnect server