web-dev-qa-db-ja.com

LinuxルーターでGRE(IPプロトコル47)を許可するNATサブネット用

以下に示すようにネットワークを設定しています: network

実行中のVPNサーバーは、GREプロトコルを使用するWindows 2012サーバーのデフォルトVPNです。イントラネットの単一IPからのみ、そのリモートVPNサーバーにVPN接続できます。しかし、イントラネットIP 172.16.14.0/24の範囲で接続できません。問題は、NATを実行しているLinuxルーターにあります。 natテーブルの私のiptableは、greプロトコルを許可するvpn接続(単一IPの場合)の場合、次のようになります。

 iptables -I PREROUTING -t nat -p 47 --src 202.xx.yy.abc  -j DNAT --to-destination 172.16.14.15
 iptables -I POSTROUTING -p 47 -t nat --src 172.16.14.15  -j SNAT --to-source 202.xx.yy.zz
 iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE 
 iptables -A INPUT -p 47 -j ACCEPT

このルールは、単一のIP 172.16.14.15で正常に機能します。これを172.16.14.0/24の範囲全体で機能させて、リモートVPNサーバーにVPN接続できるようにするにはどうすればよいですか?

2
Shyamkkhadka

私は解決策を見つけました。これは私がしました:

 sysctl -w net.netfilter.nf_conntrack_helper = 1

それから加えて

modprobe ip_nat_pptp

Ubuntu 18.04.2 LTS、カーネルバージョン4.15.0-45-genericを使用していました。 iptables PREROUTING、POSTROUTINGテーブル内でGREプロトコルに関連することを行う必要はありませんでした。 2行のすぐ上に追加するとうまくいきました。

1
Shyamkkhadka

読み込みましたかnf_nat_proto_greカーネルモジュール?そうする場合、最初の2行はおそらくもう必要ありません。

1
Tomek

GREには、UDPやTCPプロトコルなどの「ポート」の概念はありません。NATデバイスが使用できるマッピング情報は、ソースおよび/またはパケットの宛先IPアドレス。

あなたがしたいことを達成するために、あなたはあなたのWANリンクでプロビジョニングされたパブリック/ 24ネットワークを持っている必要がありますそしてそれから個々のGRE NATマッピングを作成します各パブリックIPアドレスと各内部IPアドレスの間。または、WANインターフェースでプロビジョニングされた単一のアドレスを持つことができますが、代わりにVPNプロバイダーにサービスに接続するための複数のパブリックIPv4アドレスを提供します。ある場合では、NATマッピングはGREパケットの宛先アドレスからキーオフされ、他の場合ではNATマッピングは送信元アドレスからキーオフされます。これらの方法のいずれかが機能します。

WANアドレスが1つしかない可能性が高く、VPNプロバイダーもアドレスを1つしか持っていないため、作成できるNAT = GREトラフィックの1つの内部ホストへのマッピング。

0
parkamark