web-dev-qa-db-ja.com

転送されたipsecトンネルを介してトラフィックをルーティングします

おそらく誰かが私を啓発することができます...私はIPTablesに問題があると思いますが、もうわかりません...

PfSenseサーバーとstrongswanを備えた仮想マシンの間にIPSECサイト2サイトトンネルがあります。 iptablesを使用して、仮想マシンが実行されているホストから仮想マシンにトラフィックを転送しています

iptableルール:

iptables -t nat -A POSTROUTING -m policy --pol ipsec --dir out -j ACCEPT<br/>
iptables -t nat -A PREROUTING -i eno1 -p udp -d externalip --dport 500 -j DNAT --to-destination 10.49.10.35<br/>
iptables -t nat -A PREROUTING -i eno1 -p udp -d externalip --dport 4500 -j DNAT --to-destination 10.49.10.35<br/>
iptables -A FORWARD -p udp -d 10.49.10.35 --dport 500 -j ACCEPT<br/>
iptables -A FORWARD -p udp -d 10.49.10.35 --dport 4500 -j ACCEPT<br/>
iptables -t nat -A POSTROUTING -p udp -s 10.49.10.35 --sport 500 -j SNAT --to-source externalip<br/>
iptables -t nat -A POSTROUTING -p udp -s 10.49.10.35 --sport 4500 -j SNAT --to-source <externalip>

IPSECトンネルは正しくセットアップされています(私はそう思います)。接続すると、pfsenseマシンとVM)に内部IPを使用してIPSecエンドポイントとpingを実行できるためです。

PfsenseマシンからVMへ:

ping -S 10.130.20.1 10.49.30.35
PING 10.49.30.35 (10.49.30.35) from 10.130.20.1: 56 data bytes
64 bytes from 10.49.30.35: icmp_seq=0 ttl=64 time=12.248 ms
64 bytes from 10.49.30.35: icmp_seq=1 ttl=64 time=12.265 ms
64 bytes from 10.49.30.35: icmp_seq=2 ttl=64 time=12.327 ms
64 bytes from 10.49.30.35: icmp_seq=3 ttl=64 time=12.286 ms

IPSECからVMからpfSenseへ

PING 10.130.20.1 (10.130.20.1) 56(84) bytes of data.
64 bytes from 10.130.20.1: icmp_seq=1 ttl=64 time=12.2 ms
64 bytes from 10.130.20.1: icmp_seq=2 ttl=64 time=12.2 ms
64 bytes from 10.130.20.1: icmp_seq=3 ttl=64 time=12.1 ms
64 bytes from 10.130.20.1: icmp_seq=4 ttl=64 time=12.1 ms

これですべて問題ないように見えますが、IPSecVMpingなどの背後にあるセットアップで追加のマシンに入るともう不可能です。
IPSecVMにnet.ipv4.ip_forward = 1を設定しました。

だから今、私が新しいテストマシン(10.49.10.36)にpfsenseからpingを実行すると

ping -S 10.130.20.1 10.49.30.36
PING 10.49.30.36 (10.49.30.36) from 10.130.20.1: 56 data bytes
^C
--- 10.49.30.36 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

テストマシンでtcpdump -i ens19 Host 10.130.20.1を実行すると、トラフィックが着信しているのがわかりますが、応答が返されません。

12:48:03.432489 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 0, length 64
12:48:04.434735 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 1, length 64
12:48:05.435699 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 2, length 64
12:48:06.443736 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 3, length 64
12:48:07.454943 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 4, length 64

ルーティングに関するものだと思っていたよりも、testvmにルートを追加しました。

route add -net 10.130.20.0/24 gw 10.49.10.35

しかし、それでもトラフィックは送り返されていません...

Iptablesと関係があると思う理由は、strongswanがVM)ではなくホストマシン上で直接実行され、すべてが機能する同様の設定があるためです。

愚かなことを忘れているだけかもしれませんが、数日考えた後、もう見えなくなりました。

うまくいけば、誰かが私を助けることができます。

1
Rex de Koning

間違ったインターフェースを介してトラフィックをルーティングしていたことが判明しました。私はしばらくそれを機能させようとしていました、そしてあなたは最も愚かなことを見落とします。しばらく戻って状況を描いてみたところ、気づきました。コメントをくれたecdaに感謝します

0
Rex de Koning