顯示具有 vpn 標籤的文章。 顯示所有文章
顯示具有 vpn 標籤的文章。 顯示所有文章

2025-12-27

把wireguard vpn server當跳版,連到cisco vpn server

 假設有一台wireguard vpn server,上面有vpnc (cisco vpn client)連到了其它vpn,現在希望連到這台wireguard vpn server的client,也能同時走vpnc建立的介面路由,以連到 cisco vpn 網段,以下假設vpnc 建立的是tun0,wireguard建立的是wg0 (可用route查看),那麼就照以下步驟設定:

1.修改 /etc/sysctl.conf,允許封包在網卡介面互通:
net.ipv4.ip_forward=1
修改完再sudo sysctl -p

2.修改 /etc/wireguard/wg0.conf,在 [Interface] 區段加入:

# nat forward to tun 0
PostUp = iptables -A FORWARD -i wg0 -o tun0 -j ACCEPT
PostUp = iptables -A FORWARD -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

# clear nat rules
PostDown = iptables -D FORWARD -i wg0 -o tun0 -j ACCEPT
PostDown = iptables -D FORWARD -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o tun0 -j MASQUERADE

3.重啟wiregurad服務:
sudo systemctl restart wg-quick@wg0dh2

sudo wg-quick down wg0
sudo wg-quick up wg0

如果出現以下錯誤訊息:
Failed to resolve interface "tun.wg0": No such device

那麼請完全移除resolvconf:
sudo apt purge resolvconf

4.client設定檔的 [Peer] 區段加入允許的ip網段(用route查看tun0有哪些網段):
AllowedIPs = 10.0.0.0/24, 163.1.1.0/24
或懶惰點,改為全部允許:
AllowedIPs = 0.0.0.0/0, ::/0

5. 設定vpnc的systemd自啟動(假設設定檔已寫在/etc/vpnc/default.conf):
sudo vi /etc/systemd/system/vpnc.service
===================
[Unit]
Description=Cisco Compatible VPN Client (vpnc) - default profile
After=network.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/vpnc
ExecStop=/usr/sbin/vpnc-disconnect
RemainAfterExit=yes
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
====================
sudo systemctl daemon-reload
sudo systemctl enable vpnc.service
sudo systemctl start vpnc.service

6.讓wireguard在vpnc服務後再啟動:
sudo systemctl edit wg-quick@wg0
==============
[Unit]
After=vpnc.service
Wants=vpnc.service
==============
sudo systemctl daemon-reload
sudo systemctl restart wg-quick@wg0

7. 如果不想dns設定因vpnc連線而被修改,可禁止resolvconf去修改/etc/resolv.conf:
vi /etc/resolvconf.conf
================
# 禁止自動修改DNS設定
resolvconf=no
# 忽略tun0 (vpnc)的dns設定
interface=tun*

8.vpnc的/etc/vpnc/default.conf設定

IPSec secret <group shared key>
IPSec ID <group id>
IPSec gateway <vpn server ip>
Xauth username <user name>
Xauth password <user password>
IKE DH Group <default group, e.g. dh2>
IKE Authmode psk
# prevent connection break, check every 30s
DPD idle timeout (our side) 30

2025-12-19

Ubuntu/Linux Mint 的Cisco VPN (vpnc) 無法連線,出現認證雜湊為MD5不安全

若Cisco VPN Server是舊型的,認證(authentication)的雜湊算法只支援MD5,無法升級到SHA2,那麼在較新版Cisco VPN Client(vpnc)連線時可能會出現要你加入 --enable-weak-authentication 的參數(連線時用journalctl -f可看到),

但如果你用的是NetworkManager的network-manager-vpnc 套件,而不是直接用vpnc指令去連線,那麼也無法直接對指令加參數(因GUI介面也無該選項可勾選),即便修改 /etc/vpnc/default.conf也沒用(因為network-manager-vpnc不會讀取該檔),或修改 /etc/netplan/ 下面NetworkManager的vpnc設定檔也無法加入參數(因為沒有像extra args之類的參數能加),只能靠寫一個vpnc wrapper的shell script來解決:

cd /usr/sbin
sudo mv vpnc vpnc.orig
sudo vi vpnc
==========================
!/bin/bash

# Wrapper for vpnc to enable weak auth for legacy Cisco VPNs
# Original vpnc: /usr/sbin/vpnc.orig

if [[ "$*" == *"--nolaunch" ]]; then
    # Skip if it's a check from Network Manager
    exec /usr/sbin/vpnc.orig "$@"
else
    exec /usr/sbin/vpnc.orig --enable-weak-authentication "$@"
fi
===========================
sudo chmod +x vpnc

這樣在連線Cisco VPN時,就會強制加入該 --enable-weak-authentication 參數了。

2019-01-21

Linux Mint 建立 L2TP VPN CLIENT

