「Ocserv」:修訂間差異
跳至導覽
跳至搜尋
(未顯示同一使用者於中間所作的 3 次修訂) | |||
第3行: | 第3行: | ||
== 安裝 == | == 安裝 == | ||
在[[Ubuntu]]上可以這樣安裝。 | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt install -y ocserv; sudo apt clean | sudo apt install -y ocserv; sudo apt clean | ||
</syntaxhighlight> | </syntaxhighlight> | ||
要注意的是Ubuntu 22.04內建的ocserv目前有不少問題(像是TLS 1.3連線的處理)。 | |||
== 設定 == | == 設定 == | ||
第29行: | 第33行: | ||
dpd = 90 | dpd = 90 | ||
mobile-dpd = 1800 | mobile-dpd = 1800 | ||
try-mtu-discovery = | try-mtu-discovery = true | ||
cert-user-oid = 0.9.2342.19200300.100.1.1 | cert-user-oid = 0.9.2342.19200300.100.1.1 | ||
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0" | tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0" | ||
第61行: | 第65行: | ||
其中: | 其中: | ||
* 認證的部份是透過<code>pam</code>,需要另外往後裝對應的套件。 | |||
* <code>route</code>設為<code>default</code>表示全部,或是逐條設定想要導入的路由。 | * <code>route</code>設為<code>default</code>表示全部,或是逐條設定想要導入的路由。 | ||
* <code>split-dns</code>主要用在內部網段(外部無法查詢的),不一定會用到。 | * <code>split-dns</code>主要用在內部網段(外部無法查詢的),不一定會用到。 | ||
=== NAT === | |||
上面的例子中我們需要將<code>192.168.254.0/25</code>設定NAT: | |||
<syntaxhighlight lang="bash"> | |||
sudo iptables -t nat -A POSTROUTING -s 192.168.254.0/25 -o ens5 -j MASQUERADE | |||
</syntaxhighlight> | |||
然後用iptables-persistent套件提供的指令存入: | |||
<syntaxhighlight lang="bash"> | |||
sudo iptables-save | sudo tee /etc/iptables/rules.v4 | |||
</syntaxhighlight> | |||
=== 效率 === | === 效率 === |
於 2024年1月11日 (四) 17:32 的最新修訂
ocserv是一套支援Cisco AnyConnect協定的VPN伺服器軟體。
安裝
在Ubuntu上可以這樣安裝。
sudo apt install -y ocserv; sudo apt clean
要注意的是Ubuntu 22.04內建的ocserv目前有不少問題(像是TLS 1.3連線的處理)。
設定
安裝完後,在/etc/oserv/ocserv.conf
內設定:
#
auth = "pam"
tcp-port = 8443
udp-port = 8443
run-as-user = nobody
run-as-group = daemon
socket-file = /var/run/ocserv-socket
server-cert = /etc/dehydrated/certs/vpn.example.com/fullchain.pem
server-key = /etc/dehydrated/certs/vpn.example.com/privkey.pem
ca-cert = /etc/ssl/certs/ca-certificates.crt
isolate-workers = true
max-clients = 120
max-same-clients = 32
keepalive = 32400
dpd = 90
mobile-dpd = 1800
try-mtu-discovery = true
cert-user-oid = 0.9.2342.19200300.100.1.1
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0"
auth-timeout = 240
min-reauth-time = 3
max-ban-score = 50
ban-reset-time = 300
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-utmp = true
use-occtl = true
pid-file = /var/run/ocserv.pid
device = vpns
predictable-ips = true
default-domain = example.com
ipv4-network = 192.168.254.0
ipv4-netmask = 255.255.255.128
ipv6-network = fda9:4efe:7e3b:03ea::/48
dns = 8.8.8.8
split-dns = example.com
split-dns = example.net
ping-leases = false
route = 10.10.0.0/16
route = 10.20.0.0/16
cisco-client-compat = true
dtls-legacy = true
其中:
- 認證的部份是透過
pam
,需要另外往後裝對應的套件。 route
設為default
表示全部,或是逐條設定想要導入的路由。split-dns
主要用在內部網段(外部無法查詢的),不一定會用到。
NAT
上面的例子中我們需要將192.168.254.0/25
設定NAT:
sudo iptables -t nat -A POSTROUTING -s 192.168.254.0/25 -o ens5 -j MASQUERADE
然後用iptables-persistent套件提供的指令存入:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
效率
另外,Ubuntu預設的systemd設定會使得DTLS(UDP)無法使用,只能使用TLS(TCP)而導致傳輸效率不佳,所以要修正:
sudo sed -i -E -e 's/^(Requires=ocserv.socket)/#\1/' -e 's/^(Also=ocserv.socket)/#\1/' /lib/systemd/system/ocserv.service; sudo systemctl stop ocserv; sudo systemctl disable ocserv.service; sudo systemctl disable ocserv.socket; sudo systemctl daemon-reload; sudo systemctl start ocserv; sudo systemctl enable ocserv
外部連結
- 官方網站 (英文)