NatCmd命令使用

https://book.2cto.com/201405/43238.html

NatCmd仅支持“enable”和“disable”两个命令选项。不过和上一节介绍的不同,Android中的NAT并不是只利用iptables的nat表来做转换,而是借助ip route命令和iptables的filter表在源和目标网络设备及指定IP地址之间进行地址转换。以“enable”选项为例,其使用方式如下。
ndc nat enable lo wlan0 1 202.106.25.35/14

其中:

lo为本地回环设备、代表输入设备。

wlan0为无线NIC,代表输出设备。

1代表后面的地址组合只有一个。

202.106.25.35/14指明IP地址和子网掩码。

以上面的命令为例,NatCmd执行它所涉及的iptables命令的调用序列如下所示。
iptables -A natctrl_FORWARD -i eth0 -o lo -m state --state ESTABLISHED,RELATED -j RETURN
iptables -A natctrl_FORWARD -i lo -o eth0 -m state --state INVALID -j DROP
iptables -A natctrl_FORWARD -i lo -o eth0 -j RETURN
iptables -D natctrl_FORWARD -j DROP
iptables -A natctrl_FORWARD -j DROP
iptables -t nat -A natctrl_nat_POSTROUTING -o eth0 -j MASQUERADE
#MASQUERADE能自动读取eth0现在的IP地址然后做SNAT
#这样就避免了每次eth0地址发生改变时都需更新iptables的烦恼

注意 上边的命令中并没有利用传递的IP地址,这是因为这些地址和ip命令的多路由策略管理有关,只有使用了多路由策略管理,这些IP地址才能被ip命令用上。由于代码中没有任何说明,所以笔者也很难理解这部分内容。如果有知晓的读者,还请和大家一起分享相关知识。

根据上面的iptables调用命令,读者也能猜测出enableNat的目的是修改来自源设备的数据包,使它看起来是目标设备发出的数据包。

图2-23所示为利用ndc在Galaxy Note 2测试nat命令的结果。

 

图2-23所示为利用ndc nat enable rmnet0 wlan0 0添加nat规则后,再通过iptables-S查看natctrl_FORWARD链的具体规则时得到的结果。

注意 其中TCPMSS这条规则应该是三星公司自己添加的,不过令人匪夷所思的是该命令竟然打出了“FIX ME!”这样的输出。看来,网络管理的确是一个很有技术含量的活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值