![Linux 上的 OpenVPN 和网关](https://linux22.com/image/665596/Linux%20%E4%B8%8A%E7%9A%84%20OpenVPN%20%E5%92%8C%E7%BD%91%E5%85%B3.png)
我的家庭服务器安装了 Debian
当我打开 openvpn 时,它会创建新的界面 -tun0
它还为该接口添加了一些路由规则,包括0.0.0.0/1 via 192.168.101.1 dev tun0
,但我总是删除此规则以使其成为eth0
默认接口,因此默认情况下一切都通过它进行
我想将该服务器设置为网关,并使所有数据从转发eth0
到tun0
然后我可以在局域网中的任何设备上将默认网关更改为服务器的 ip,以使用 vpn
问题是我该如何做到这一点?
答案1
我找到了我的问题的答案:
- 启动 OpenVPN:
openvpn --config /path/to/config.file &
- 等待连接成功:
until ip l sh tun0 >/dev/null 2>&1 ; do sleep 1; done
- 删除制定默认接口的规则
tun0
:
ip route del 0.0.0.0/1 via 192.168.101.1 dev tun0
- 启用IP转发:
sysctl -w net.ipv4.ip_forward=1
- 启用并配置 NAT:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT