Page 1 of 1

SoftetherServerからClientへの通信について

Posted: Mon Oct 22, 2018 9:00 am
by nicemiddle
お世話になります。

以下の構成での接続を検討しております。

  <拠点A>         <拠点B> 
  内部Web、Softether Client   Softether Server、端末

・拠点Aには、Webサーバ#1、とClientが入っているサーバがあります。
・拠点Bには、Softether Serverが入っているサーバがあります。

拠点A(Client)から拠点B(Server)に対するVPN接続はできており、ClientからServerを経由した通信は可能な状態となっています。

このとき、逆(つまり拠点B-->拠点A)への接続をしたいのですが、コネクションが張れた状態でも、ServerからClientへのPingが通りません。
(ClientからServerへのPingは通ります)

Server側のipconfigを確認したところ、IPv4アドレスはありませんでした。(おそらく、これが問題?)
Client側のipconfigでは、ServerからのDHCPを受け取っており、IPv4アドレスが設定されていました。
Client側のルーティングは正しくできています(Serverを経由した通信が可能なので)。

viewtopic.php?f=15&t=59790
こちらを参考に、Server側にtapデバイスの設定を行い、ipconfigで仮想LANカードが作成されていることも確認しましたが、やはり通信が通りません。

まず、このような接続において、B-->Aへの接続はできないのでしょうか。
(Bridgeを使うべきなのでしょうか)
また、どのような設定をすべきなのでしょうか。

ご教授ください。よろしくお願いします。

Re: SoftetherServerからClientへの通信について

Posted: Mon Oct 22, 2018 10:56 am
by cedar
現在は、どのような設定を行われているでしょうか。
また、サーバー、クライアントで、それぞれ使用されているOSは何でしょうか。

Re: SoftetherServerからClientへの通信について

Posted: Mon Oct 22, 2018 12:17 pm
by nicemiddle
お世話になります。

拠点AのClientは、Ubuntuです。
  接続先は拠点Bで、ポート5555に接続するようにしています。
  プロキシはなく、直接接続しています。

<ifconfig>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.212.15 netmask 255.255.255.0 broadcast 192.168.212.255
inet6 fe80::94b3:f2ff:fe13:51aa prefixlen 64 scopeid 0x20<link>
ether 96:b3:f2:13:51:aa txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)

vpn_vpn: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 <-- VPNclientで作成したNIC
inet 192.168.30.10 netmask 255.255.255.0 broadcast 192.168.30.255
inet6 fe80::5c85:38ff:fed3:f9fc prefixlen 64 scopeid 0x20<link>
ether 5e:85:38:d3:f9:fc txqueuelen 1000 (Ethernet)

<route>
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.30.1 0.0.0.0 UG 0 0 0 vpn_vpn
0.0.0.0 192.168.212.254 0.0.0.0 UG 100 0 0 eth0
***.***.***.*** 192.168.212.254 255.255.255.255 UGH 0 0 0 eth0 <-- ***.***.***.***はServerのIPアドレス。
192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn_vpn
192.168.212.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.212.254 0.0.0.0 255.255.255.255 UH 100 0 0 eth0


拠点BのServerも、Ubuntuです。
 tap: eth0 と 仮想ハブ[softether]に対してブリッジを作成しています。
 L2TP:L2TP over IPsecのみチェックが入っています。
 仮想ハブ[softether]:カスケード接続なし、SecureNAT有効、DHCPサーバ有効

<ifconfig>
eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 172.31.**.** netmask 255.255.240.0 broadcast 172.31.**.255
inet6 fe80::465:a9ff:fe45:d5ec prefixlen 64 scopeid 0x20<link>
ether 06:65:a9:45:d5:ec txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)

<route>
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.16.1 0.0.0.0 UG 0 0 0 eth0
***.***.***.*** 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 <-- ***.***.***.***はServerが持つ外側のIPアドレス
172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0

-----
このとき、ClientからServerを経由した他のサーバへの接続は成功します(アクセスログを見ると、ServerのIPからとなっているので、
ここは問題ないものと思っています)。

