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

相关文章

1.安装过程出现0x00000000指令引用的0x00000000内存该内存不能为written 如果你安装的是inux系统 需要在...
写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:...
写在前面:以下步骤中需要在终端输入命令,电脑端查看博客的朋友可以直接复制粘贴到终端,手机端查看的...
ubuntu16.04和18.04更换国内源 写在前面:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用...
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后...
又来造轮子了。。。。。。。。。。。。。。。。 今天使用w3af向文件中写入的时候,发现没有write权限,...