web-dev-qa-db-ja.com

NAT FreeBSD11およびStrongSwanxFortiGATEでpfを使用したアウトバウンドIPSECパケット

私は1週間以上、セキュリティアソシエーションに適合するようにアウトバウンドパケットをNAT変換しようと取り組んできました。

これは私の(例の)シナリオです:

  • LAN:1.1.1.0/24
  • FreeBSDインターフェース:xn0(Amazon EC2インスタンス)
  • Natトラフィックの仮想アドレス:2.2.2.2/32
  • 到達先:3.3.3.3/32

問題の説明

私はすべてのSAをFreeBSDボックスで稼働させていますが、pfまたはipfwのいずれかを使用してパケットをNATしようとしても機能しません。NATされたパケットはデフォルトルートインターフェイスを使用して流れ続け、取得しません。 ipsecトンネルに。

次に例を示しますSA使用:

$ ipsec status vpn
vpn{1}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cca608fa_i d74355dc_o vpn{1}:  AES_CBC_256/HMAC_SHA2_256_128, 2688 bytes_i (32 pkts, 32s ago), 4992 bytes_o (32 pkts, 32s ago), rekeying in 43 minutes vpn{1}:   2.2.2.2/32 === 3.3.3.3/32

これはpf.confに関する私のnatルールです:

nat on enc0 from 1.1.1.0/24 to 2.2.2.2/32 -> 3.3.3.3

これは私のipsec0 interface statusです:

ipsec0:  flags=8011<UP,POINTOPOINT,MULTICAST> metric 0 mtu 1400     inet 3.3.3.3/32 --> 2.2.2.2/32 netmask 0xffffffff options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>     reqid: 0    groups: ipsec

3.3.3.3から2.2.2.2にスムーズに到達できます。

これは、xn0(物理インターフェイス)での単純なパケットキャプチャです。

$ tcpdump -i xn0 -n -vvv Host 2.2.2.2
1.1.1.10 > 2.2.2.2: ICMP echo request, id 15745, seq 818, length 64

enc0にはトラフィックは見られません。

もう1つの試みは、sysctlを介して設定することでした。

net.inet.ipsec.filtertunnel=1

しかし、このオプションが正確に何をするのか完全にはわかりません。

私は多くの人々がこの種のnatをうまく機能させるのに苦労しているのを見てきました。

6
Tiago Sampaio

数日苦労した後、私はこれを次の手順で行うことができ、他の人を助けるためにここに解決策を投稿します

ソースをnatしたいSAの一意のIDを取得します。例:

setkey -DP

SA一意のID:

3.3.3.3[any] 2.2.2.2[any] any
    out ipsec
    esp/tunnel/REALIPLOCAL-REALIPREMOTE/unique:1
    created: Jul 22 22:29:34 2018  lastused: Jul 22 22:29:34 2018
    lifetime: 9223372036854775807(s) validtime: 0(s)
    spid=2715 seq=0 pid=13358 scope=global
    refcnt=1

この場合:1

新しいポリシーを追加します。

setkey -v -c
spdadd -4 1.1.1.0/24 2.2.2.2/32 any -P out ipsec esp/tunnel/REALLOCALIP-REALREMOTEIP/unique:1;

これは、トンネル内でパケットをルーティングし、実際にインストールされているSA)と一致するようにパケットを変換するのに十分なはずです。

この一意のIDはインストール済みのSAと一致する必要があります。StrongSwanでSAインストールの順序を変更する場合は、このポリシーを変更して新しい一意のID。

Natルールはenc0インターフェイスに適用する必要があります。

参照:

https://github.com/opnsense/core/issues/44

幸運を。

4
Tiago Sampaio