web-dev-qa-db-ja.com

VPNクライアントがサーバーLAN内のすべてのサーバーにアクセスできるようにOpenVPNを設定するにはどうすればよいですか?

サーバーのLAN IPは192.168.1.1で、192.168.1.2にイントラネットWebサーバーがあります。OpenVPNデーモンは、クライアントに192.168.2。*アドレスを与えるように構成されています。

有る Push "route 192.168.1.0 255.255.255.0" VPNクライアントが192.168.1.0ネット全体にアクセスできるようにすることを期待している構成の行ですが、それらは192.168.1.1-VPNサーバー自体にしかアクセスできません。

有効にしてみましたnet.ipv4.ip_forward = 1/etc/sysctl.confしかし、これは役に立ちません。

何か案は?

PS:サーバーはUbuntu 12.04を実行します。
PPS:OpenVPNはUDP上でtunモードで実行されます。

12
Ivan

IP転送が実際に有効になっていることを確認してください

echo 1 > /proc/sys/net/ipv4/ip_forward

また、ルートプッシュが機能するためには、内部のサーバーもOpenVPNクライアントIPアドレスへのルートを知っている必要があります。したがって、彼らは192.168.2.0/24へのルートを知る必要があります。

あなたはおそらくiptablesにマスカレード経由でルーティングをさせることができます

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
19
Frands Hansen

LANネットワークが本当に192.168.1.0/24である場合、多くの問題が発生する可能性があります。ほとんどのルーターにはそのデフォルトのネットワークがあるからです。したがって、ゲストネットワークに接続している場合、コンピュータは192.168.1.0/24ネットワークからIPを取得できます。したがって、リモートネットワークにはアクセスできませんが、ゲストネットワークにはアクセスできます。 LANとVPNに別のネットワークを選択することをお勧めします。たとえば、LANの場合は192.170.15.0/24、VPNの場合は10.0.5.0/xxです。 xxは、LANに接続しているVPNクライアントの数によって異なります。

これがopenvpn用の私のfwスクリプトです

#!/bin/sh

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

# Allow packets from private subnets
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

# i have multiple vpn networks
# 192.123.123.0/24 = LAN
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.9.0.0/30 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.9.1.0/30 -o eth1 -d 192.123.123.39 -j MASQUERADE # to single server access only

echo 1 > /proc/sys/net/ipv4/ip_forward
2
Guntis