Задача: Есть rtls1 c ip 10.0.10.14 и rge0 с ip 192.168.1.16. Надо дать возможность компам из сети 10.0.0.0/8 иметь возможность выхода в 192.168.1.0/24.
Решение:
1. Заполнение конфигов IPfilter
$ cat /etc/ipf/ipf.conf
pass in log on rtls1 all
pass out log on rtls1 all
$cat /etc/ipf/ipnat.conf
map rge0 10.0.0.0/8 -> 0/32 proxy port ftp ftp/tcp
map rge0 10.0.0.0/8 -> 0/32 portmap tcp/udp auto
map rge0 10.0.0.0/8 -> 0/32
$ cat /etc/ipf/pfil.ap
rtls -1 0 pfil
2. Включить ipv4-forwarding
pfexec routeadm -u -e ipv4-forwarding
3. Запустить или перезапустить службу ipfilter.
pfexec svcadm enable svc:/network/ipfilter:default
NAT должен работать. Для просмотра активных правил:
pfexec ipnat -l
Удаление сессий
pfexec ipnat -F
Удаление правил
pfexec ipnat -C
Загрузка правил
pfexec ipnat -f /etc/ipf/ipnat.conf
Побочный эффект: с этими настройками перестают работать линуксовые зоны (комп зависает и перезагружается после нескольких пингов яндекса из зоны)
При этом содержимое /var/adm/messages
Aug 31 09:10:03 opensolaris unix: [ID 836849 kern.notice]
Aug 31 09:10:03 opensolaris ^Mpanic[cpu0]/thread=ffffff0008300c60:
Aug 31 09:10:03 opensolaris genunix: [ID 335743 kern.notice] BAD TRAP: type=e (#pf Page fault) rp=ffffff0008300840 addr=46 occurred in module "ip" due to a NULL pointer dereference
Aug 31 09:10:03 opensolaris unix: [ID 100000 kern.notice]
Aug 31 09:10:03 opensolaris unix: [ID 839527 kern.notice] sched:
Aug 31 09:10:03 opensolaris unix: [ID 753105 kern.notice] #pf Page fault
Aug 31 09:10:03 opensolaris unix: [ID 532287 kern.notice] Bad kernel fault at addr=0x46
Aug 31 09:10:03 opensolaris unix: [ID 243837 kern.notice] pid=0, pc=0xfffffffff7a78c11, sp=0xffffff0008300930, eflags=0x10286
Aug 31 09:10:03 opensolaris unix: [ID 211416 kern.notice] cr0: 8005003b<pg,wp,ne,et,ts,mp,pe> cr4: 6f8<xmme,fxsr,pge,mce,pae,pse,de>
Aug 31 09:10:03 opensolaris unix: [ID 624947 kern.notice] cr2: 46
Aug 31 09:10:03 opensolaris unix: [ID 625075 kern.notice] cr3: 4400000
Aug 31 09:10:03 opensolaris unix: [ID 625715 kern.notice] cr8: c
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] rdi: ffffff01ceeb0c98 rsi: 1 rdx: 0
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] rcx: ffffff0008300c60 r8: ffffff01e333b620 r9: 1
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] rax: 0 rbx: 194905b rbp: ffffff0008300a50
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] r10: ffffff01cf10f000 r11: 0 r12: 0
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] r13: ffffff01cd3d2000 r14: ffffff01e3511e7e r15: ffffff01cb5593e8
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] fsb: 0 gsb: fffffffffbc2e070 ds: 38
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] es: 0 fs: 0 gs: 0
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] trp: e err: 0 rip: fffffffff7a78c11
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice] cs: 30 rfl: 10286 rsp: ffffff0008300930
Aug 31 09:10:03 opensolaris unix: [ID 266532 kern.notice] ss: 38
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300720 unix:die+dd ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300830 unix:trap+1752 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300840 unix:cmntrap+e9 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300a50 ip:ip_fast_forward+c9 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300b70 ip:ip_input+600 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300be0 mac:mac_rx_soft_ring_drain+df ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300c40 mac:mac_soft_ring_worker+111 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300c50 unix:thread_start+8 ()
Aug 31 09:10:03 opensolaris unix: [ID 100000 kern.notice]
Aug 31 09:10:03 opensolaris genunix: [ID 672855 kern.notice] syncing file systems...
Aug 31 09:10:03 opensolaris genunix: [ID 904073 kern.notice] done
Aug 31 09:10:04 opensolaris genunix: [ID 111219 kern.notice] dumping to /dev/zvol/dsk/rpool/dump, offset 65536, content: kernel
Aug 31 09:10:14 opensolaris genunix: [ID 409368 kern.notice] ^M100% done: 129249 pages dumped, compression ratio 3.53,
Aug 31 09:10:14 opensolaris genunix: [ID 851671 kern.notice] dump succeeded