Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – OpenVPN iptables / NAT路由大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试建立一个OpenVPN VPN,它将通过OpenVPN服务器从客户端传输一些(但不是全部)流量到互联网. 我的OpenVPN服务器在eth0上有一个公共IP,并使用tap0创建一个本地网络192.168.2.x.我有一个客户端从本地IP 192.168.1.101连接并获得VPN IP 192.168.2.3. 在服务器上,我运行: iptables -A INPUT -i tap+ -
我正在尝试建立一个OpenVPN VPN,它将通过OpenVPN服务器从客户端传输一些(但不是全部)流量到互联网.

我的OpenVPN服务器在eth0上有一个公共IP,并使用tap0创建一个本地网络192.168.2.x.我有一个客户端从本地IP 192.168.1.101连接并获得VPN IP 192.168.2.3.

在服务器上,我运行:

iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

iptables -t nat -A POSTRoutING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

在客户端上,认值仍然是通过192.168.1.1路由.为了将http指向192.168.2.1,我跑了

ip rule add fwmark 0x50 table 200
ip route add table 200 default via 192.168.2.1
iptables -t mangle -A OUTPUT -j MARK -p tcp --dport 80 --set-mark 80

现在,如果我尝试访问客户端上的网站(例如,wget google.com),它就会挂起.在服务器上,我可以看到

$sudo tcpdump -n -i tap0
tcpdump: verbose output suppressed,use -v or -vv for full protocol decode
listening on tap0,link-type EN10MB (Ethernet),capture size 96 bytes
05:39:07.928358 IP 192.168.1.101.34941 > 74.125.67.100.80: S 4254520618:4254520618(0) win 5840 <mss 1334,sackOK,timestamp 558838 0,nop,wscale 5>
05:39:10.751921 IP 192.168.1.101.34941 > 74.125.67.100.80: S 4254520618:4254520618(0) win 5840 <mss 1334,timestamp 559588 0,wscale 5>

其中74.125.67.100是google.com获取的IP.

为什么MASQUERADE不工作?更确切地说,我看到源显示为192.168.1.101 – 不应该有什么东西表明它来自VPN?

编辑:[来自客户端]的一些路线

$ip route show table main
192.168.2.0/24 dev tap0  proto kernel  scope link  src 192.168.2.4
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.101  metric 2
169.254.0.0/16 dev wlan0  scope link  metric 1000
default via 192.168.1.1 dev wlan0  proto static

$ip route show table 200
default via 192.168.2.1 dev tap0

解决方法

你可以发布ip route show table main和ip route show table 200的输出吗?我怀疑你错过了’200’表中的几条路线.您的’200’路由表应该与’main’表具有几乎相同的路由,唯一的区别是认路由.

我看到你更新了,我相信我的原始建议是正确的.请注意您的主表如何为本地网络和vpn链接提供“范围链接”路由?这些路线也必添加到’200’表中.

除了您使用的其他命令外,请尝试运行这些命令.

ip route add 192.168.2.0/24 dev tap0  proto kernel  scope link  src 192.168.2.4 table 200
ip route add 192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.101  metric 2 table 200
ip route flush cache

如果要编写这些路由的创建脚本,可以使用它.它会将所有“范围链接”路由从主路由表复制到另一个表中.

#!/bin/bash
IFACE=wlan0
RT=200
/sbin/ip route list scope link table main proto kernel dev ${IFACE} \
| while read ROUTE ; do
    # and add that route to all the tables mentioned in the rrtables option
    # in thE interfaces file
    /sbin/ip route add table ${RT} scope link proto kernel dev ${IFACE} ${ROUTE}
done

一个更新.我刚注意到我错过了一些比较明显的东西.

您的MASQ语句似乎正在处理eth0.从您发布的路由表中,您的输出设备不是eth0.而不是这个.

iptables -t nat -A POSTRoutING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

您可能应该使用这样的语句.

iptables -t nat -A POSTRoutING -o tap0 -j MASQUERADE

大佬总结

以上是大佬教程为你收集整理的linux – OpenVPN iptables / NAT路由全部内容,希望文章能够帮你解决linux – OpenVPN iptables / NAT路由所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。