由於Linux Mint預設並沒有L2TP VPN CLIENT,因此需手動新增必要的 package才有辦法達成,以下以Linux Mint 19連線QNAP的L2TP VPN SERVER為例:

  1. 二選一,可使用strongswan或libreswan

    使用strongswan(建議,可支援一些舊加密協定):
    sudo apt-get install network-manager-l2tp-gnome network-manager-strongswan libstrongswan-standard-plugins libstrongswan-extra-plugins

    使用libreswan:
    sudo apt install network-manager-l2tp-gnome libreswan
  2. 重開機,於「網路連線」新增L2TP VPN設定
  3. 輸入gateway及帳號密碼後,還需要依照以下圖示設定:
    其中Phase 1 & phase 2 Algorithms依照安裝的為strongswan或libreswan有所不同:

    strongswan :
    Phase1: aes256-sha1-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1536!
    Phase 2 : aes256-sha1,aes128-sha1!

    libreswan:
    Phase1: aes256-sha1-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1536
    Phase 2 : aes256-sha1,aes128-sha1

    (3des加密目前已證實有安全性問題並被廢棄支援,大多改採用aes128或aes256)

    image.png

    QNAP或SYNOLOGY的L2TP SERVER套件通常可設定為PAP或MS-CHAPv2驗證,一般是選MS-CHAPv2較安全
  4. VPN開始連線前,可使用 sudo journalctl -f 觀看log訊息以方便除錯,連線成功後可用ipsec statusall看連線所使用的方式及資訊,像連線到qnap l2tp,會發現是使用IKEv1, aes256-sha1-modp102去連線。
  5. 若要增加 Cisco VPN,可再安裝 network-manager-vpnc-gnome
    == 2025.12 update ==
    若您的cisco vpn server還在用md5雜湊,新版的vpnc會出現以下錯誤:
Peer has selected md5 as authentication method.
This algorithm is considered too weak today.
If your vpn concentrator admin still insists on using md5,
use the "--enable-weak-authentication" option.

此時就要幫vpnc做個wrapper,強制加上--enable-weak-authentication參數:
sudo cp /usr/sbin/vpnc /usr/sbin/vpnc.orig
sudo rm /usr/sbin/vpnc
sudo vi /usr/sbin/vpnc
===================
#!/bin/bash

# Wrapper for vpnc to enable weak auth for legacy Cisco VPNs
# Original vpnc: /usr/sbin/vpnc.orig

if [[ "$*" == *"--nolaunch" ]]; then
    # Skip if it's a check from Network Manager
    exec /usr/sbin/vpnc.orig "$@"
else
    exec /usr/sbin/vpnc.orig --enable-weak-authentication "$@"
fi
==================
sudo chmod +x /usr/sbin/vpnc
sudo systemctl restart NetworkManager

ref:
https://community.ubnt.com/t5/UniFi-Routing-Switching/L2TP-VPN-on-Ubuntu-18-04-client/td-p/2492451
https://wiki.strongswan.org/projects/strongswan/wiki/IKEv2CipherSuites

2016-11-15

MAC中無法匯入或匯出Cisco IPSec VPN設定檔

之前Yosemite所匯出的Cisco IPSec VPN設定,在後來mac系統升級後就無法匯入,而且重新設定的VPN設定檔也無法匯出,

猜想是因為鑰匙圈存放的密碼無法直接匯出在設定檔的關係,跨機器匯入可能也沒法用,所以索性就不給匯出了(蘋果現在才發現這問題,搞屁)。

解法一:自個兒手動重新設定,去問問網管人員VPN SERVER, GROUP NAME, SHARED SECRET KEY吧....。

解法二:問不到網管人員,或不想問,而且很好運的你還有一台保留VPN設定的MAC,那就自個兒來吧:

(1)先把VPN SERVER(RemoteAddress), GROUP NAME(LocalIdentifier)從VPN設定記下來 (或原VPN設定檔用文字編輯器打開,也能找到)

(2)再來找出SHARED SECRET KEY,從「應用程式 / 工具 / 鑰匙圈」中,搜尋「VPN」,應該可以看到一個種類是「IPSec Shared Secret」的項目,

點二下,將「顯示密碼」打勾,就會顯示SHARED SECRET KEY的明碼,記下來。

(3)好了,有以上三個設定,可以重新設定VPN了。


當然,你也可以用別的VPN Client,以方便在不同的MAC匯入匯出,

例如Cisco自已出的 Cisco AnyConnect Secure Mobility Client

ref:
https://discussions.apple.com/thread/7305662?tstart=0
http://anders.com/guides/native-cisco-vpn-on-mac-os-x/
https://github.com/artemkin/cisco-password-decoder
http://www.cisco.com/c/en/us/support/docs/security/anyconnect-secure-mobility-client/116080-productqanda-vpnclients-00.html