ところが、Server側からClient側に対する接続ができません。

不足があればご指摘ください。

Re: SoftetherServerからClientへの通信について

Posted: Mon Oct 22, 2018 5:01 pm
by cedar
SecureNATとeth0へのローカルブリッジを両方作成しているのはなぜでしょうか。
これはループの危険があるため一般的には推奨されない設定です。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 1:30 am
by nicemiddle
承知いたしました。まずはtap(ローカルブリッジ)を削除し、ループしないように設定しました。

この状態でも、ClientからServerへの通信は可能でしたが、ServerからClientへのsshはできませんでした。
Server側からClient側への通信を行うためには、どのようにすればよろしいでしょうか。
(Server側とClient側のsshポートは異なる番号を使用しており、Client側のファイアウオールも当該ポートを開けています)

よろしくお願いします。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 2:30 am
by nicemiddle
すみません。質問に回答していませんでした。

SecureNATとローカルブリッジを両方設定していた理由としては、
1:Client --> Server --> Serverと同一セグメントの端末に対する接続  を可能にするためには、SecureNATを設定しないと出られないと思っていた。
2:ローカルブリッジにより、Serverの物理カードにとどいた通信をローカルブリッジ経由でClientまで到達させることができると思っていた。

からです。上記1の通信は可能な状態であったことから、ローカルブリッジを設定した次第ですが、ご指摘がございましたので、削除しました。

よろしくお願いします。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 2:42 am
by cedar
> vpn_vpn: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 <-- VPNclientで作成したNIC
> inet 192.168.30.10 netmask 255.255.255.0 broadcast 192.168.30.255

先程の状態では、サーバー側の LAN とは異なるセグメントの IP アドレスが仮想 NAT から
仮想 LAN カードに割り当てられてしまっていたため、LAN との通信が行えない状態に
なっていたものと思われます。

SecureNAT を無効にすることで、LAN 上の DHCP サーバーから IP アドレスを取得できないでしょうか。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 5:09 am
by nicemiddle
ご指摘のありましたとおり、Softether ServerにてSecureNATを無効、DHCPサーバ有効として接続しました。

<Client側のifconfig>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.212.15 netmask 255.255.255.0 broadcast 192.168.212.255
inet6 fe80::94b3:f2ff:fe13:51aa prefixlen 64 scopeid 0x20<link>
ether 96:b3:f2:13:51:aa txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)

vpn_vpn: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::5c85:38ff:fed3:f9fc prefixlen 64 scopeid 0x20<link>  <-- v4アドレスが取得されていないため、dhclientコマンドを実行するが、無応答
ether 5e:85:38:d3:f9:fc txqueuelen 1000 (Ethernet)

<Server側のifconfig>
eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 172.31.21.19 netmask 255.255.240.0 broadcast 172.31.31.255
inet6 fe80::465:a9ff:fe45:d5ec prefixlen 64 scopeid 0x20<link>
ether 06:65:a9:45:d5:ec txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)

tap_softether: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::5cfd:eff:fede:570 prefixlen 64 scopeid 0x20<link> <-- v4アドレスが取得されていないため、dhclientコマンドを実行するが、無応答
ether 5e:fd:0e:de:05:70 txqueuelen 1000 (Ethernet)

と、どちらも仮想DHCPアドレスが取得できません。(Client側はこれまで取得できていました。サーバ側は今回が初回となります)

Server側で行ったDHCPGetの情報は以下のとおりです。

<Server側のDHCP設定>
項目 |値
------------------------------------+--------------
仮想 DHCP 機能を使用する |はい
配布アドレス帯の開始 |192.168.30.10
配布アドレス帯の終了 |192.168.30.200
サブネットマスク |255.255.255.0
リース期限 (秒) |7200
デフォルトゲートウェイアドレス |192.168.30.1
DNS サーバー アドレス 1 |8.8.8.8
DNS サーバー アドレス 2 |なし
ドメイン名 |********
NAT および DHCP の動作のログ保存 |はい
プッシュする静的ルーティングテーブル|

