電子書籍の厳選無料作品が豊富!

vpnサーバー(OpenVPN 2.4.8-1.el7、OSはCentOS 7)構築しました。
まずは、グローバルIPに繋げてテストしました。

クライアント端末(ノートパソコン・Windows 10)にopenvpnのクライアント入れて、サーバーに直接アクセスはできます。クライアントに仮想のIPがふられます。サーバーにpingもできますし、sshもできます。

今度市販のルーター(日本電気 Aterm WR9500N HPモデル)でLAN構築し、vpnサーバーはLAN内に置きます。LANは 172.16.1.0/24。ルーターのLAN側IPは 172.16.1.1、WAN側はグローバルIP、openvpnサーバーは172.16.1.2です。

クライアント・サーバー1対1直接は接続できたのに、ルーター経由では、
TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed
のエラーが表示されます。

ルーター側(1)穴をあける(portマッピング)と(2) 静的ルーティングの設定はしています。
設定はそれぞれ、
(1) LAN側ホスト:172.16.1.2, Protocol: UDP, Port:1194-1194
(2)宛先IP:10.8.0.0/24、gw:172.16.1.2
です。

TLSエラーはクライアント側です。
サーバー側のlogには何も出ていないです。
(iptablesにて1194/UDPは許可しています。直でつながっているのでその辺は問題がないかなと思いますが、iptablesのどこか設定ミスや必要な設定が足りないでしょうね。)

パケットsniffing (tcpdump -ni em1 udp and port 1194)で見ると、
listening on em1, link-type EN10MB (Ethernet), capture size 262144 bytes
03:29:35.617406 IP xxx.xxx.xxx.xxx.58059 > 172.16.1.2.openvpn: UDP, length 54
(複数行続きます)
出ていますのでポートマッピングは正常かなと思います。

NIC1(em1)がルーターからパケットもらって、openvpnに渡してないかな。この辺の深い知識(routingの知識?)がないので、経験・知識お持ちの方、アドバイスください。

設定関係情報:

(1)IP forwardは有効にしています。 (/etc/sysctl.conf)
(net.ipv4.ip_forward = 1)

(2) 現在のIPtablesの設定:(関係すると思われる部分のみ)
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o em1 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -i em1 -p udp -m state --state NEW,ESTABLISHED -m udp --dport 1194 -j ACCEPT
-A OUTPUT -p udp --sport 1194 -m state --state ESTABLISHED -j ACCEPT

-A INPUT -p udp --sport 1194 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p udp --dport 1194 -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT

-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -i tun+ -o em1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i em1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

すべて、ネット上でカット・貼り付けですので不要なものが入っている可能性もありますが、必要な設定がないかもしれません。

(3)サーバー側に以下のコマンド実行しています。
route add -net 10.8.0.0 netmask 255.255.255.0 gw 172.16.1.2

その後 ip routeした結果は以下:
[root@userX ~]# ip route
default via nnn.nnn.nnn.nnn (グローバルのg/w IP) dev em2 (※)
10.8.0.0/24 via 172.16.1.2 dev em1 scope link
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
nnn.nnn.nnn.nnn/25 dev em2 proto kernel scope link src nnn.nnn.nnn.nnn (em2用にアサインされたグローバルIP)
169.254.0.0/16 dev em1 scope link metric 1002
169.254.0.0/16 dev em2 scope link metric 1003
172.16.1.0/24 dev em1 proto kernel scope link src 172.16.1.2
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

※em1はopenvpnLAN用のネットワーク、em2はリモートで管理しやすいように、「外」からも繋がるグローバルネットワークに接続しています。

長くなって申し訳ありませんが、よろしくお願いします。

A 回答 (1件)

とりあえず気になったところといえば・・・



|  route add -net 10.8.0.0 netmask 255.255.255.0 gw 172.16.1.2

との事ですが、
default は違うところ向いてたりします?
グローバルからのアクセスはdefault向くのでそちらに回っているのでは?

とりあえず、CentOSでパケットキャプチャして見るのが一番かと思います。
    • good
    • 0
この回答へのお礼

ぷらぐろまあさん

その通りでした!

二つのnicで、openvpn関係のnic (em1)のdefroute=no、グローバル関係のnic(em2)はdefroute=yesになっていました。逆にしたら問題なく、ルーター経由でつながりました!!

これに結構時間使いました!openvpnフォーラムにも助けをお願いしましたが教えてgooに書くまで返事がなかったのです。分かる方はこうやってすぐに分かるんですね。

感謝します。

お礼日時:2020/03/02 15:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!