Page 1 of 1

VPNサーバー機(Ubuntu18)への接続方法

Posted: Tue Aug 06, 2019 4:04 pm
by k-trader
いつもお世話になっております。

Ubuntu18に入れたVPNサーバーに直接通信ができない仕様への対策として、下記を考えました。

1.VPNサーバーにクライアントソフトを入れて、クライアント同士としてサーバーと通信する
2.VPNサーバーソフトをUbuntu18サーバーで稼働するdockerに入れ、Open Virtual Switchを使用してサーバーと通信する

まず、1を試しましたが、仮想NICにIPを振ることができませんでした。
ネット上では下記のコマンドでDHCPによる割り当て可能とありましたが、機能しませんでした。
sudo dhclient 仮想NIC名

また、 下記ファイルでIPアドレスを指定しましたが、これも効果がありませんでした。
/etc/netplan/01-network-manager-all.yaml
ethernets:
vpn_vpnnic:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 192.168.1.1

2なら恐らく可能とは思いますが、かなり時間を使いそうな予感がしています。
他を中継したSSH等ではなく、サーバーのIPに直接アクセス可能な方法で何か良い方法、
あるいはUbuntu18で仮想NICに固定IPを振る方法があれば教えてください。
(最も簡単なのはNIC二枚刺しというのは知っていますが、省電力化のため避けたいです)

よろしくお願いいたします。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Tue Aug 06, 2019 7:18 pm
by k-trader
クライアントの仮想NICへのIP割り当ては ipconfigで行けました。

下記を試しましたが、サーバーへ直接接続は出来ませんでした。
・softether クライアントの仮想NICへの接続
・仮想ブリッジ+tapへのIP割り当て+接続

何か情報あればよろしくお願いいたします。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Wed Aug 07, 2019 2:57 am
by k-trader
現在の状況です。
192.168.1.1: ルータ
192.168.1.20: VPN接続した遠隔クライアント
192.168.1.100: VPN server 仮想ブリッジ(物理NICと接続)
192.168.1.101: tapデバイス(仮想ブリッジと接続、Softetherと接続)
192.168.1.103: VPN Server上の仮想クライアント
192.168.1.200: 別なサーバ

192.168.1.20から100、101、103へping:通らない
192.168.1.20から192.168.1.200へssh:OK
ssh後、100、101、103へping:通る

仮想NAT、仮想DHCPは未使用です。
(これらをつけるとゲートウェイをルータに設定してもインターネットにつながらないため)
よろしくお願いいたします。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Wed Aug 07, 2019 9:15 am
by cedar
> 192.168.1.101: tapデバイス(仮想ブリッジと接続、Softetherと接続)
> 192.168.1.103: VPN Server上の仮想クライアント

これはどちらも仮想 HUB 内と通信ができるはずです。
iptables などでICMPをドロップしていないでしょうか。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Wed Aug 07, 2019 12:16 pm
by k-trader
返信ありがとうございます。

同一LAN内だとPingが通るので、
クライアントPCの設定ではないと考えています。

同じPCを使用して下記の結果でした。
職場、テザリング+Vpn:サーバーに通らない(VPNは問題なし)
同一ルーター下(PC)、VPNなし:サーバー全て通る

何か調べるべき点ありましたらご協力いただけると幸いです。
よろしくお願いいたします。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Wed Aug 07, 2019 12:55 pm
by cedar
クライアントではなくサーバー側でフィルタリングされていないでしょうか?
LAN内のホストからはpingできますか?

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Wed Aug 07, 2019 10:38 pm
by k-trader
返信ありがとうございます。ping可能です。

下記構成に変更することで、サーバーに接続できるようになりました。

192.168.1.1: ルータ
192.168.1.20: VPN接続した遠隔クライアント
192.168.1.100: VPN server 仮想ブリッジ
192.168.1.101: tapデバイス
192.168.1.102: vlan
・仮想ブリッジの接続先を物理NIC
・tapデバイスの接続先を物理NIC
・vlanの接続先を仮想ブリッジ

この構成でVPN接続することで、vlanを経由してサーバーに接続できるようになりました。
tapデバイスを仮想ブリッジに接続、あるいは仮想ブリッジをtapデバイスと物理両方に接続すると問題が発生します。

