Ric*_*ich 6 iptables openvpn openvz
我正在将一个在 openvz 上运行的 VPS 配置为使用 tun 接口的 OpenVPN 服务器。
我在使用 iptables 规则时遇到了一些麻烦,因为 MASQUERADE 不可用。
如果 MASQUERADE 可用,我会按如下方式编写 iptables 规则:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
但是,鉴于我无法使用 MASQUERADE,我该如何改用 SNAT 或 DNAT 来重写这些规则?
提前致谢
- - - - - - - 编辑 - - - - - - - -
感谢 Olipro 的解决方案。以下是对我有用的规则:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source 1.2.3.4
Run Code Online (Sandbox Code Playgroud)
其中1.2.3.4是openvpn服务器的公网ip地址。
如果您的全球 IPv4 地址频繁更改(例如在 ADSL 上),您实际上只需要 MASQUERADE 否则,SNAT 通常更可取。
代替 MASQUERADE 规则,像这样使用 SNAT:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 1.2.3.4
Run Code Online (Sandbox Code Playgroud)
用虚拟机的实际公共 IP 替换 1.2.3.4...此外,我希望 eth0 是 veth0 或 venet0,因为它是一个 OpenVZ 框。
| 归档时间: |
|
| 查看次数: |
12048 次 |
| 最近记录: |