念のため、SecureNAT機能をオンにして、Client側でdhclientコマンドを叩くと、すぐにIPアドレスが払い出されました。
(推奨されていないのは承知しておりますので、すぐにSecureNATはオフに致しました)

おそらく、何かが間違っているように思うのですが、他に情報が必要であればお知らせください。

よろしくお願いします。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 5:38 am
by cedar
サーバー側のローカルブリッジが、DHCP サーバーのあるネットワークに接続された eth0 ではなく、tap デバイスに接続されていないでしょうか。

eth0 にローカルブリッジすることで、サーバー側の VPN サーバーを除くホストがクライアントと相互に通信可能となります。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 6:30 am
by nicemiddle
サーバ側のローカルブリッジを以下のとおり設定しました。
   
BridgeList コマンド - ローカルブリッジ接続の一覧の取得
番号|仮想 HUB 名|ブリッジ先 LAN カードまたは tap デバイス名|状態
----+-----------+------------------------------------------+------
1 |DEFAULT |eth0 |動作中 <--tapではなく、eth0とのブリッジを設定しています。


Client側のifconfigは以下のとおりです。

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.212.15 netmask 255.255.255.0 broadcast 192.168.212.255
inet6 fe80::94b3:f2ff:fe13:51aa prefixlen 64 scopeid 0x20<link>
ether 96:b3:f2:13:51:aa txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)

vpn_vpn: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::5c85:38ff:fed3:f9fc prefixlen 64 scopeid 0x20<link>    <-- やはりdhclientを実行しましたが、PacketLossとなります。
ether 5e:85:38:d3:f9:fc txqueuelen 1000 (Ethernet)

<dhclientの実行結果>
$ sudo dhclient vpn_vpn
PING 192.168.30.1 (192.168.30.1) 56(84) bytes of data.

--- 192.168.30.1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Serverの外側から、ClientにSSH(つまり、ssh username@ServerのIPアドレス -p XXXX(ClientのSSHポートは違う番号にしています))をしようとしても、接続ができない状態です。

ここまでくると、ルーティングの問題になるのでしょうか。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 6:47 am
by cedar
ローカルブリッジが正常に動作していない可能性が考えられます。
VPN サーバーとして、VM や WiFi など、プロミスキャスモードが動作しないハードウェアを使用されていないでしょうか。

192.168.30.1 は、SecureNAT が作る仮想ホストのアドレスなので、SecureNAT を無効にしたときにアクセスできないのは正常です。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 7:14 am
by nicemiddle
お世話になります。ご指摘の通り、Server側にはAWS (VM)を使用しています。このため、プロミスキャスモードが動作しないというのは理解しました。

この場合、Softetherでこういった形態での通信をするための手段はないのでしょうか。

Re: SoftetherServerからClientへの通信について

Posted: Tue Oct 23, 2018 8:21 am
by cedar
サーバー側の LAN でクライアントにアクセスする必要があるホストが少ない場合には、
各ホストに VPN クライアントを導入して同じ仮想 HUB に接続する方法があります。
この方法は設定が容易ですが、ホストの数が多い場合は手間がかかります。
(VPN サーバーのみがクライアントと通信する場合は、VPN クライアントの代わりに
tap デバイスへのローカルブリッジを使用することもできます。)

また、多数のホストがクライアントと通信する必要がある場合には、VPN サーバーに
ルーティングを行わせる方法もあります。
こちらは、LAN のデフォルトゲートウェイとなっているルーターに、仮想HUBの
セグメントへのルーティングを設定できるなら、他のホストの設定の変更が不要という
メリットがあります。

Re: SoftetherServerからClientへの通信について

Posted: Thu Oct 25, 2018 2:47 am
by nicemiddle
ご連絡ありがとうございました。

いくつか試してみましたが、VPN以外の方法を見つけることにします。
ご協力いただきまして、大変ありがとうございました。