Nik*_*lin 6 iptables vpn forwarding tunneling
我正在尝试将流量从物理接口转发enp5s0到虚拟接口tun0。目标是tun0基本上接收来自 的所有数据包enp5s0。
首先,我使用命令启用转发
sudo sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)
然后我tun0通过运行创建
sudo ip tuntap add dev tun0 mod tun
Run Code Online (Sandbox Code Playgroud)
我为其分配 IP 地址并打开设备:
sudo ifconfig tun0 10.1.8.5 netmask 255.255.255.0 promisc up
Run Code Online (Sandbox Code Playgroud)
我想让所有数据包从enp5s0到tun0,所以我必须使用iptables。我需要制定一条允许从enp5s0to转发的规则tun0,因此命令是
sudo iptables -A FORWARD --in-interface tun0 --out-interface enp5s0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
然后我通过运行启用 NAT
sudo iptables -t nat -A POSTROUTING --out-interface enp5s0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
tcpdump显示 上没有流量tun0。
另外,我尝试了几乎相同的事情,但使用的是 TAP 设备。brctl我用、 添加tap0和创建了一个桥enp5s0,但没有收到任何数据包tap0,并且一切正常enp5s0。在 TUN 案例中没有任何default gw 10.1.8.5效果。哪里有错误呢?
小智 3
您的输入和输出接口在 iptables 命令中是相反的。
他们应该是:
sudo iptables -A FORWARD --in-interface enp5s0 --out-interface tun0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
和:
sudo iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9762 次 |
| 最近记录: |