読者です 読者をやめる 読者になる 読者になる

labunix's blog

labunixのラボUnix

FortigateのVirtual IPのSNAT動作を確認するついでにCisco892JのACLを編集する。

■FortigateのVirtual IPのSNAT動作を確認するついでにCisco892JのACLを編集する。
 FortigateのバーチャルIPを使用すると、SNAT用にIPプールを使用する必要が無い。

 FortigateのInternal->DMZのDNATを試してみる。
 http://labunix.hateblo.jp/entry/20150624/1435073124

■バージョン情報

#show version | include Cisco 89
Cisco 892 (MPC8300) processor (revision 1.0) with 498688K/25600K bytes of memory.

# get system status | grep ^Ver
Version: FortiGate-60C v5.2.3,build0670,150318 (GA)

■FortigateのCiscoへのtelnetアクセス方法はDNAT。

# show | grep -f VDMZ_DNAT
config firewall vip
    edit "VDMZ_DNAT" <---
        set extip 172.31.31.250
        set extintf "internal"
        set mappedip "192.168.102.254"
    next
end
config firewall policy
    edit 3
        set srcintf "internal"
        set dstintf "dmz"
        set srcaddr "all"
        set dstaddr "VDMZ_DNAT" <---
        set action accept
        set schedule "always"
        set service "ALL_TCP"
        set nat enable
    next
end

■CiscoのACLの確認

#show running-config | section interface GigabitEthernet0
interface GigabitEthernet0
 ip address 192.168.102.254 255.255.255.0
 ip access-group 199 in
 ip access-group 199 out
 duplex auto
 speed auto

#show access-lists 199
Extended IP access list 199
    10 permit tcp any any eq telnet log (53 matches) (tag = telnet_log)
    20 permit tcp any eq telnet any log (tag = telnet_log)

#show ip access-lists 199
Extended IP access list 199
    10 permit tcp any any eq telnet log (90 matches) (tag = telnet_log)
    20 permit tcp any eq telnet any log (tag = telnet_log)

■コンソールには以下のようなログが出る。

.Jul  4 16:54:57.019: %SEC-6-IPACCESSLOGP: list 199 permitted tcp \
  192.168.102.250(40509) -> 192.168.102.254(23), 1 packet  [telnet_log]

■ソースIPはFortigateのDMZ IPでは無く、バーチャルIPの「mappedip」。
 「NAT有効」を「ON」にして、「送信インタフェースのアドレスを使用」を選択している。

# show firewall vip VDMZ_DNAT
config firewall vip
    edit "VDMZ_DNAT"
        set extip 172.31.31.250
        set extintf "internal"
        set mappedip "192.168.102.254"
    next
end

# show system interface dmz
config system interface
    edit "dmz"
        set vdom "root"
        set ip 192.168.102.252 255.255.255.0
        set allowaccess ping
        set type physical
        set snmp-index 1
    next
end

■以下のようにIPプールでVDMZ_SNATを作成しても、
 送信元インターフェイスIPではなく、VIPのmappedipを使う。
 VIPを使う場合、NAT有効にするだけでIPプールの設定は不要です。

.Jul  4 17:13:56.155: %SEC-6-IPACCESSLOGP: list 199 permitted \
  tcp 192.168.102.250(40514) -> 192.168.102.254(23), 1 packet  [telnet_log]

# show | grep -f VDMZ_[SD]NAT
config firewall ippool
    edit "VDMZ_SNAT" <---
        set startip 192.168.102.250
        set endip 192.168.102.250
    next
end
config firewall vip
    edit "VDMZ_DNAT" <---
        set extip 172.31.31.250
        set extintf "internal"
        set mappedip "192.168.102.254"
    next
end
config firewall policy
    edit 3
        set srcintf "internal"
        set dstintf "dmz"
        set srcaddr "all"
        set dstaddr "VDMZ_DNAT" <---
        set action accept
        set schedule "always"
        set service "ALL_TCP"
        set nat enable
        set ippool enable
        set poolname "VDMZ_SNAT" <---
    next
end

■Cisco側のACLでは以下の最終行だけ気にすれば良い。

[VIPのみ]
   172.31.31.254[Client]           -> 172.31.31.252[internal]
-> 172.31.31.250[VIP extip]        -> 192.168.102.252[DMZ]
-> 192.168.102.250[SNAT(mappedip)] -> 192.168.102.254[VIP/Cisco]

[VIP+IPプール]
   172.31.31.254[Client]           -> 172.31.31.252[internal]
-> 172.31.31.250[VIP extip]        -> 192.168.102.252[DMZ]
-> 192.168.102.250[SNAT(ippool)]   -> 192.168.102.254[VIP/Cisco]

■Cisco ACLの編集
 入力方向だけなら「10」だけで良い。
 コンフィグモードで「show」コマンドを使うには「do」を使う。
 挿入なら例えば「10」と「20」の間の「15」などの番号を使う。

(config)#do show access-lists 199
Extended IP access list 199
    10 permit tcp any any eq telnet log (1151 matches) (tag = telnet_log)
    20 permit tcp any eq telnet any log (tag = telnet_log)
(config)#ip access-list extended 199
(config-ext-nacl)#no 20
#do show ip access-lists 199
Extended IP access list 199
    10 permit tcp any any eq telnet log (1192 matches) (tag = telnet_log)
(config-ext-nacl)#no 10
(config-ext-nacl)#do show ip access-lists 199
(config-ext-nacl)#10 permit tcp any any eq telnet
#do show ip access-lists 199
Extended IP access list 199
    10 permit tcp any any eq telnet
(config-ext-nacl)#end

#show ip access-lists 199
Extended IP access list 199
    10 permit tcp any any eq telnet (33 matches)