我在 apache 网站旁边设置了一个 openvpn 服务器,该网站只能在同一台机器上通过端口 8100 访问。我的 /etc/openvpn/server.conf 文件如下所示:
port 1194
proto tcp
dev tun
ca ./easy-rsa2/keys/ca.crt
cert ./easy-rsa2/keys/server.crt
key ./easy-rsa2/keys/server.key # This file should be kept secret
dh ./easy-rsa2/keys/dh1024.pem # Diffie-Hellman parameter
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# make sure clients can still connect to the internet
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
现在我尝试只让连接到 vpn 网络的客户端通过端口 8100 访问 apache 上的网站。所以我定义了一些 iptables 规则:
#!/bin/sh
# My system IP/set ip address of server
SERVER_IP="10.0.0.10"
# Flushing all rules
iptables -F
iptables -X
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Allow incoming access to port 8100 from OpenVPN 10.8.0.1
iptables -A INPUT -i tun0 -p tcp --dport 8100 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o tun0 -p tcp --sport 8100 -m state --state ESTABLISHED -j ACCEPT
# outgoing http
iptables -A OUTPUT -o tun0 -p tcp --dport 8100 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -p tcp --sport 8100 -m state --state ESTABLISHED -j ACCEPT
现在,当我从客户端计算机连接到服务器并尝试访问 10.0.0.10:8100 上的网站时,我的浏览器无法打开它。我是否必须将流量从 tun0 转发到 eth0?或者我还遗漏了什么?
仅供参考:我正在运行 ubuntu server 12.04.1 LTS。已安装 Iptables。
答案1
由于您使用的子网/IP 与 OpenVPN 提供的子网/IP 不同,您可能需要允许服务器执行 NAT 才能使其正常工作。
运行以下命令:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
您应该微调 iptables 规则以满足您的需要。这应该可以让您正常工作。