raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法
公開: 2022年09月10日
raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法
VPNツールで便利なsoftetherがあります。
自宅のVPNサーバーをラズパイで構築した際にDHCPサーバを兼ねさせた時にうまくかなかったので、備忘録です。
目次
SoftetherはLinuxOSの制約でVPNで自分あての通信がDROPする
これは結構有名な問題なのですが、LinuxOSは自分のMacアドレスから自分のMacアドレス向けの通信がDROPします。
なので、SoftetherVPNで接続するVPNクライアントはVPNサーバに対して通信できないんですよね。
pingを送っても応答がないです。
Softether引用
Linux オペレーティングシステム内部での制限事項により、tap モードではないローカルブリッジでは、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。 この制限は SoftEther VPN が原因ではなく、Linux の内部構造に原因があります。 もし VPN 側 (仮想 HUB 側) から Linux でローカルブリッジに使用しているコンピュータ本体と、何らかの通信を行いたい場合 (たとえば VPN Server / VPN Bridge サービスと HTTP サーバーサービスを両方動作させており、VPN 側からもサーバーサービスにアクセスさせたい場合) は、ローカルブリッジ用の LAN カードを用意して接続し、その LAN カードと既存の LAN カードの両方を物理的に同じセグメントに接続してください (この他の場合においても 「3.6 ローカルブリッジ」 で解説したように、ローカルブリッジに使用する LAN カードはそのための単独のものを用意することが推奨されています)。
つまり、今回はraspberry pi
上にsoftetherを構築しているので、VPN後にraspberry piに通信できないわけです。
Windowsならこの制限がないので、優秀ですね。
Windowsのほうが優れていることは何か珍しいですね。
DHCPの払い出しができない
raspberry piにSoftetherをインストールし、DHCPサーバも構築して、ルータを兼務させようと思っていました。
ただ、先ほどの制約によってVPNサーバーあてへの通信がDROPしてしまいます。
このため、DHCPプロトコルのリクエストとリプライの一部がDROPしてしまい、IPアドレスの払い出しが正常に完了しません。
これを解決するにはTap
インターフェースを作成するか、別のNICを用意する必要があります。
Softetherの仮想DHCP機能を使おう
そこで、LinuxのOS制限を回避するためにSoftetherで用意されている仮想NAT(SecureNAT)の仮想DHCP機能を使うことにした。
これはSoftether上の仮想ハブ上に仮想的なNATやDHCPを作成できるルータ機能だ。
これはソフトウェア処理されているので、制限の影響を受けない。
※NATに関してはカーネルモードで動作させると影響を受けると思われる。なのでユーザーモードで。
1. まずはVPN先のNICと仮想ハブをローカルブリッジする。
2. 仮想NAT(SecureNAT)の設定を開く
仮想ハブから開ける。
3. 仮想NAT(SecureNAT)の設定を開く
DHCPの設定を行う。
NAT機能が不要であれば、仮想NAT機能を有効にする
のチェックを外そう。
DHCPにはオプション機能として、デフォルトゲートウェイやDNSの設定を含めることができる。
基本的には必ず指定されるものだが、LAN内通信ができればよい等の環境であれば、特に不要だ。