将多宿主主机配置为路由器

将多宿主主机配置为路由器

我的家庭网络上有两台 Linux 主机,host1 和 host2。我尝试配置它,以便 host1 连接到 vpn,而 host2 可以通过 host1 路由通过 vpn 发送数据包。我天真的尝试是运行

root@host1 # iptables -A FORWARD -i wlp2s0 -o tun0 -j ACCEPT
root@host1 # iptables -A FORWARD -i tun0 -o wlp2s0 -j ACCEPT 
root@host1 # iptables -A INPUT -i wlp2s0 -j ACCEPT
root@host1 # iptables -A INPUT -i tun0  -j ACCEPT 
root@host1 # iptables -A OUTPUT -o tun0 -j ACCEPT
root@host1 # iptables -A OUTPUT -o wlp2s0 -j ACCEPT 

在路由主机上,

user@host2 $ sudo ip route add 104.24.122.145/32 via 10.0.0.76 dev wlp58s0
user@host2 $ curl 104.24.122.145 -H 'Host: ifconfig.io' 

在另一台主机上。我的想法是,如果一切按预期运行,我可以通过点击 ifconfig.io 的一个 ip 来获取我的家庭 ip 地址,并通过点击另一个 ip 来获取 vpn ip 地址。

但是,当我运行该curl命令时,它会超时,并且 iptable 日志似乎没有表明有任何流量正在跳转。(大概INPUTOUTPUT数据包都来自背景流量)。

root@host1 # sudo iptables -L -vn 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    5   383 ACCEPT     all  --  tun0   *       0.0.0.0/0            0.0.0.0/0           
    8   847 ACCEPT     all  --  wlp2s0 *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  tun0   wlp2s0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  wlp2s0 tun0    0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    5   459 ACCEPT     all  --  *      wlp2s0  0.0.0.0/0            0.0.0.0/0           
    2   151 ACCEPT     all  --  *      tun0    0.0.0.0/0            0.0.0.0/0          

我错过了什么?我正在使用作为理解的基线。我没有完全遵循它,但我看不出我做错了什么。

答案1

您需要启用 ip 转发:

  1. 编辑 /etc/sysctl.conf。取消注释该行

    net.ipv4.ip_forward=1

  2. 重新加载新设置:

    sudo sysctl -p /etc/sysctl.conf

相关内容