FreeBSD 14
Sponsored Link

OpenVPN : VPN クライアントの設定 (FreeBSD)2024/09/23

 

OpenVPN クライアントの設定です。FreeBSD を例にします。

当例では以下のような環境で OpenVPN サーバーを設定しています。
設定により、サーバー/クライアント上の [tun] インターフェースは自動設定され、クライアントは VPN 接続後、VPN サーバーのローカルネットワーク宛てへアクセス可能となります。

下例の場合は、前提として、ルーター側で NAT の設定が必要です。
(WAN 側から x.x.x.x:1194 (udp) 宛にきたパケットを LAN 側の 10.0.0.30:1194 (udp) へフォワード)

  +----------------------+
  | [  OpenVPN Server  ] |172.16.100.1
  |    dlp.srv.world     +--------+
  |                      |tun     |
  +-----------+----------+        |
        vtnet0|10.0.0.30          |
              |                   |
              |  Local Network    |
      10.0.0.1|                   |
       +------+-----+             |
-------|   Router   |-------------|-----
       +------+-----+             |
              |                   |
              |  Internet         |
--------------+-------------------|-----
              |                   |
              |  Local Network    |
  192.168.0.31|                   |
  +-----------+----------+        |
  |                      |tun     |
  |      VPN Client      +--------+
  |                      |172.16.100.x
  +----------------------+

[1]

事前に、サーバー側で作成した [ca.crt], [client1.crt], [client1.key], [ta.key] を、設定するクライアントに転送しておきます。

[2] OpenVPN をインストールします。
root@client:~ #
pkg install -y openvpn
[3] OpenVPN クライアントの設定です。
# サンプル設定ファイル コピー

root@client:~ #
mkdir /usr/local/etc/openvpn

root@client:~ #
cp /usr/local/share/examples/openvpn/sample-config-files/client.conf /usr/local/etc/openvpn/openvpn.conf
root@client:~ #
vi /usr/local/etc/openvpn/openvpn.conf
# 36行目 : OpenVPN サーバーの設定ファイルで指定したプロトコル
;proto tcp
proto udp

# 42行目 : OpenVPN サーバーのグローバル IP とポート
remote 172.16.2.1 1194

# 54行目 : 名前解決を継続
resolv-retry infinite

# 58行目 : ローカルポートをバインドしない
nobind

# 65行目 : persist オプションを有効にする
persist-key
persist-tun

# 88行目 : サーバーから転送した証明書と鍵ファイルのパス
ca ca.crt
cert client1.crt
key client1.key

# 114行目 : コメント解除してサーバーから転送した TLS-Auth キーファイルのパスを指定
tls-auth ta.key 1

# 117行目 : ログレベル
verb 3

root@dlp:~ #
service openvpn enable

openvpn enabled in /etc/rc.conf
root@dlp:~ #
service openvpn start

Starting openvpn.
root@client:~ #
ifconfig

vtnet0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=4c07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6>
        ether 52:54:00:7c:de:11
        inet 192.168.0.30 netmask 0xffffff00 broadcast 192.168.0.255
        inet6 fe80::5054:ff:fe7c:de11%vtnet0 prefixlen 64 scopeid 0x1
        media: Ethernet autoselect (10Gbase-T <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
tun0: flags=1008043<UP,BROADCAST,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=80000<LINKSTATE>
        inet 172.16.100.2 netmask 0xffffff00 broadcast 172.16.100.255
        groups: openvpn
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
[4] VPN 接続が確立できたら、クライアントからサーバー側のローカルネットワークにアクセスできるか確認しておくとよいでしょう。
root@client:~ #
ping -c 3 10.0.0.30

PING 10.0.0.30 (10.0.0.30): 56 data bytes
64 bytes from 10.0.0.30: icmp_seq=0 ttl=64 time=1.193 ms
64 bytes from 10.0.0.30: icmp_seq=1 ttl=64 time=1.255 ms
64 bytes from 10.0.0.30: icmp_seq=2 ttl=64 time=1.241 ms

--- 10.0.0.30 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.193/1.230/1.255/0.027 ms

root@client:~ #
ssh -o StrictHostKeyChecking=no ubuntu@10.0.0.203 hostname

Warning: Permanently added '10.0.0.203' (ED25519) to the list of known hosts.
ubuntu@10.0.0.203's password:
ubuntu
関連コンテンツ