私は次のserver.confを持っています:
# listen on? (optional)
local 192.168.1.102
# port
port 443
# TCP
proto tcp
#tunnel
dev tun
# Certs
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
# Diffie hellman parameters.
dh /etc/openvpn/keys/dh2048.pem
# Configure server mode
server 10.8.0.0 255.255.255.0
ifconfig 10.8.0.1 10.8.0.2
# Maintain a record of client <-> virtual IP address
ifconfig-pool-persist ipp.txt
# Push routes to the client
Push "route 10.8.0.1 255.255.255.0"
Push "route 10.8.0.0 255.255.255.0"
Push "route 192.168.1.102 255.255.255.0"
# Redirect
Push "redirect-gateway def1 bypass-dhcp"
# DNS
Push "dhcp-option DNS 192.168.1.1"
Push "dhcp-option DNS 8.8.8.8"
Push "dhcp-option DNS 8.8.4.4"
# Use same key mult clients
duplicate-cn
# The keepalive
keepalive 10 120
# Compression
comp-lzo
# presistence options
persist-key
persist-tun
# log
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
サーバーのネットワークカードはeno1
です。サーバーはルーターのネットワークの192.168.1.102
にあります(クライアントも元々そのネットワークにあります)。私のルーターにはprort転送ルールがあります:
Source net:
source port: 443
Dest ip: 192.168.1.102
Dest port: 443
私が作成したiptablesルール(openvpnサーバー上):
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
そして、私はopenvpn用に次のクライアント設定を持っています:
client
dev tun
proto tcp
#Server IP and Port
remote 192.168.1.102 443
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
VPNに接続でき、正しく10.8.0.6
のIPが表示されます。
しかし、私がインターネット上の何かに行こうとすると、それはただタイムアウトします。 openvpnにリクエストを通過させるにはどうすればよいですか?
注:openvpnログを見ると、クライアントから最後に表示されるのは「SENTCONTROL」です。到達しようとしているWebアドレスに到達しようとしても何もありません。
(ファイアウォールをオフにし、selinuxを無効にしました)
iptablesルールを次のように変更します。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j MASQUERADE
iPv4が有効になっていることを確認してください。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptablesルールがないこと[〜#〜] forward [〜#〜]チェーンのfilterテーブル。