Pour faire des tests il n’est pas nécessaire d’avoir des machines en adressage public et accessibles par tous. On va donc se créer un petit réseau en adressage privé pour pouvoir jouer.

Tout d’abord il faut créer un etherstub, un switch : dladm create-etherstub switch0

Ensuite on ajoute une interface vnic sur ce switch

dladm create-vnic -l switch0 vnic0
ifconfig vnic0 plumb
ifconfig vnic0 inet 192.168.0.1 up

On active l’ip forwarding : routeadm -u -e ipv4-forwarding

On ajoute les règles pour le NAT dans /etc/ipf/ipnat.conf :

map e1000g0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
map e1000g0 192.168.0.0/24 -> 0/32

Puis on active les règles :

ipnat -C -v -f /etc/ipf/ipnat.conf
ipnat -l

On peut créer une zone :

{
  "alias": "test1",
  "hostname": "test1",
  "brand": "joyent",
  "max_physical_memory": 256,
  "dataset_uuid": "3f57ffe8-47da-11e4-aa8b-dfb50a06586a",
  "nics": [
    {
      "nic_tag": "switch0",
      "ip": "192.168.0.2",
      "netmask": "255.255.255.0",
      "allow_ip_spoofing": "1",
      "gateway": "192.168.0.1"
    }
  ]
}

Ou bien une VM kvm :

{
  "brand": "kvm",
  "ram": "512",
  "vcpus": "1",
  "resolvers": [
      "8.8.8.8",
      "8.8.4.4"
  ],
  "nics": [
    {
      "nic_tag": "switch0",
      "model": "virtio",
      "primary": true,
      "ip": "192.168.0.4",
      "netmask": "255.255.255.0",
      "allow_ip_spoofing": "1",
      "gateway": "192.168.0.1"
    }
  ],
  "disks": [
    {
      "image_uuid": "b9c27838-1730-11e4-adbd-43d91422294f",
      "boot": true,
      "model": "virtio",
      "image_size": 10240
    }
  ],
  "customer_metadata": {
    "root_authorized_keys":
"ssh-rsa AAAAXXXX..................  }
}

L’inconvénient de cette configuration est que c’est la Zone Générale qui fait le NAT. Il serait sans doute plus simple d’avoir une zone qui fasse ce travail, en ayant une patte sur l’interface admin et l’autre sur le etherstub switch0.