我有一个运行良好的 openvpn 设置。有大约 50 个客户端连接,一切都很方便。我需要其中一个客户端将所有流量路由到 vpn。我ccd
为该特定客户端设置了一个,并将添加到push "redirect-gateway def1"
其中。路由表似乎在客户端中更新。我可以访问 vpn 中的所有主机,但无法访问 vpn 之外的任何其他内容。从客户端跟踪路由时,所有内容都转到 vpn 网关,但之后不会再进一步。我相信罪魁祸首是服务器中的 iptables 配置。
这是设置
- 我有一个使用子网 10.170.xx 的 openvpn,其 vpn 网关为 10.170.0.1(VPNGATEWAY)
- 我有一个不同的子网 10.171.xx,它的 IP 通过 ccd 记录分配(这是管理网络,有 3 个客户端)
- 我希望所有流量都通过 VPN 的客户端是 10.171.0.1(客户端)
从 10.171.0.1 (客户端) 我可以 ping 10.170.0.1 (VPNGATEWAY)。实际上,我可以 ping 10.170.xx 和 10.171.xx 中的所有主机,但无法 ping 8.8.8.8。
这是 iptables 配置
有很多规则,我把它们去掉了,以使其更简单。
*filter
:INPUT DROP [1000:900000]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
# here were some rules accepting certain ports 22, 80, etc
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 13 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 30 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# this is the client that needs internet thru the gateway
# i've tried to make as permissive as possible but still to no avail
-A INPUT -s 10.171.0.1 -j ACCEPT
-A FORWARD -s 10.171.0.1 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT
我还尝试添加
iptables -t nat -A POSTROUTING -s 10.171.0.1 -o eth0 -j MASQUERADE
但还是没用。有什么想法吗?
答案1
您有这两条规则来允许您的流量。但这些规则可能不是您想要的。
或者至少不是您唯一想要的。
-A INPUT -s 10.171.0.1 -j ACCEPT
-A FORWARD -s 10.171.0.1 -j ACCEPT
您的防火墙规则集似乎设计为有状态的,但这两条规则是无状态的。您要么需要添加两条规则来处理另一个方向的流量,要么添加一些状态匹配。