Sto scavando nella fonte di Darwin per cercare di trovare un modo per creare interfacce Ethernet virtuale su Mac / Darwin senza aggiungere un'estensione del kernel come tuntaposx. In tal modo ho trovato qualcosa di interessante che sembra esistere ma ha zero documentazione.
Ecco il file sorgente:
La lettura del file mi porta a pensare che questo è simile a una coppia veth su Linux: crea due interfacce e pacchetti che vanno in un pop fuori dall'altra.
L'unico problema è che posso trovare niente su Internet a riguardo.
Sono stato in grado di confermare che esiste da OSX Mojave e presumo che esistano anche nelle versioni precedenti:
# ifconfig feth0 create
feth0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 66:65:74:68:00:00
peer: <none>
media: autoselect
status: inactive
Dopo averne guardati altri mi sembra di aver trovato un'opzione non documentata in ifconfig per collegare due di questi:
# ifconfig feth0 peer feth1
# ifconfig feth0
feth0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 66:65:74:68:00:00
inet 9.9.9.9 netmask 0xffffff00 broadcast 9.9.9.255
peer: feth1
media: autoselect
status: active
Ora quando aggiungo un IP a feth0 e tcpdump feth1, vedo un mucchio di pacchetti che sono cose come annunci mDNS che ci si aspetterebbe che un Mac si diffonda in un nuovo collegamento Ethernet.
Sto postando questo qui perché sono curioso di sapere se qualcun altro ha qualche idea su questo o l'ha mai usato.
Modifica: ora posso confermare che se li colleghi e li porti entrambi in su (ifconfig feth0 up, ecc.) puoi iniettare pacchetti su entrambi i lati e vederli nell'altro. Sembra che in questo modo possa funzionare come dispositivo di tocco Ethernet di livello 2 o dispositivo di virtual veth pair senza richiedere un'estensione del kernel. Non solo è fantastico per la virtualizzazione di rete, ma abbinato alle estensioni di virtualizzazione di Apple, consente anche un host di macchine virtuali senza kext con funzionalità di rete complete.
Edit # 2: Abbiamo anche trovato questo, che non è molto ben documentato, anche se molto meglio di feth. Potrebbe offrire un modo più ufficialmente supportato di creare dispositivi Ethernet virtuali. Dovremo vedere come funziona. Il materiale feth è comunque interessante!