无法通过 NAT 访问外部网络

无法通过 NAT 访问外部网络

网络

我正在设置以下网络,有三个系统,VPN 应该在防火墙和 Kali 之间进行中介。假设所有系统都使用 Ubuntu 16.04(最终我将在 Ubuntu 上安装 Kali 工具):

我的网络

  • 我的 Kali 能够访问 VPN 服务器,但无法 ping 防火墙。
  • 我看到向 VPN 服务器发送了询问防火墙的 ARP 请求,但没有回复。
  • 我想在 VPN 服务器中使用 NAT。
  • 编辑:防火墙似乎能够与 Kali 系统建立新会话,但反过来却不行。这很奇怪,因为所有 Iptables 策略默认都是 ACCEPT。

问题

  • 为什么当询问防火墙的 ARP 地址时,VPN 没有回复?我原本以为防火墙会用自己的 MAC 地址回复。
  • 我还应该做什么才能在 VPN 服务器中启用 NAT?

航线

iptables 目录

VPN 服务器的 Iptables:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i enp0s3 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE # Enmascarmiento IP

iptables -A FORWARD -i tap0 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp0s3 -o tap0 -j ACCEPT

另外两个系统的 Iptables 具有“全部接受”策略。

转发和伪装

已为 VPN 服务器启用转发。我已经在 /proc/sys/net/ipv4/ip_forward 中进行了设置。

此外,系统具有使用 masquerada 的模块(lsmod):

ipt_MASQUERADE         16384  1
nf_nat_masquerade_ipv4    16384  1 ipt_MASQUERADE
nf_nat                 24576  2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack          106496  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
x_tables               36864  5 ip_tables,ipt_MASQUERADE,xt_conntrack,iptable_filter,iptable_mangle

配置文件

固定的

我发现了错误:

12.5.0.0 * 255.255.255.0 U 0 0 0 tap0

问题是我在 Kali 系统中为这条路由设置了一个默认网关。我必须指定通过 10.8.0.1 输出所有流量,在我看来这是多余的,因为这是唯一可行的方法。

答案1

您不允许在 VPN 服务器上转发或接受新连接。更改

iptables -A FORWARD -i tap0 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i tap0 -o enp0s3 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

并尝试是否有效。如果有效,请删除一般规则的 NEW 语句,并创建一个仅转发和接受您需要转发的协议/端口的新规则,例如:

iptables -A FORWARD -i tap0 -o enp0s3 -p tcp --dport 22 -m state --state NEW -j ACCEPT

此外,如果您想将外部请求转发到内部 LAN,则必须使用目标 NAT:

示例:将端口 10022 上的 SSH 转发到内部机器端口 22:

iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.100:22
iptables -t nat -A POSTROUTING -p tcp --dport 10022 -j MASQUERADE 

另外,您是否在 /etc/sysctl.conf 中永久设置了转发规则?如果您这样做,echo 1 > /proc/sys/net/ipv4/ip_forward它只会在下次重启前有效。

编辑:我刚发现我瞎了。当然,您的防火墙不会回复您的 ARP 请求,它在另一个网络中。根据定义,ARP 请求不会被转发。如果您的笔记本电脑想要与防火墙通信,它不会直接通信,而是通过网关(您的 VPN)进行通信。在其路由表中,VPN 是与防火墙通信的网关,因此它根本不应该向防火墙发送 ARP 请求。ARP 不是 IP,它不会被转发。

您应该测试 NAT 是否与 SSH 一起工作,尝试我之前发布的内容并通过端口 10022 连接到您的路由器,您应该转发到您的防火墙。

相关内容