对上一篇一些问题的补充说明

这次想实现的是就近访问日本vps,然后在日本vps上通过vpn方式访问美国vps上的有美国ip限制的youtube资源。这样客户端就无需做多余的设置通过访问日本vps就可以访问有美国ip限制的youtube资源了。

vpn采用softether vpn server
服务器端
创建虚拟HUB server/管理虚拟HUB/并添加用于客户端连接用的 管理用户
本地网桥设置/将虚拟HUB server 选择创建的类型 新 tap设备的桥接,并输入设备名称soft1
ifconfig tap_soft1 192.168.60.100
ifconfig tap_soft1 mtu 1392
添加ipv6地址,只是为了以后不需要改动服务器配置所以固定一个地址
ip address add fe80::4ac:20ff:fe9c:1000/128 dev tap_soft1
#ip address del fe80::4ac:20ff:fe9c:1000/128 dev tap_soft1

客户端
创建虚拟HUB client/管理虚拟HUB/管理级联连接 创建到服务器端的连接
本地网桥设置/将虚拟HUB client 选择创建的类型 新 tap设备的桥接,并输入设备名称soft1
ifconfig tap_soft1 192.168.60.200
ifconfig tap_soft1 mtu 1392
#ip address add fe80::4ac:20ff:fe9c:2000/128 dev tap_soft1
#ip address del fe80::4ac:20ff:fe9c:2000/128 dev tap_soft1
如果能互相ping通vpn连接已经没有任何问题。
ping 192.168.60.100
ping6 -I tap_soft1 fe80::4ac:20ff:fe9c:1000

参考debian官方的 源码包操作

https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.zh-cn.html

注意 Debian 7 (Wheezy) dnsmasq好像是v2.62 通过dnsmasq -v并不支持 ipset。
vi /etc/apt/sources.list
deb-src http://debian.mirror.constant.com/ jessie main
apt-get update
apt-get build-dep dnsmasq #编绎dnsmasq所需要的依赖包
apt-get -b source dnsmasq
dpkg -i file.deb

还有个ipset-dns,当然新版dnsmasq已经内置
http://git.zx2c4.com/ipset-dns/about/
ipset-dns letitgo gov6 5353 8.8.8.8
ipset-dns是一个自动把解析的ip添加到set里的工具,这句命令的意识是创建一个本地的dns服务器,监听5353端口,上游dns服务器使用8.8.8.8,解析的ipv4地址添加到letitgo的set里,ipv6地址添加到gov6里。非常cool,但是不能指定上游服务器的端口,解析的地址会被污染,并不实用。
新建ipset
ipset destroy outwall6
ipset destroy outwall4
ipset -N outwall6 iphash family inet6
ipset -N outwall4 iphash
修改/etc/dnsmasq.conf
ipset=/youtube.com/outwall4,outwall6

#防火墙屏蔽向外查询youtube的AAAA记录,主要是防止ipv4+ipv6服务器,强制访问youtbe时使用ipv4查询结果方便vpn路由操作。
#iptables -I OUTPUT -o eth0 -p udp –dport 53 -m string –hex-string “|07|youtube|03|com|00001c|” –algo bm -j DROP

生成查询结果,注意好像得清空dnsmasq缓存才能得到结果,而且通过nslookup生成的结果很少,
#service dnsmasq restart
kill -HUP $(pidof dnsmasq)
nslookup www.youtube.com
nslookup m.youtube.com
nslookup -type=AAAA www.youtube.com
nslookup -type=AAAA m.youtube.com
ipset -L outwall4
ipset -L outwall6

http://linux-ip.net/html/index.html

添加路由表,由于fwmark好像没有任何结果所以用其它方式添加路由
#iptables -t mangle -A PREROUTING -m set –match-set outwall dst -j MARK –set-mark 3
#iptables -t mangle -A OUTPUT -m set –match-set outwall dst -j MARK –set-mark 3
#ip rule add fwmark 3 table outwall prio 1

#添加方法1,直接添加到main表,可以随着tap_soft1结口消失而消失
ipset -L outwall4 >/tmp/outwall4.tmp
ipset -L outwall6 >/tmp/outwall6.tmp
#for i in `sed -n “7,$ p” /tmp/outwall4.tmp`;do echo $i;route add -net $i netmask 255.255.255.255 gw 192.168.60.100;done
#for i in `sed -n “7,$ p” /tmp/outwall4.tmp`;do echo $i;route del -net $i netmask 255.255.255.255 gw 192.168.60.100;done
route add -host 192.168.60.100 gw 192.168.60.200
for i in `sed -n “7,$ p” /tmp/outwall4.tmp`;do route add -host $i gw 192.168.60.100;done
#for i in `sed -n “7,$ p” /tmp/outwall6.tmp`;do ip -6 route del $i via fe80::4ac:20ff:fe9c:1000 dev tap_soft1;done
for i in `sed -n “7,$ p” /tmp/outwall6.tmp`;do ip -6 route add $i via fe80::4ac:20ff:fe9c:1000 dev tap_soft1;done
ip route flush cache
ip -6 route flush cache

添加方法2,这是因为fwmark无效,学习ip route table跟ip rule关系而写的,有利有蔽并不会随着tap_soft1结果消失而消失会增加无谓的容错处理
echo “200 outwall” >> /etc/iproute2/rt_tables

