我试图在本教程的基础上进一步扩展我最近向这里提出的一个问题(并得到了帮助):https://www.instructables.com/Raspberry-Pi-VPN-Gateway/#step5。
使用Raspberry PI作为VPN盒,我应用了以下ip表来通过源IP地址192.168.4.26的VPN接口(nordlynx)路由通信量,并退出相同的接口,这是非常完美的。
目前,我使用一个接口进行输入/输出(eth0),而VPN由NordVPN提供(nordlynx是vpn接口的名称)。
sudo iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o nordlynx -s 192.168.4.26 -j ACCEPT
sudo iptables -A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i eth0 -p icmp -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP
我的问题是,任何IP地址,如果没有通过nordlynx转发,就不再工作了。我试图通过转发另一个设备IP地址来进行测试:192.168.4.51从eth0接口返回,这样它就不必通过VPN,但它不能工作:
sudo iptables -A FORWARD -i eth0 -o eth0 -s 192.168.4.51 -j ACCEPT
sudo iptables -A INPUT -i eth0 -s 192.168.4.51 -j ACCEPT
我知道也许我应该用iproute2
来做这件事?我尝试过添加这些ip规则和路由,但仍然没有:
ip rule add from 192.168.4.51 table 200
ip route add default via 192.168.4.1 dev eth0 table 200
ip route flush cache
这是因为不管ip规则/路由如何,它都被iptables规则阻塞了吗?我在这里有点困惑,所以任何关于我做错了什么的建议都会有很大的帮助。
编辑:
+--------------+
| |
| ISP MODEM |
| |
+--------------+
|
|
+------------------------------------+
| |
| MAIN ROUTER |
| 192.168.4.1 |
| |
+------------------------------------+
| | |
| | |
+----------------+ +--------------+ +---------------+
| | | | | |
| MACBOOK 1 | | RASPBERRY Pi | | MACBOOK 2 |
| 192.168.4.26 | | 192.168.4.63 | | 192.168.4.51 |
| |---| |---| |
+----------------+ +--------------+ +---------------+
--- ---
\--- ---/
\--- ---/
\--- ---/
\-- --/
MANUALLY SET ROUTER ADDRESS OF DEVICES TO RASPBERRY Pi
(192.168.4.63)
pi@raspberrypi:~ $ ip rule show
0: from all lookup local
32762: from 192.168.4.51 lookup vpnbypass
32763: from all lookup main suppress_prefixlength 0
32764: not from all fwmark 0xca6c lookup 51820
32765: from all to 192.154.196.27 lookup main
32766: from all lookup main
32767: from all lookup default
pi@raspberrypi:~ $ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 vpnbypass
一旦启动VPN,下面的IPtables将由NordVPN为Linux应用程序(wireguard协议)设置:
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -s 192.154.196.27/32 -i wlan0 -j ACCEPT
-A INPUT -s 192.154.196.27/32 -i eth0 -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --sport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 22 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -i wlan0 -j DROP
-A INPUT -i eth0 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o nordlynx -j ACCEPT
-A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.154.196.27/32 -o wlan0 -j ACCEPT
-A OUTPUT -d 192.154.196.27/32 -o eth0 -j ACCEPT
-A OUTPUT -o wlan0 -p udp -m udp --dport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p udp -m udp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o wlan0 -j DROP
-A OUTPUT -o eth0 -j DROP
发布于 2020-11-25 15:02:34
您能解释一下您的网络拓扑吗? 192.168.4.26是您在RPi上的本地ip地址,192.168.4.51是RPi后面的另一个PC?
请复制和粘贴这些命令的输出:
ip rule show
cat /etc/iproute2/rt_tables
ip route show table xyz (for every table xyz form ip rule show command above or table name from rt_tables file)
https://unix.stackexchange.com/questions/621478
复制相似问题