In one of the previous organizations I worked, all of our ip addresses were in public IP range. So, is there any advantage of having public ip addresses for private network?
Advantages of public IP addresses:
- Your routers don't need to handle NAT (Network Address Translation).
- Your applications don't need to deal with the protocol issues that arise from NAT.
- Any device can provide services to the internet without configuring port forwarding rules (subject to any firewalls in place).
Disadvantages of public IP addresses:
- You don't get the built-in security of a private address -- that is, if devices don't have a public address, they can't be accessed from the internet (without specific port forwarding rules or address mappings).
- IPv4 addresses are a limited and increasingly expensive resource.
To expand a bit on Tom Shaw's answer. The end-to-end principle is a fundamental design paradigm of IP networking. The idea is that the "intelligence" in connectivity is aggregated at the end-points of a connection an the all the stuff, the switches, routers, etc. in between are "dumb" in an attempt to limit the amount of things that can break. The IP protocol and its stateless nature is an example of this. The old MaBell telephone infrastructure is example of the opposite approach. The end-points are "dumb" and the infrastructure has the "intelligence".
NAT utterly breaks this principle by creating and holding state, translating IPs and doing a number of other things. Some application protocols will handle this gracefully, others will not (for example: FTP, SIP/RTP and some Peer-to-Peer protocols). NAT also adds another layer of complexity to building and managing your edge devices.
There's nothing intrinsically wrong about using public IP addresses for a private network (I have worked with few state governmental agencies that do this), provided they are actually allocated and assigned to you or your organization.
No. And in fact it can be a problem if you want to access public resources that have the same address as a machine on your private network.
Now if the machines truly were connected directly to the Internet via a public address then protocols that normally wouldn't work well over NAT would work properly.
If you and one or your vendors (for example), use the same internal IP scheme, then creating site-to-site ipsec vpns can be tricky, especially when using vpn equipment made by different vendors. One way around this is to use a public ip address (that you own) internally to avoid these types of conflicts.