笔记
1.用docker虚拟网络 ping host主机。
(1).主机ip为192.168.101.22
(2).能ping通。
2.上周遗留的ping www.baidu.com的问题。
(1).按照教程修改/etc/resolv.conf文件,加两行
nameserver 8.8.8.8
nameserver 114.114.114.114
(2).修改完之后就可以ping通百度了。是DNS解析问题。
3.学习使用tcpdump抓包。阅读文章《linux下如何使用 tcpdump 进行抓包详细教程》,自己尝试用tcmpdump抓包,遇到了很多问题。
4.开放容器端口。
(1)配置DNAT 规则。这一步在make create-nat里已经配置好了。
(2)在 net1 环境中启动一个 Server
(3)外部选一个ip,telnet连一下试试。这一步没做,因为不知道要telnet什么ip。。。。(在Try and failure里详细写)
Try and failure
1)在ping www.baidu.com这个问题的时候,尝试用gedit去修改/etc/resolv.conf文件,结果安装完command后又自动安装可视化界面(gedit是可视化的编辑器)。
已解决:直接用vim修改了,之后就可以ping通了。
2)学习使用tcpdump抓包的时候,等了很久都没有出现抓包出来的数据,以为是抓不到包,非常痛苦。
已解决:经过非常漫长的等待,终于出现了数据,原来是因为抓包得很慢?
3)(未解决)学习使用tcpdump抓包的时候,想抓包目的 IP为我手机的数据查看,用到的命令如下。经过漫长的等待,并没有抓包到任何东西。
sudo tcpdump dst 10.142.248.98
解决中:命令写错了,没有指定网关,应为
sudo tcmdumo -i enp0s9 dst 10.142.248.98
经过漫长的等待,还是没有抓包到东西。
4)(未解决 )按照《手工模拟实现 Docker 容器网络!》中指导的,抓包eth0,可以查看到源 IP 已经被替换成可和外网通信的 eth0 上的 IP 了。
但是我抓包到的却是下图的数据,并没有替换。所以在接下来的"外部选一个ip,比如 10.143.., telnet 连一下 10.162.. 8088 试试,通了!",不知道该连哪个ip地址。。。。。
Q&A
1)了解SNAT的原理吗?
- 答:SNAT在路由器后(PSOTROUTING)将内网的ip地址修改为外网网卡的ip地址,应用场景为共享内部主机上网,局域网访问互联网。目标地址不变,重新改写源地址,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机。源代码中用到的为
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -o br0 -j MASQUERADE
iptables -t nat -A PREROUTING ! -i br0 -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.0.2:80
其中192.168.0.0/24为内部网段,这里的MASQUERADE为地址伪装,是snat中的一种特例,可以实现自动化的snat。
2)10.119.17.178 是谁的IP,host 又能够ping 通吗?
- 答:是我手机的ip,当时拿来做测试的。host可以ping通。本地宿主机的ip地址是192.168.101.22,可以ping通.
3)关于ping www.baidu.com报错的问题
- 答:确认了是域名解析错误的问题,用vim修改了/etc/resolv.conf文件之后,可以ping通了。
4)能说说你在什么项目中用到了定时器吗?
- 答:之前有用unity做过一个卡牌游戏,里面用到了倒计时定时器,但是忘记有没有用过hook了。