気ままにITガジェットブログ
IT技術、ガジェット等を発信しています

raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法


公開: 2022年09月10日

raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法
raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法

VPNツールで便利なsoftetherがあります。
自宅のVPNサーバーをラズパイで構築した際にDHCPサーバを兼ねさせた時にうまくかなかったので、備忘録です。

目次

SoftetherはLinuxOSの制約でVPNで自分あての通信がDROPする

これは結構有名な問題なのですが、LinuxOSは自分のMacアドレスから自分のMacアドレス向けの通信がDROPします。
なので、SoftetherVPNで接続するVPNクライアントはVPNサーバに対して通信できないんですよね。
pingを送っても応答がないです。

raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法

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と仮想ハブをローカルブリッジする。

raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法

2. 仮想NAT(SecureNAT)の設定を開く

仮想ハブから開ける。
raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法

3. 仮想NAT(SecureNAT)の設定を開く

DHCPの設定を行う。
NAT機能が不要であれば、仮想NAT機能を有効にするのチェックを外そう。
raspberry pi 上の Softether VPNでDHCPサーバーを稼働させる方法

DHCPにはオプション機能として、デフォルトゲートウェイやDNSの設定を含めることができる。
基本的には必ず指定されるものだが、LAN内通信ができればよい等の環境であれば、特に不要だ。

プロフィール


ニックネーム: ほっしー

ガジェット好きのエンジニア
面白い情報を収集しています。
IT関連の技術記事も書いています。 

PythonやGo, kubernetes等を使ってソフトウェア開発をしています。

資格: 応用情報技術者、ネットワークスペシャリスト、AWS SAA所持

サイト内ページ

人気ページ


役立ち情報