インターネットトラフィックをルーティングするためのOpenVPNサーバー構成

インターネットトラフィックをルーティングするためのOpenVPNサーバー構成

OpenVPN の設定に問題があります。

これは接続時に発生します。クライアント 192.168.42.6 からサーバー 192.168.42.1 に ping でき、その逆も可能です。192.168.42.1 のサーバー上のリスニング デーモンにアクセスできます (http および dns)。インターネット IP を使用してサーバーにアクセスできますが、接続は VPN でルーティングされません (tr​​aceroute を作成し、自宅のルーターを通過します)。他のインターネット IP にはアクセスできません (nmap traceroute では、192.168.42.1 の行が 1 つだけ表示されます)。

私の OpenVPN サーバーの構成は次のとおりです。

port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.42.1"
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status openvpn-status.log
verb 4
script-security 2
push "redirect-gateway def1"
auth-user-pass-verify /home/openvpn/chroot/login.php via-file
port-share 127.0.0.1 4433
max-clients 10
daemon

以下は私の iptables 設定の一部です:

# current configuration (i removed some lines concerning other ports)
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

# lines added for OpenVPN
iptables -A FORWARD -i tun0 -o em1 -s 192.168.42.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o em1 -j MASQUERADE

どうすればいいでしょうか? 助けてくれてありがとう。

答え1

ご質問と設定から判断すると、サーバー経由でクライアントにインターネット アクセスを許可するつもりであると推測します。

その場合、openvpn の設定は正しいと思われます。

ただし、フィルタリングは完全ではありません。現状では、tun0 から em0 (サーバー上のイーサネット接続であると想定) に新しいパケットを転送するように設定されていますが、em0 から tun0 への後続のパケットやパケットはまったく転送されません。双方向通信は、ほぼすべてのインターネット プロトコルに必要です。

したがって、次の行を構成に追加します:

iptables -A FORWARD -i tun0 -o em1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i em1 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

また、/proc/sys/net/ipv4/ip_forwardに1が含まれていることを確認し、含まれていない場合は、

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

ディストリビューションによっては、最後の設定を永続的にする方法があるはずです (コマンドは、次回の再起動までのみ設定を維持します)。

関連情報