OpenVPN 根据子网路由远程流量

OpenVPN 根据子网路由远程流量

我成功设置了 OpenVPN,以便将所有流量通过远程 openvpn 服务器路由。

OpenVPN 服务器有两个接口:eth0 -> Internet 访问 eth1 -> 私有网络:192.168.1.0/24

现在,所有流量都通过 Eth0 进行网络地址转换。

服务器配置文件

# SERVER UDP/9494
mode server
proto udp
port 9494
dev tun
tcp-queue-limit 128
tun-mtu 1500
mssfix 1300
tun-mtu-extra 32
txqueuelen 15000
# KEYS
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
# NETWORK
server 192.168.2.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 4.4.4.4"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
# SECURITY
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# LOGS
verb 3
mute 20
status openvpn-status.log
; log-append /var/log/openvpn.log

Iptables:

iptables -A INPUT -p udp --dport 9494 -d $SERVER_IP --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i tun0 -j ACCEPT 
iptables -I FORWARD -o tun0 -j ACCEPT 
iptables -I OUTPUT -o tun0 -j ACCEPT 
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT 
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE  

我想做同样的事情,但 192.168.1.0/24 范围除外,该范围必须与 Eth1 进行网络地址转换

我如何使用 iptables 来实现这一点?

谢谢你的建议

答案1

我认为您也应该在 POSTROUTING 和 FORWARD 中添加私有网络的规则,但应该定义它们POSTROUTING 规则的其余部分。

此外,如果我没有看错的话,第一个没有任何源网络规范的 POSTROUTING 规则会匹配所有数据包,因此下一行永远不会匹配 - 删除它。

因此我认为你的 iptables 规则应该是这样的:

iptables -A INPUT -p udp --dport 9494 -d $SERVER_IP --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -I OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.1.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

也许您应该进行一些日志记录来查看是否需要重新配置或者是否遗漏了任何内容。

在上述规则后添加:

iptables -A FORWARD -j LOG --log-prefix 'iptables-forward: '
iptables -t nat -A POSTROUTING -j LOG --log-prefix 'iptables-postrouting: '

答案2

如果您只想添加路由,以便您的 OpenVPN 客户端可以与网络的其余部分通信,只需执行以下操作:

推“路由 192.168.1.0 255.255.255.0”

推“路由 192.168.2.0 255.255.255.0”

相关内容