ありがとうございました!

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Thu Aug 08, 2019 1:03 am
by k-trader
つながったと思いましたが、外から繋ぐと変化なしでした。
難しいですね……。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Thu Aug 08, 2019 10:16 am
by cedar
DHCPでIPアドレスを取得できないというのも、ちょっと怪しい気がします。
仮想HUBとtapデバイスの接続の方に問題があるかもしれません。
tapデバイスでtcpdumpなどして、仮想 HUB 内のパケットが見えるでしょうか?

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Fri Aug 09, 2019 3:51 am
by k-trader
ご返信ありがとうございます。
>tapデバイスでtcpdump
「tcpdump -i デバイス名」だと全く流れていません。
「tcpdump host ip」だとVPN接続時は大量に流れています。
いかがいたしましょうか。

現在の構成です。
192.168.1.1: ルータ
192.168.1.100: VPN server 仮想ブリッジ→物理NICへ接続
192.168.1.101: tapデバイス→仮想ブリッジへ接続
192.168.1.102: vlan→仮想ブリッジへ接続
192.168.0.103: softether クライアント→仮想ブリッジへ接続

NICを追加すると、VPN通信時であっても仮想ブリッジやtapデバイス、
softether クライアント共に問題なくつながります。
また、VPN接続には二重NAT回避のためvpnazureを使用しています。

可能であればNICを一本にしたいと考えています。ご協力いただけると幸いです。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Fri Aug 09, 2019 10:13 am
by cedar
Linux では、特に制限していない限り、自分のIPアドレス宛のパケットは、そのIPアドレスが割り当てられているデバイス以外からでも取り込むようです。
デバイス名を指定してパケットが届いていないようであれば、機能していない可能性が考えられます。
ifconfig で表示される受信パケット数などは伸びているでしょうか。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Sat Aug 10, 2019 3:42 am
by k-trader
返信ありがとうございます。
ifonfigで確認しましたが、tapデバイスのパケット量はほぼ動いてないです。
RX packets 0 bytes 0 (0.0 B)
TX packets 285 bytes 84464 (84.4 KB)

また、NIC二枚刺しにするとVPN接続時に仮想ブリッジや仮想NIC経由でサーバーへssh接続可能ですが、
tapデバイスのみssh接続できません(VPN接続時以外はtapデバイスにssh可能)。

対策あればご教授ください。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Sat Aug 10, 2019 3:53 am
by cedar
vpnserverのプロセスがroot権限で動作しているか確認してみてください。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Sat Aug 10, 2019 4:59 am
by k-trader
返信ありがとうございます。

#ps -ef | grep vpn
root 2203 1 0 08:28 ? 00:00:00 /usr/local/vpnserver/vpnserver execsvc
root 2205 2203 0 08:28 ? 00:01:38 /usr/local/vpnserver/vpnserver execsvc
root 3055 1 0 08:28 ? 00:00:00 /usr/local/vpnclient/vpnclient execsvc
root 3059 3055 0 08:28 ? 00:00:46 /usr/local/vpnclient/vpnclient execsvc

server、クライアント共にroot権限のように見えます。
何かありましたらご教授ください。

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Sat Aug 10, 2019 5:40 am
by cedar
tapデバイスはローカルブリッジ機能かVPN Clientの仮想LANカードとして作成されているでしょうか?

Re: VPNサーバー機(Ubuntu18)への接続方法

Posted: Sat Aug 10, 2019 7:35 am
by k-trader
その通りです。softetherの機能から作成しました。IPに関しては固定にするため、netplanで指定しています。

Code: Select all

network:
    version: 2
    ethernets:
        enp3s0:
            dhcp4: false
    vlans:
        tap_server:
            id: 1
            dhcp4: false
            addresses:
                - 192.168.1.101/24
            link: br0
        vpn_client:
            id: 2
            dhcp4: false
            addresses:
                - 192.168.1.102/24
            link: br0
    bridges:
        br0:
            interfaces: enp3s0
            dhcp4: false
            addresses: 192.168.1.100/24
            gateway4: 192.168.1.1
            nameservers:
                addresses: 192.168.1.1
よろしくお願いいたします。