海运的博客

Iptables实现公网IP DNAT/SNAT

发布时间:June 13, 2013 // 分类:Iptables // No Comments

Iptables实现NAT是最基本的功能,大部分家用路由都是基于其SNAT方式上网,使用Iptables实现外网DNAT也很简单,不过经常会出现不能正常NAT的现象。
以下命令将客户端访问1.1.1.1的HTTP数据DNAT到2.2.2.2,很多人往往只做这一步,然后测试不能正常连接。

iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to 2.2.2.2:80

想像一下此时客户端访问1.1.1.1的数据流程:

客户端访问1.1.1.1
1.1.1.1根据Iptables DNA将数据包发往2.2.2.2,此时源IP为客户端IP
2.2.2.2处理后根据源IP直接向客户端返回数据,要知道此时客户端是直接和1.1.1.1连接的
然后呢,客户端不知所云,不能正常连接

最后还要添加一条SNAT规则,将发到2.2.2.2的数据包SNAT,1.1.1.1充当代理服务器的角色。

iptables -t nat -A POSTROUTING -d 2.2.2.2 -j SNAT --to-source 1.1.1.1

别忘记开启内核转发功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

ROS添加HE IPV6 Tunnel

发布时间:June 12, 2013 // 分类:ROS // No Comments

和HE服务器建立IPV6 Tunnel连接:

/interface 6to4 add name=he-ipv6 remote-address=216.218.221.6 local-address=111.111.11.1 disabled=no 

ROS添加HE分配的IPV6地址:

/ipv6 address add address=2001:470:18:5da::2/64 advertise=yes disabled=no eui-64=no interface=he-ipv6 

ROS添加默认IPV6路由:

/ipv6 route add disabled=no dst-address=::/0 gateway=he-ipv6

测试IPV6:

ping 2404:6800:4008:c01::65                                                                                                                       
2404:6800:4008:c01::65                     56  58 396ms echo reply

通过SSH建立以太网隧道(Ethernet Tunnel)

发布时间:June 11, 2013 // 分类:Linux服务 // No Comments

安装tunctl用于新建TAP/TUN设备,TAP为以太网设备,TUN为网络层设备。

yum install tunctl
#debian下为uml-utilities

Client配置:

tunctl -t tap1
ifconfig tap4 192.168.1.1 netmask 255.255.255.0 up

Server配置:

tunctl -t tap2
ifconfig tap2 192.168.1.2 netmask 255.255.255.0 up
echo "PermitTunnel yes" >> /etc/ssh/sshd_config

Client发起SSH Tunnel连接:

ssh -N -f -o Tunnel=ethernet -w 1:2 remote-host
#-w local tap id:remote tap id

此内容被密码保护

发布时间:June 10, 2013 // 分类:Linux服务 // No Comments

请输入密码访问

XenServer通过ionice限制VM虚拟机硬盘IO

发布时间:June 8, 2013 // 分类:虚拟化 // 1 Comment

之前有文章介绍Xen下通过ionice限制VM虚拟机硬盘IO优先级XenServer获取虚拟机进程和Xen不同,可通过以下方法查找虚拟机IO进程,并使用ionice限制。
首先获取VM虚拟机的UUID:

xe vm-list name-label=<vm-name> --minimal

然后再获取VM的DOM ID:

list_domains |awk '/<vm-uuid>/ {print $1}'

通过DOM ID获取VM相对应的进程ID:

ps aux|grep xb.*<dom-id>.xvd
root     10995  0.0  0.0      0     0 ?        S    10:08   0:01 [xb.00003.xvda]
root     10996  0.0  0.0      0     0 ?        S    10:08   0:00 [xb.00003.xvdd]

使用ionice调整相应进程的IO优先级策略即可。

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
归档