大佬教程收集整理的这篇文章主要介绍了linux – OpenVPN iptables / NAT路由,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的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
我看到你更新了,我相信我的原始建议是正确的.请注意您的主表如何为本地网络和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,请注明来意。