-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Moving NAT, ip_forward, tun IP ot *.conf #51
Comments
默认不删除是个好办法,但这样每次重启都会增加一条 iptables 重复的规则,有什么好的方式处理么? |
关闭NAT, 说的是下面三条么? iptables -t nat -D POSTROUTING -o $gw_intf -j MASQUERADE
iptables -D FORWARD -i $gw_intf -o $intf -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -D FORWARD -i $intf -o $gw_intf -j ACCEPT 应该是不执行第一条。 防止重复只能在添加前判断一下了。 if !(iptables-save -t nat | grep -q "^-A POSTROUTING -o $gw_intf -j MASQUERADE"); then
iptables -t nat -A POSTROUTING -o $gw_intf -j MASQUERADE
fi 如果是这样的话,还是自己修改脚本就能解决的啊。 至于隧道IP 的修改是在哪里完成的问题,如果内置到 shadowvpn 也是合理的,不过直接使用命令的话,简单是一个优势。 |
@lsylsy2 我把这个特性(ifconfig部分)加到我自己的分支上了~ |
集成脚本的功能的话就丧失了多 IP、多出口分流的灵活度,而这是公司网络环境使用必备的。 |
@clowwindy 恩,你说的偏高级特性。 一个开关选项的就能解决这问题。 |
用户想解决的无非就是误删 iptables NAT 规则、iptables 转发规则和路由器自带的几个 table 顺序有要求等各种环境兼容问题,用 shell 这样灵活的语言都做不好,用 C 就更做不好了。 如果只是把 IP 移到配置文件里,或者加一些开关选项,现在就可以移,脚本里可以读所有配置变量,把脚本里的 IP 挪到配置文件里 在 OpenWRT 上我觉得最好还是应该把 interface 和路由表、启动和停用时的 hook 的配置都交给 UCI 来做,VPN 只提供 interface。事实上,pppoe 断掉重连之后 ShadowVPN 是不需要重启的,只需要重新执行脚本配置 ip 和路由,这可以在 OpenWRT 提供的 hotplug 里做。如果是用反过来的 foreign routes,ip 和路由都不用修改。 |
在OpenWRT中 我目前是手动修改 /etc/config/network 和 /etc/config/firewall 额外追加一个 /etc/config/shadowvpn , 比较繁琐,但是一次性操作。 通用化
目前还没特别好的路由相关处理策略。 其他平台的打包方式我了解不多。 说直接一点,减少shell 依赖,对普通用户屏蔽这些细节。 |
既然另外开了一个,那这个就关了。不然要盯两个 issue,容易各说各的。 |
我又看了一下 server_down.sh,里面的 iptables -D 是带 tun 名称的,不是全局的,所以理论上不会对其它 VPN 软件产生影响。所以你需要排查一下别的原因。 |
#iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE |
我看错了,MASQUERADE 是没有的。能否通过 comment 来和其它 rule 区分呢? |
这点不太清楚;另外目前我的服务器上,是同时存在着多条MASQUERADE的;我马上回复到另一个issue。 |
的确是因为 down script 里的 iptables -t nat -A POSTROUTING -o $gw_intf -m comment --comment "$gw_intf (turn_on_nat)" -j MASQUERADE
iptables -t nat -D POSTROUTING -o $gw_intf -m comment --comment "$gw_intf (turn_on_nat)" -j MASQUERADE |
关于隧道IP,在shell中修改一是复杂,而是难以扩展;
关于NAT,一个VPN应当注重于建立隧道,而不是把各项系统设置都一键安装成一个VPN代理。
具体到我个人的情况,我的服务器上同时运行了shadowvpn和openvpn、l2tp等其他VPN服务器;
当/etc/init.d/shadowvpn stop时,所有VPN用户都会崩溃,经过检查是server_stop中自动关闭了iptable的NAT功能导致。
修改sh脚本当然是处理方法,但是这和修改源代码已经没有太大的区别;提供一个开关设置、或者默认不修改iptables、而是在教程中提供手动设置的方法可能都是更好的选择。
注:常见的pptp/l2tp openvpn ipsec均为用户自行设置NAT,在不设置NAT的情况下VPN就是一个内网隧道,同样有使用场景;对于需要安装脚本来自动维护iptables的初级用户来说,“停止VPN时自动关闭NAT功能”这样一个安全设置也并没有太大的需求。
The text was updated successfully, but these errors were encountered: