OpenVPNを実行しているCentOS 7システムのペアを使用して2つのネットワークを一緒に接続しようとしています。
背後には、2つのネットワークを持つ「サーバー」側と1つのネットワークを持つ「クライアント」側があります。デフォルトのopenvpn接続はありましたが、ルーティングやファイアウォールの設定に何か問題があるようです。
OpenVPNは10.8.0.0/24のプールです。サーバーの背後にはネットワーク10.254.1.0/24と10.255.1.0/24があり、クライアントの背後には10.255.0.1があります。
サーバーは、次のルーティング・オプションを server.conf にプッシュします。
# Push any routes the client needs to get in
# to the local network.
push "route 10.254.1.0 255.255.255.0"
push "route 10.255.1.0 255.255.255.0"
これは、クライアントのルーティングテーブルに正しく表示されます。
10.8.0.1 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
10.254.1.0/24 via 10.8.0.5 dev tun0
10.255.0.0/24 dev enp6s4f0 proto kernel scope link src 10.255.0.1 metric 100
10.255.1.0/24 via 10.8.0.5 dev tun0
...そしてサーバー側では、適切なパスを手動で設定しました。
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
10.255.0.0/24 via 10.8.0.2 dev tun0
...クライアントゲートウェイは、実際にはサーバーネットワークにさらに深いデバイスをpingできます。
[root@sentry openvpn]# ping -c 1 10.254.1.10
PING 10.254.1.10 (10.254.1.10) 56(84) bytes of data.
64 bytes from 10.254.1.10: icmp_seq=1 ttl=63 time=300 ms
...しかし、SSHで接続することはできません。
# ssh [email protected]
ssh: connect to host 10.254.1.10 port 22: No route to host
...だからファイアウォールの問題だと思います。
両方とも内部領域にトンインターフェースを追加しました。
クライアント側から:
# firewall-cmd --info-zone="internal"
internal (active)
target: default
icmp-block-inversion: no
interfaces: enp6s4f0 tun0
sources:
services: dhcp dhcpv6-client dns http mdns mosh samba-client snmp ssh syslog
ports: 8000/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
...そしてサーバー:
# firewall-cmd --info-zone="internal"
internal (active)
target: default
icmp-block-inversion: no
interfaces: ens161 ens256 tun0
sources:
services: dhcpv6-client mdns samba-client snmp ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
2つの内部ネットワークが互いに通信するには、サーバーから直接iptablesルールを追加する必要があります。
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o ens161 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens161 -o ens256 -j ACCEPT
...それで、openvpnネットワークでも同じことをしました。
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens256 -i tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens161 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens161 -i tun0 -j ACCEPT
...クライアント側では次のようになります。
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp6s4f0 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o enp6s4f0 -i tun0 -j ACCEPT
...明らかに、ルーティングがどのように機能するかを理解していないか、ファイアウォール側に何かがあります。
私が何を見逃しているのか教えてくれる人はいますか?