Puncte:1

StrongSwan swanctl/xfrm: Cum să mascați traficul tunelat?

drapel cn
  • Ubuntu 20.04LTS
  • strong Swanctl 5.8.2
  • Linux 5.8.0-1035-gcp

Încerc să configurez un VPN IKEv2 „roadwarrior” care amână autentificarea razei către serverul nostru din amonte. Vestea bună este că eu poate sa faceți clienții să se conecteze și să treacă auth. RADIUS. Dar, am încercat aproximativ un milion de lucruri, dar eu nu poti obțineți pachete de trimis. Văd trafic care sosește în tunel, dar nu va ieși NAT. Observați încercările mele de a în scriptul updown de a încerca să NAT trafic fără niciun rezultat (comentat în prezent).

Iată configurația:

sudo tee /etc/strongswan.d/charon-systemd.conf << „EOF”
charon-systemd {
# install_virtual_ip=nu
# install_routes=0
  load=random nonce aes sha1 sha2 hmac pem pkcs1 x509 revocation curve25519 gmp curl kernel-netlink socket-default updown vici eap-radius eap-identity
  jurnal {
   # Loglevel pentru un anumit subsistem.
   # <subsistem> = <implicit>
   # Nivel de jurnal implicit.
   implicit=2
   enc=1
   asn=1
  }

  pluginuri {
    eap-radius {
      servere {
        primar {
          adresa=10.128.0.13
          secret=super-duper-secret
          auth_port=21812
        }
      }
    }
  }
}
EOF

sudo tee /etc/swanctl/conf.d/vpn.conf << „EOF”
conexiuni {
  rw-eap {
    versiune=2
    propuneri=aes128gcm16-sha256-modp2048
    adrese_locale=10.128.0.14
    send_cert=intotdeauna
    pools=dhcp_ipv4
    local {
      auth=pubkey
      certs=vpn.pem
      id=vpn.xxx.com
    }
    la distanta {
      auth=eap-radius
      id=*
    }
    copii {
      net {
        local_ts=0.0.0.0/0
        remote_ts=172.16.20.64/26
        if_id_in=%unic
        if_id_out=%unic
        mark_in=%unic
        mark_out=%unic
        updown=/usr/local/bin/rw-updown.sh
        esp_proposals=aes128gcm16-sha256-modp2048
      }
    }
  }
}
piscine {
  dhcp_ipv4 {
    adrese=172.16.20.64/26
    dns=10.128.0.9
  }
}
EOF

tee /usr/local/bin/rw-updown.sh << „EOF”
#!/bin/bash

set -o substantiv
set -o errexit

XFRM_IF="xfrm${PLUTO_UNIQUEID}"

