如何为具有 OpenVPN 和两个接口的拨号 VPN 配置 iptables?

如何为具有 OpenVPN 和两个接口的拨号 VPN 配置 iptables?

我有一个运行 Amazon Linux 的 AWS EC2 实例,它连接了两个弹性网络接口 (ENI):eth0 和 eth1。我正在连接到 eth0 上的公共 IP。一切正常,只是我想将未加密的流量路由出 eth1。即客户端连接到 eth0 以设置加密的 VPN 隧道,然后他/她的未加密互联网流量将路由进出 eth1 并通过 eth0 上的隧道返回。

尽管尝试了几个小时,但我对 iptables 的了解还不够,无法使此配置正常工作。我希望这是一个简单的配置?

我已经从源代码安装了最新版本的 OpenVPN,并执行以下操作:

  1. 禁用接口上的源/目标检查
  2. 在“rc.local”中添加了以下内容:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
  3. 添加了以下 iptables 命令: iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 443 -j ACCEPT iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -s 10.18.14.0/24 -o eth0 -j MASQUERADE

我的服务器配置文件如下所示:

端口 443
proto tcp 服务器
开发调谐
tls 服务器
服务器 10.18.14.0 255.255.255.0

ca /etc/openvpn/pki/ca.crt
证书 /etc/openvpn/pki/vpnserver.crt
密钥 /etc/openvpn/pki/vpnserver.key
dh /etc/openvpn/pki/dh.pem

ifconfig-pool-persist ipp2.txt
推“重定向网关 def1 旁路-dhcp”
推“dhcp-选项 DNS 8.8.8.8”
推“dhcp-选项 DNS 8.8.4.4”

保持活动 5 15
康普
最大客户端数 5
持久密钥
坚持-tun
状态 openvpn-status.log
日志附加 /var/log/openvpn_road.log
动词 6
靜音 20

tun-mtu 1500
授权 SHA1
密钥大小 128
密码 BF-CBC

答案1

您需要设置路由,您的规则看起来不错,但您需要更改 MASQ 规则。

iptables -t nat -A POSTROUTING -s 10.18.14.0/24 -o eth1 -j MASQUERADE

我还会为您的原始数据包建议一些更简单的规则。

# Allows packets from connections initiated by the box or already established
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

现在至于路由,我假设您只希望 OpenVPN 客户端通过 eth1 退出,而不是服务器本身,我假设服务器本身具有通过 eth0 的默认路由。我们需要为您的 OpenVPN 客户端创建一个新的路由表,我们将其称为 ovpn-inet。

编辑/etc/iproute2/rt_tables,在末尾插入以下内容并保存。

1 ovpn-inet

然后/etc/sysconfig/network-scripts/route-eth1使用以下内容创建,替换<gw on eth1>其中的其他属性<>

default via <gw for eth1> dev eth1 table ovpn-inet
<local network on eth1> dev eth1 src <eth1 ip adress> table ovpn-inet

现在创建/etc/sysconfig/network-scripts/rule-eth1

from <ip address of eth1>/32 table ovpn-inet
from 10.18.14.0/24 table ovpn-inet
to <ip address of eth1>/32 table ovpn-inet

还有一个建议是将 OpenVPN 切换到 UDP,以提高性能。如果您需要通过 TCP 运行 HTTPS 服务器,这也将允许您运行 HTTPS 服务器。还可以考虑tls-crypt在 OpenVPN 服务器配置中使用,这是对您的安装进行一些强化的简单方法。

proto udp4

现在重新启动网络以使更改生效。

/etc/init.d/network restart

相关内容