我正在尝试通过我的 ppp0 接口发送某些端口流量,这是一个 pptp vpn 隧道,
首先,我使用无线 USB 接口,我连接到我的接入点,然后我启动我的 VPN,有一个连接,但我不会通过它来传输所有连接,也不想这样做,所以,假设我想通过我的 VPN(接口 dev ppp0)传输所有端口 80 数据包。
我第一次运行:
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0xa
为了标记正确的数据包,我添加了一个名为 vpn_table 的表,然后添加
ip route add default dev ppp0 table vpn_table
当我这样做时,流量开始通过 ppp0,但没有加载任何页面。我想我一定造成了某种冲突,或者我在 vpn_table 中添加的路由不太正确。
我不确定,我认为我正确地标记了数据包,但我也不确定。
更新:我想我已经解决了部分问题:运行 tcpdump -i ppp0 显示确实有通过 ppp0 发出的请求,但现在却没有任何响应,而且页面无法通过该界面加载……我仍然遗漏了一些东西。
答案1
我终于解决了这个问题,我会尝试为其他人发布精确的说明:
ip address show:
vpn地址是192.191.145.5
一些相关信息:
39: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
inet 10.20.0.42 peer 10.20.0.1/32 scope global ppp0
ip 路由显示表本地本地 10.20.0.42 dev ppp0 proto 内核范围主机 src 10.20.0.42
附加命令:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
ip route add 10.20.0.1/32 dev ppp0 table vpn_table
ip route add 0.0.0.0/1 via 10.20.0.42 dev ppp0 table vpn_table
ip route add 192.191.145.5 via 10.20.0.42 dev ppp0 table vpn_table
这就是 vpn 表中所需要的
此命令
sysctl -w net.ipv4.conf.ppp0.rp_filter=2 is really imporant
否则你将不会收到回复
与此相同:
ip route flush cache
我希望这对某些人有帮助!