cazul „${PLUTO_VERB}” în
    up-client)
        logger -t „vpn rw-updown” ${PLUTO_VERB} ${PLUTO_UNIQUEID} ${XFRM_IF} ${PLUTO_ME} ${PLUTO_PEER} ${PLUTO_MARK_OUT%%/*} ${PLUTO_PEER_SOURCEIP}
        ip link add ${XFRM_IF} tip xfrm dev ens4 if_id ${PLUTO_UNIQUEID}
        linkul ip a setat ${XFRM_IF}
# iptables -A FORWARD --in-interface ${XFRM_IF} -j ACCEPT
# iptables --table nat -A POSTROUTING --out-interface ens4 -j MASQUERADE
        ;;
    client în jos)
# iptables -D FORWARD --in-interface ${XFRM_IF} -j ACCEPT
# iptables --table nat -D POSTROUTING --out-interface ens4 -j MASQUERADE
        link ip del ${XFRM_IF}
        ;;
esac
EOF
chmod +x /usr/local/bin/rw-updown.sh

Deci, după ce un client se conectează, vedem interfața creată:

root@vpn-iowa:~# politica ip xfrm 
src 0.0.0.0/0 dst 172.16.20.64/26 
    dir out prioritate 386687 
    marca 0x2/0xffffffff 
    tmpl src 10.128.0.14 dst 173.197.16.118
        proto esp spi 0x08547b23 reqid 2 mod tunel
    if_id 0x2
src 172.16.20.64/26 dst 0.0.0.0/0 
    dir fwd prioritate 386687 
    marca 0x2/0xffffffff 
    tmpl src 173.197.16.118 dst 10.128.0.14
        proto esp reqid 2 mod tunel
    if_id 0x2
src 172.16.20.64/26 dst 0.0.0.0/0 
    dir cu prioritate 386687 
    marca 0x2/0xffffffff 
    tmpl src 173.197.16.118 dst 10.128.0.14
        proto esp reqid 2 mod tunel
    if_id 0x2
src 0.0.0.0/0 dst 0.0.0.0/0 
    priza cu prioritate 0 
src 0.0.0.0/0 dst 0.0.0.0/0 
    prioritatea prizei 0 
src 0.0.0.0/0 dst 0.0.0.0/0 
    priza cu prioritate 0

... Mai mult

Și rulează constant ping 1.1.1.1 pe client determină sosirea traficului Pachete RX 246:

root@vpn-iowa:~# ifconfig
ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460
        inet 10.128.0.14 netmask 255.255.255.255 difuzare 0.0.0.0
        inet6 fe80::4001:aff:fe80:e prefixlen 64 scopeid 0x20<link>
        ether 42:01:0a:80:00:0e txqueuelen 1000 (Ethernet)
        Pachete RX 2668 octeți 444824 (444,8 KB)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 1907 octeți 586712 (586,7 KB)
        Erori TX 0 a scăzut 0 depășiri 0 purtător 0 coliziuni 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet6 ::1 prefixlen 128 scopeid 0x10<gazdă>
        loop txqueuelen 1000 (Loopback local)
        Pachete RX 140 octeți 13208 (13,2 KB)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 140 octeți 13208 (13,2 KB)
        Erori TX 0 a scăzut 0 depășiri 0 purtător 0 coliziuni 0

xfrm2: flags=193<UP,RUNNING,NOARP> mtu 1500
        inet6 fe80::85d9:2aa5:841:803f prefixlen 64 scopeid 0x20<link>
        nespecificat 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
        Pachete RX 246 octeți 18819 (18,8 KB)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 0 octeți 0 (0,0 B)
        Erori TX 0 a scăzut 0 depășiri 0 purtător 0 coliziuni 0

Îți voi fi pentru totdeauna dator dacă mă poți ajuta cu asta.Am citit un milion de resurse și încă nu pot să-mi dau seama. Mulțumesc!

drapel cn
De ce ați atribui ID-uri și mărci de interfață? (Acesta din urmă necesită de fapt marcarea manuală a traficului.) Ați citit pagina de pe [VPN bazat pe rută](https://wiki.strongswan.org/projects/strongswan/wiki/RouteBasedVPN) pe wiki-ul strongSwan? Și în ceea ce privește transmiterea, ați citit [această pagină wiki](https://wiki.strongswan.org/projects/strongswan/wiki/ForwardingAndSplitTunneling)?
Jonathan S. Fisher avatar
drapel cn
În primul rând, vă mulțumesc pentru timpul acordat pentru a răspunde :) Semnele au rămas de când încercam să folosesc vti în loc de xfrm. Le pot elimina, dar nu are nicio diferență. Am citit ambele pagini. Am redirecționarea IP activată în sysctl. Am încercat atât bazat pe rută, cât și bazat pe politici și nici nu reușesc să funcționeze. Prefer să am un VPN bazat pe rută, dar în acest moment am nevoie doar de _orice_ pentru a funcționa
drapel cn
Eliminați cu siguranță urmele. Veți avea nevoie de un NAT (nu este nevoie să îl instalați într-un script updown, în special dacă vă așteptați la mai mulți clienți). De asemenea, aveți nevoie de o rută către IP-ul virtual al clientului prin interfața XFRM (verificați exemplul de script VTI pe prima pagină pe care am legat-o mai sus, puteți face acest lucru în mod similar pentru interfețele XFRM). Totuși, puteți folosi o singură interfață și o singură rută (pentru întreaga subrețea `172.16.20.64/26`) și scăpați de scriptul updown (configurați ID-ul interfeței statice în configurație în loc de `%unique`).
Jonathan S. Fisher avatar
drapel cn
minunat, multumesc

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.