
プライベートネットワークとそのネットワークに接続されているホームクライアント間でOpenVPNを設定しようとしています。 (クライアントは互いに接続する必要はありません)。ネットワークトポロジーは少し面白いです。 10.7.42.0/24に公共/大学ネットワークがあります。そのネットワークにはいくつかのIPがあり、パブリックポートをここに転送しますが、そのIPを制限して192.168.203.0/24のプライベートネットワークに多数のIPを配置します。すべてのマシンには少なくとも1つのプライベートIPがあり、一部にはパブリックとプライベートIPの両方があります(両方のアダプタ、仮想マシン上で実行されますが、物理的に分離された2つのネットワークを持つようなもの)。
OpenVPNサーバーは、パブリック/プライベートネットワーク間のゲートウェイでもあります。 10.7.42.xアドレス、デフォルトゲートウェイ10.7.42.1(大学ゲートウェイ)、すべての任意の偽装/ IP転送、および内部アドレス192.168.203.1があります。 NAT/ゲートウェイで正常に動作します。
私のオープンVPNサーバーの設定は次のとおりです。
local 10.42.7.226
port 443
proto tcp
dev tun
ca /etc/openvpn/easy-rsa-2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa-2.0/keys/server.crt
key /etc/openvpn/easy-rsa-2.0/keys/server.key # This file should be kept secret
dh /etc/openvpn/easy-rsa-2.0/keys/dh1024.pem
server 192.168.137.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
route 192.168.203.0 255.255.255.0
push "route 192.168.203.0 255.255.255.0"
push "dhcp-option DNS 192.168.203.100"
keepalive 10 120
cipher BF-CBC # Blowfish (default)
comp-lzo
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
max-clients 201
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
ifconfigは次のようになります。
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.203.1 Bcast:192.168.203.255 Mask:255.255.255.0
inet6 addr: fe80::8c2c:6bff:fe5b:5406/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:183488 errors:0 dropped:4 overruns:0 frame:0
TX packets:198145 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15024794 (14.3 Mb) TX bytes:186885934 (178.2 Mb)
Interrupt:32 Base address:0xa000
eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:10.42.7.226 Bcast:10.42.7.255 Mask:255.255.255.0
inet6 addr: fe80::a011:59ff:fe3e:c3aa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:436236 errors:0 dropped:99041 overruns:0 frame:0
TX packets:202673 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:239838327 (228.7 Mb) TX bytes:20537299 (19.5 Mb)
Interrupt:36 Base address:0xe100
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:100 (100.0 b) TX bytes:100 (100.0 b)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.137.1 P-t-P:192.168.173.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:631 errors:0 dropped:0 overruns:0 frame:0
TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:48118 (46.9 Kb) TX bytes:13725 (13.4 Kb)
私のパスは次のとおりです。
192.168.137.2 * 255.255.255.255 UH 0 0 0 tun0
10.42.7.0 * 255.255.255.0 U 0 0 0 eth1
192.168.203.0 * 255.255.255.0 U 0 0 0 eth0
192.168.137.0 192.168.137.2 255.255.255.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default 10.42.7.1 0.0.0.0 UG 0 0 0 eth1
クライアントは次のようになります。
dev tun
remote vpn.mydomain.com
ca ca.crt
client
port 443
proto tcp
tls-client
auth-user-pass
comp-lzo
ping 15
verb 9
log-append /tmp/openvpn.log
問題は、192.168.137.1のSSHを介してのみOpenVPNサーバーにアクセスできることです。 192.168.203.0/24 アドレスに接続できません。ルート追跡を実行すると、1回のホップだけが通過し、VPNを介してリモートTunアダプタに到達するのに30秒かかります。
パーソナルコンピュータは192.168.203.1(OpenVPNサーバー)をゲートウェイとして使用するため、少なくともそのコンピュータの場合、パケットは正常に戻ります(実際にはNATを通過するため、両方のアドレスがあるコンピュータに到達できる必要があります)。 ):パブリックアダプタとプライベートアダプタにも同じことが当てはまります)
私は以前にこれらのOpenVPNネットワークを設定したことがあり、以前にもまさにこのような問題が発生したことを知っていますが、回避策は覚えていません。
答え1
この問題を発見しました。これが私のファイアウォールです。ファイアウォールを無効にし、iptablesを使用して必要なルールを手動で入力すると、正常に動作します。 (freenode.netの#openvpnチャットルームによると、人々がOpenVPNで遭遇する最大の問題は通常ファイアウォールベースです)。その後、tun0トラフィックを許可するようにファイアウォールスクリプトを調整して再起動しました。