我正在尝试在虚拟机中设置 Ubuntu Server 16.04,作为通过 OpenVPN 连接传输流量的网关。
概念是,此虚拟机具有静态 IP,我网络上的客户端可以将该 IP 设置为其网关,并且虚拟机应通过 OpenVPN 连接路由流量。所有其他客户端默认通过 DHCP 连接到主网关。
我以此为指导并根据我的目的进行调整。(https://killtacknine.com/building-an-ubuntu-16-04-router-part-3-firewalls/) 但是,当我将客户端设置为使用此隧道网关虚拟机作为默认网关时,它无法连接到任何出站设备。这是我的配置:
隧道网关(运行 Ubuntu Server 16.04)IP:192.168.2.3 网关:192.168.2.1(这是 DHCP 客户端获取的主要网关)
/etc/rc.local的内容:
# /etc/rc.local
# Default policy to drop all incoming packets
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Accept incoming packets from localhost and the LAN interface
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i ens160 -j ACCEPT
# Accept incoming packets from the WAN if the router initiated
# the connection
iptables -A INPUT -i tun0 -m conntrack \
--ctstate ESTABLISHED,RELATED -j ACCEPT
# Forward LAN packets to the WAN
iptables -A FORWARD -i ens160 -o tun0 -j ACCEPT
# Forward WAN packets to the LAN if the LAN initiated the
# connection
iptables -A FORWARD -i tun0 -o ens160 -m conntrack \
--ctstate ESTABLISHED,RELATED -j ACCEPT
# NAT traffic going out the WAN interface
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
# rc.local needs to exit with 0
exit 0
tun0 是在系统启动时通过 systemctl 使用配置文件建立的。一旦建立,隧道网关虚拟机默认就可以毫无问题地通过它发送流量。
客户端配置如下:IP:192.168.2.42 默认网关:192.168.2.3
请让我知道我需要修复什么或者我可以提供任何其他信息!
答案1
在我的所有 iptables 声明(以上)之上的 /etc/rc.local 中添加以下内容解决了该问题:
echo 1 > /proc/sys/net/ipv4/ip_forward