用於路由網際網路流量的 OpenVPN 伺服器配置

用於路由網際網路流量的 OpenVPN 伺服器配置

我在配置 OpenVPN 時遇到問題。

當我連接時會發生這種情況:我可以從客戶端 192.168.42.6 ping 伺服器 192.168.42.1,反之亦然。我可以存取 192.168.42.1(http 和 dns)上伺服器上的監聽守護程序。我可以使用其互聯網 IP 存取伺服器,但連接未在 VPN 中路由(我做了一個追蹤路由,它通過我的家庭路由器)。我無法存取任何其他互聯網 IP(在 nmap 追蹤路由上,我只看到一行 192.168.42.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

根據您的發行版,應該有一種方法可以使最後的設定永久化(該命令僅使其持續到下次重新啟動為止)。

相關內容