#清空路由表outwall
ip route flush table outwall
ip -6 route flush table outwall
#添加ipv4路由
ip route add 192.168.60.100 dev tap_soft1 table outwall
ipset -L outwall4 >/tmp/outwall4.tmp
for i in `sed -n “7,$ p” /tmp/outwall4.tmp`;do echo $i;ip route add $i via 192.168.60.100 dev tap_soft1 table outwall;done
#添加ipv6路由
ip -6 route add fe80::4ac:20ff:fe9c:1000 dev tap_soft1 table outwall
ipset -L outwall6 >/tmp/outwall6.tmp
for i in `sed -n “7,$ p” /tmp/outwall6.tmp`;do echo $i;ip -6 route add $i via fe80::4ac:20ff:fe9c:1000 dev tap_soft1 table outwall;done
#显示路由
ip route show table outwall
ip -6 route show table outwall
#生成ipv4寻址规则
ip rule del table outwall
ip rule add from all table outwall pref 1
#ip rule add from 0/0 table outwall pref 1
#生成ipv6寻址规则
ip -6 rule del table outwall
ip -6 rule add from all table outwall pref 1
#清空缓存立刻生效
ip route list cache
ip -6 route list cache
ip route flush cache
ip -6 route flush cache
#验证ipset -L outwall里的一个ip看是否获得正确的查询结果
ip -s route get 216.58.197.110
ip -s -6 route get 2404:6800:4005:801::200e

216.58.197.110 via 192.168.60.100 dev tap_soft1 src 192.168.60.200
cache users 1
* 2015年12月13日星期天
– ipset的一个小问题
http://blog.berry10086.com/Tech/Openwrt/ipset-and-dnsmasq/
ipset=/yahoo.com/google.com/vpn,search
ipset也是可以指定多个ipset结果分别对应ipv4 ipv6

– 根据上面的结果,这样就不需要用iptables阻止AAAA查询,只要将两个set的结果分别进行ipv4 ipv6路由就可以了

– 按照这种方式实现的分流,由于在服务器上tap_soft tap_soft1都是使用TAP接口实现的独立接口,在使用代理软件时没问题,但是用vpn拔号到服务器会导致tap_soft无法访问分流到tap_soft1的路由信息。网上的搜索信息显示可能采用真实网卡有效。。。
– 目前一个可行的办法是变动网络为虚拟L3路由方式,这种方式可以保证使用softether建立的vpn客户端没问题,其它的第三方仍然有像上面的因为独立接口互相不可访问的问题。
– 下面两条设置客户端路由信息,在服务器端 3层交换机设置,需要设置路由表 216.58.0.0/255.255.0.0 192.168.40.253
route add -net 192.168.40.0 netmask 255.255.255.0 gw 192.168.30.254
route add -net 216.58.0.0/16 gw 192.168.30.254
– 按照测试结果可能将ipset的每个ip独立写入好点像route add -net 173.194.126.167 netmask 255.255.255.255 gw 192.168.30.254。服务器端的3层路由表仍然可以使用子网掩码方式。
– 这种方式至少解决了softether vpn客户端也能正常访问分流的网络,但是由于 3层交换机并不提供针对ipv6的路由信息设置,只能再次屏蔽AAAA查询
– 可能的其它解决方法,由于没条件没法测试
http://forum.softether.org/viewtopic.php?t=4542&p=11204

on windows, you could “brigde” directly.
on linux, you have no other change than a “double” bridge if you want the same subnet.
SoftEther-Hub <-Bridge-> tap_soft <-Bridge-> eth0.
I would try it first “step by step”.

get a “life insurance”, like
– shutdown -r 30
(reboot in 30 minutes….just in cause of destroy all connectivity incl. ssh)

“Delete” bridge between sofether and eth0
use softether gui (from a remote windows) or vpncmd to create a bridge to a tap-device (named “tap_soft”)
(take a look in this “nat” tutorial: http://blog.lincoln.hk/blog/2013/05/17/softether-on-vps-using-local-bridge/)

Then install bridgeutils:
– sudo apt-get install bridge-utils

create a “new” empty bridge:
– sudo brctl addbr br0

add eth0 to bridge
– sudo brctl addif br0 eth0

check vpnserver is running an tap_soft exists
– ip a

add tap_soft to bridge
– sudo brctl addif br0 tap_soft

let client connect
– should get dhcp-lease from local dhcp server

If working….read more about ubuntu networkconfig and bridges to start in automaticly. Many ways are possible.

Build a LAN-to-LAN VPN (Using L3 IP Routing)
https://www.softether.org/4-docs/1-manual/A._Examples_of_Building_VPN_Networks/10.6_Build_a_LAN-to-LAN_VPN_(Using_L3_IP_Routing)
* 2015年12月12日星期六
– 生成文档
其它信息

route add -net 192.168.40.0 netmask 255.255.255.0 gw 192.168.30.254
route add -net 216.58.0.0/16 gw 192.168.30.254

route add -net 173.194.0.0/16 gw 192.168.30.254
route add -net 74.125.0.0/16 gw 192.168.30.254

route del -net 173.194.0.0/16 gw 192.168.30.254
route del -net 74.125.0.0/16 gw 192.168.30.254

youtube.com ipset 结果
173.194.22.235
74.125.102.42
74.125.215.213
74.125.215.112
173.194.126.174
209.85.228.180
173.194.26.202
216.58.197.110
74.125.106.136
173.194.126.164
173.194.26.242
216.58.221.78
216.58.220.238
74.125.96.74
74.125.215.49
173.194.126.166
173.194.126.168
173.194.26.116
173.194.126.165
74.125.215.85
173.194.26.230
173.194.26.246
74.125.215.209
216.58.221.46
74.125.215.84
173.194.126.163
173.194.126.161
173.194.126.162
173.194.22.231
173.194.22.248
216.58.221.238
216.58.221.14
173.194.26.74
173.194.126.169
173.194.126.160
173.194.26.234
173.194.126.167

About: dato


发表评论

邮箱地址不会被公开。 必填项已用*标注