ubuntu – Amazon EC2上OpenVPN服务器的路由设置

前端之家收集整理的这篇文章主要介绍了ubuntu – Amazon EC2上OpenVPN服务器的路由设置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这里的软件开发人员试图通过在amazon EC2上设置OpenVPN服务器来访问其中的所有内部资源,从而使他的sysadmin-foo启动并运行.以下是我在新的Ubuntu 12.04 Canonical AMI上的设想:
Local network          /        EC2 Cloud,10.*.*.*/255.0.0.0
  172.16.20.*/,'
     255.255.255.0,'                +-----------------+
                      .'                 |Amazon DNS server|
                      |,'|  172.16.0.23    |
 +---------------+   |,'  +-----------------+
 | Workstation   |   |,'
 |               XXX |   +-------,'------+
 | 172.16.20.1   |  XXXX | OpenVPN server|
 +------`.-------+   \  XX  10.23.45.67  `-.  +-------------+
          \          '.  +---------------+  `-. Second server
  +--------`.---+     |                       | 10.23.45.68 |
  |Local server |      \                      +-------------+
  | 172.16.20.2 |       \
  +-------------+        \

客户端可以连接到VPN(甚至在iPhone上),但是我无法全面了解我需要检查哪些子系统.

以下是我的设置目标:

> VPN客户端应该能够通过VPN访问内部资源,其余的Internet应该通过本地网关路由
> VPN客户端应该能够访问OpenVPN服务器可以访问的所有服务器
> VPN客户端应使用172.16.0.23的Amazon DNS服务器作为其主DNS服务器,因为该服务器将Amazon生成的主机名解析为内部IP地址(即ec2-45-67-8-9.eu-west-1.compute.当该服务器解析时,amazonaws.com将解析为10.23.45.67,而其他地方则为45.67.8.9)
> VPN客户端应该看到对方

这是我配置/etc/openvpn/server.conf的方式(我希望这只是有趣的部分):

persist-tun
server 172.16.10.0 255.255.255.0
push "route-gateway 172.16.10.1"
push "route 10.0.0.0 255.0.0.0"

push "route 172.16.0.23"
push "dhcp-option DNS 172.16.0.23"

但是,我不确定这些openvpn服务器的哪些部分对我有用:

>我是否需要在服务器上配置iptables?如果是这样,怎么样?
>我是否需要在服务器上设置路由(除了被推送到客户端的路由)?如果是这样,哪个以及如何?
>我遗漏了哪些其他网络软件导致我的客户无法成功连接?

您需要在内核中的OpenVPN服务器上启用转发(/ proc / sys / net / ipv4 / ip_forward),并且您必须全局或有选择地允许在防火墙(iptables)中转发,例如:
# there is probably already a rule allowing all established connections
# iptables -A FORWARD -m conntrack --ctstate ESTABLISHED -j ACCEPT
# the next rules for every OpenVPN interface (or once for the respective address block)
iptables -A FORWARD -i tun0 -d 10.0.0.0/8  -j ACCEPT
iptables -A FORWARD -i tun0 -d 172.16.0.23 -j ACCEPT
# if the local network shall be accessible
# iptables -A FORWARD -i tun0 -d 172.16.20.0/24 -j ACCEPT

如果只是简单的客户端连接,则无需在服务器上设置路由.如果172.16.20.1连接为本地网络的网关,则需要172.16.20.0/24的路由,但这可能(并且最好)在172.16.20.1的OpenVPN配置中设置.

编辑1

如果您无法在某些系统上配置路由,并且它们的路由不会以正确的方式发送流量,那么您需要NAT(更精确:SNAT):

iptables -t nat -A POSTROUTING -d $PROBLEM_HOST_IP \! -s $LOCAL_IP \
  -j SNAT --to-source $LOCAL_IP

相应地设置变量.假设您可以在172.16.20.0/24中为目标设置正确的路由,那么您可以通过这种方式更轻松地执行此操作:

iptables -t nat -I POSTROUTING 1 -s $LOCAL_IP -j ACCEPT
iptables -t nat -I POSTROUTING 2 -d 172.16.20.0/24 -j ACCEPT
iptables -t nat -I POSTROUTING 3 -j SNAT --to-source $LOCAL_IP

猜你在找的Ubuntu相关文章