Iptables
配置伺服器以通過 OpenVPN 路由所有流量
我有一個執行良好的 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 通過 ccd 記錄分配其 ip(這是管理網路,有 3 個客戶端)
- 我希望通過 vpn 獲得所有流量的客戶端是 10.171.0.1 (CLIENT)
從 10.171.0.1 (CLIENT) 我可以 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
但仍然沒有工作。有任何想法嗎?
你有這兩條規則來允許你的交通。但這些規則可能不是你想要的。
或者至少不僅僅是你想要的。
-A INPUT -s 10.171.0.1 -j ACCEPT -A FORWARD -s 10.171.0.1 -j ACCEPT
您的防火牆規則集似乎設計為有狀態的,但這兩條規則是無狀態的。您要麼需要添加兩條規則來處理另一個方向的流量,要麼添加一些狀態匹配。